DevGang

[SE-03] 소프트웨어 생명 주기 본문

정보처리/SE

[SE-03] 소프트웨어 생명 주기

별천랑 2021. 2. 8. 16:39

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