소프트웨어 개발 생명주기

From CS Wiki

소프트웨어 개발 생명주기(SDLC)는 소프트웨어의 생성에서 소멸까지의 과정을 단계별로 나눈 것 으로, 각 단계별 주요활동과 산출물을 통해 프로젝트의 진행방향을 명확하게 파악하고, 관리를 용이하게 한다.

일반적 생명 주기

  • 정의 단계
    • 타당성 검토 단계: 개발할 소프트웨어가 법적, 경제적, 기술적으로 구축이 가능하고, 구축할 가치가 있는지 검토
    • 개발 계획 단계: 개발에 필요한 자원을 산출하고 장소, 인력, 기간 등 대략적인 계획을 잡는다.
    • 요구사항 분석 단계; RFP수준에서 제안된 요건보다 더 세부적인 요구사항을 도출한다.
  • 개발 단계
    • 설계 단계: 소프트웨어 아키텍처, 프레임워크, 인프라를 구성한다. 에러가 가장 많이 발생한다.
    • 구현 단계: 설계된 내용을 기반으로 세부 기능을 코딩한다.
    • 테스트 단계: 개발된 기능이 에러 없이 정상적으로 동작하는지 테스트한다.
  • 유지보수 단계
    • 소프트웨어를 직접 운용하며 잔존 버그 등을 찾고 추가 개선사항을 도출한다.
    • 하드웨어, 환경 변화에 따라 소프트웨어를 적응 및 유지시킨다.
    • 시간과 비용이 가장 많이 투입된다.

종류

개발수정 모델(Build-Fix Model)

  • 요구사항, 분석·설계 단계 없이 일단 개발에 들어간 후 만족할 때까지 수정작업을 수행하는 방식

폭포수 모델(Waterfall Model)

  • 소프트웨어 개발의 전 과정을 나누어 체계적이고 순차적으로 접근하는 방식
  • 각 단계의 결과가 확인되어야지만 다음 단계로 넘어간다.
  • Bohea가 제시한 고전적 생명주기 모델로 선형 순차적 모델이라고도 함
  • 가장 오래된 모델로 많은 적용 사례가 있지만 요구사항의 변경이 어렵다.
  • 순서: 타당성 검토, 계획, 요구사항 분석, 설계, 구현, 테스트, 유지보수

프로토타입 모델(Prototyping Model)

  • 점진적으로 시스템을 개발해 나가는 접근 방식
  • 프로토타입을 만들어 고객과 사용자가 함께 평가한 후 개발될 소프트웨어의 요구사항을 정제하여 보다 완전한 요구명세서를 완성하는 방식
  • 장점
    • 개발과정에서 사용자의 요구를 충분히 반영한다.
    • 최종결과물이 만들어지기 전에 의뢰자가 최종결과물의 일부 혹은 모형을 볼 수 있다.
    • 의뢰자나 개발자 모두에게 공동의 참조 모델을 제공한다.

나선형 모델(Spiral Model)

나선형 모델 자세히 보기
  • 폭포수 모형과 원형모형의 장점을 수용하고 위험분석을 추가한 점증적 개발모델
  • 프로젝트 수행시 발생하는 위험을 관리하고 최소화하기 위한 방식
  • 대규모 시스템 개발에 적합
  • 계획 수립 - 위험 분석 - 개발 및 검증 - 고객평가 순으로 반복

출처