DevGang
[SE-03] 소프트웨어 생명 주기 본문
1. 소프트웨어 생명 주기(Software Life Cycle) 개념
- 소프트웨어 생명 주기는 소프트웨어 개발 방법론의 바탕이 되는 것으로 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것
- 소프트웨어 생명 주기는 소프트웨어 개발 단계와 각 단계별 주요 활동, 활동의 결과에 대한 산출물로 표현하며, 소프트웨어 수명 주기라고도 함
- 소프트웨어 생명주기의 역할
- 프로젝트 비용 산정과 개발 계획을 수립할 수 있는 기본 골격이 됨
- 용어 및 기술의 표준화를 가능하게 함
- 문서화가 충실한 프로젝트 관리를 가능하게 함
2. 일반적인 소프트웨어 생명 주기
- 정의 단계
- ‘무엇(What)'을 처리하는 소프트웨어를 개발할 것인지 정의하는 단계로, 관리자와 사용자가 가장 많이 참여하는 단계
- 타당성 검토 단계, 개발 계획 단계, 요구사항 분석 단계로 나누어짐
- 개발 단계
- '어떻게(How)'에 초점을 두고 실제적으로 소프트웨어를 개발하는 단계
- 설계 단계, 구현 단계, 테스트 단계로 나누어짐
- 유지보수 단계
- 소프트웨어를 직접 운용하며, ‘변경(Change)'에 초점을 두고 여러 환경 변화에 따라 소프트웨어를 적응 및 유지시키는 단계
- 소프트웨어 생명 주기 단계 중에서 시간과 비용이 가장 많이 요구되는 단계
3. 소프트웨어 생명 주기 모형의 종류 - 폭포수 모형(Waterfall Model)
- 폭포수 모형
- 소프트웨어 개발 과정의 앞 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형
- 제품의 일부가 될 매뉴얼을 작성해야 함
- 각 단계가 끝난 후 결과물이 명확히 나와야 함
- 폭포수 모형은 소프트웨어 공학에서 가장 오래되고 가장 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형으로, 고전적 생명 주기 모형이라고도 함
- 폭포수 모형(Waterfall Model) 개발 순서
- 타당성 검토 > 계획 > 요구 분석 > 설계 > 구현 > 시험 > 유지보수
- 폭포수 모형의 장점
- 모형의 적용 경험과 성공 사례가 많음
- 단계별 정의가 분명하고, 전체 공조의 이해가 용이
- 단계별 산출물이 정확하여 개발 공정의 기준점을 잘 제시
- 폭포수 모형의 단점
- 개발 과정 중에 발생하는 새로운 요구나 경험을 설계에 반영하기 어려움
- 처음부터 사용자들이 모든 요구사항들을 명확하게 제시해야 함
- 단계별로 오류 없이 다음 단계로 진행해야 하는데 현실적으로 오류 없이 다음 단계로 진행하기는 어려움
4. 소프트웨어 생명 주기 모형의 종류 - 프로토타입 모형 (Prototype Model)
- 프로토타입 모형
- 시스템의 일부 혹은 시스템의 모형을 만드는 과정으로서, 요구된 소프트웨어의 일부를 구현하여, 추후 구현 단계서 사용될 골격 코드가 되는 모형
- 실제 상황이 나오기 전에 가상으로 시뮬레이션을 통해 최종 결과물에 대한 예측을 할 수 있는 소프트웨어 수명 주기 모형
- 최종 결과물이 만들어지기 전에 의뢰자가 최종 결과물의 일부 또는 모형을 볼 수 있음
- 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공
- 프로토타입은 구현 단계의 구현 골격이 됨
- 구축하고자 하는 시스템의 요구사항이 불명확한 경우 가장 적절하게 적용될 수 있음
- 프로토타이핑(원형) 모형의 개발 작업 순서
- 요구 수집 ⇨ 빠른 설계 ⇨ 프로토타입 구축 ⇨ 고객 평가 ⇨ 프로토타입 조정 ⇨ 구현
- 프로토타입 모형의 장점
- 사용자 요구사항의 정확한 파악 및 충실한 반영
- 요구사항의 변경이 용이
- 정보 문제의 본질에 대한 불확실성과 그 정보 문제를 해결하기 위해 사용자가 제시하는 요구의 불확실성을 줄일 수 있음
- 프로토타이핑(Prototyping) 접근방법 채용에 따른 불확실성 결정요인
- 지원이 필요한 일로부터의 요구 연역(要求演繹)
- 사용자와 분석자의 지식과 경험의 수준
- 커뮤니케이션 문제가 일어날 가능성
5. 소프트웨어 생명 주기 모형의 종류 - 나선형(Spiral) 모형
- 반복적인 작업을 수행하는 점증적 생명주기 모델
- 고객과의 의사소통(Communication)을 통해 계획 수립과 위험분석, 구축, 고객 평가의 과정을 거쳐 소프트웨어를 개발
- 가장 큰 장점인 위험분석 단계에서 기술과 관리의 위험요소 들을 하나씩 제거해 나감으로써 완성도 높은 소프트웨어를 만들 수 있음
- 비용이 많이 들거나 시간이 많이 소요되는 대규모 프로젝트나 큰 시스템을 구축할 때 유리
- 점진적으로 개발 과정이 반복되므로 누락되거나 추가된 요구사항을 첨가할 수 있고, 정밀하며, 유지보수 과정이 필요 없음
- 나선형 모형의 단계와 순서(=Boehm이 제안한 나선형 모델의 태스크(Task))
- Planning ⇨ Risk Analysis ⇨ Engineering ⇨ Customer Evaluation
- 계획 수립(Planning) : 목적, 다른 방안, 제약 조건을 결정
- 위험 분석(Risk Analysis) : 다른 방안을 분석하고 위험을 식별하고 해결
- 공학적 개발(Engineering) : 개선된 한 단계 높은 수준의 제품을 개발
- 고객 평가(Customer Evaluation) : 공학적 결과를 평가
※ 소프트웨어 실패율(오류율)
- 아래의 그림은 소프트웨어에 대한 사용 시간과 실패율에 대한 관계를 나타내는데, 소프트웨어 실패율(오류율)은
소프트웨어를 변경함으로 예상치 못한 오류(실패)가 발생할 수 있다는 것을 확인할 수 있음
'정보처리 > SE' 카테고리의 다른 글
[SE-06] 프로젝트 비용 산정 (0) | 2021.02.08 |
---|---|
[SE-05] 프로젝트 계획 및 예측 (0) | 2021.02.08 |
[SE-04] 프로젝트 관리 (0) | 2021.02.08 |
[SE-02] 소프트웨어 공학 (0) | 2021.02.08 |
[SE-01] 소프트웨어 (0) | 2021.02.08 |
Comments