chlqhrud0208
나 혼자 코딩
chlqhrud0208
전체 방문자
오늘
어제
  • 분류 전체보기 (23)
    • Git & Github (2)
    • 그로스 해킹 (2)
    • 소프트웨어공학 (19)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 그로스 해킹

공지사항

인기 글

태그

  • 그로스 해킹
  • 그로스해킹
  • GitHub
  • Git

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
chlqhrud0208

나 혼자 코딩

소프트웨어 공학과 개발 프로세스 (Part 1)
소프트웨어공학

소프트웨어 공학과 개발 프로세스 (Part 1)

2024. 10. 19. 16:20

소프트웨어의 정의

- soft(부드러운) + ware(제품)

- 특정 작업을 수행하게하는 프로그램의 집합으로 그 수행에 필요한 절차, 규칙, 문서 등을 총칭

 

소프트웨어의 특징

- 비제조성 (제조성 : 로봇과 같은 기계가 만들어 내는 것)

- 소모가 되지 않는 소프트웨어

- 사용자의 요구에 따라 새롭게 생산

- 변경성 (Changeability)

- 복제 가능 (Duplicability)

vs 하드웨어

- 하드웨어는 제조하고 소프트웨어는 개발함

    제조 : 정해진 틀에 맞춰서 일정하게 제품을 생산하는 것 (결과물의 차이는 크지 않음)

    개발 : 개인 능력에 따른 결과물의 차이가 큼

 

- 소모가 아닌 품질저하

   하드웨어 부품 : 먼지, 열, 마모, 진동 등으로 인해 고장이 날 수 있음

                           실패곡선(욕조 곡선. Bathtub Curve)

                            초기 실패율이 높지만, 오류가 해결하면 오랫동안 지속됨

                            오래 사용하면 열, 환경의 문제로 인해 실패율이 치솟음

   소프트웨어 : 하드웨어와 달리 닳지않음

                      실패곡선 :

                       이상) 오류를 해결한 후 문제없이 사용 (변경 사항도 없고, 환경 변화도 없을 때)

                       실제) 사용자의 요구가 계속 발생함 -> 변경으로 인한 부작용으로 실패율이 급격히 증가할 수 있음

하드웨어 실패 곡선 / 소프트웨어 실패 곡선

소프트웨어 개발의 어려움

- 수준에 따른 구분

  • 반려동물 집 짓기
    계획을 할 필요가 없음
    간단하게 지을 수 있음 (빠른 시간)
  • 단독 주택 짓기
    여러 사람이 필요
    계획, 설계를 진행
    전문적 도구들이 필요
  • 대형 빌딩 짓기
    과정이 복잡
    긴 개발 기간이 필요
    참여 인력이 많을 뿐만 아니라 여러 전문가들도 필요함 (의견 충돌의 가능성)
    -> 대규모 소프트웨어 개발의 어려움과 유사

소프트웨어 공학의 등장배경

- 소프트웨어의 위기

   소프트웨어의 개발 속도가 하드웨어의 개발 속도를 따라가지 못하여 사용자의 요구사항을 감당할 수 없는 문제 발생

   체계적이지 못한 상황 -> 공학의 개념을 접목 시켜 체계화하자! 

소프트웨어 개발 생명주기 (Software Development Life Cycle)

계획 -> 분석(요구 분석) -> 설계 -> 구현 -> 테스트 -> 유지보수

계획

  • 비용 : 예산 ( 50억 )
  • 위험 분석 ( 기존 게임과의 차별성 )
  • 기간 : 출시일 ( 2025.01.01 )
  • 문제정의 : 목표 및 제약조건 ( 동시접속자 수 10만명 )

분석 (요구 분석)

- 개발할 소프트웨어의 기능, 제약조건, 목적을 사용자와 함께 명확히 정의하는 단계

설계

- 분석 단계에서 만든 다이어그램을 가지고 코딩할 수 있는 수준으로 구체화 하는 것 ( 코딩을 하는 것은 아님 )

- 사용자를 만나는 단계는 아님

구현

- 프로그래밍 언어를 사용하여 실제 코딩하는 단계 ( 설계가 잘 되어있으면 간단하게 할 수 있음 )

- 소프트웨어 종류에 따라 프로그래밍 언어를 선택하고, 프로그래밍 방법과 스타일, 순서를 결정함

테스트

- 요구사항은 다 반영되었는지, 예상한 결과와 실행 결과가 같은지, 숨어있는 오류는 없는지 테스트하여 프로그램의 완성도를 높이는 단계

유지보수

- 시스템이 배포된 후 이루어지는 모든 과정

- 모든 과정 : 성능 개선(새로운 요구사항 반영), 결함 수정(테스트 때 발견되지 않은 결함) 등,,

- 소프트웨어 개발 생명주기에서 가장 긴 기간

'소프트웨어공학' 카테고리의 다른 글

설계 (Part1)  (0) 2024.10.21
요구분석 (Part2)  (0) 2024.10.21
계획(프로젝트 계획과 관리) (part 2)  (0) 2024.10.20
계획 (프로젝트 관리와 계획) Part 1  (1) 2024.10.20
소프트웨어 공학과 개발 프로세스 (Part2)  (4) 2024.10.20
    '소프트웨어공학' 카테고리의 다른 글
    • 요구분석 (Part2)
    • 계획(프로젝트 계획과 관리) (part 2)
    • 계획 (프로젝트 관리와 계획) Part 1
    • 소프트웨어 공학과 개발 프로세스 (Part2)
    chlqhrud0208
    chlqhrud0208

    티스토리툴바