소프트웨어 생명주기란?
- 소프트웨어 개발을 위한 설계, 운용, 유지보수 등의 과정을 각 단계별로 나눈 것.
- 소프트웨어 생명 주기는 소프트웨어 개발 단계와 각 단계별 주요 활동, 활동 결과에 대한 산출물로 표현됨
대표적 생명 주기 모형
- 폭포수 모형
- 프로토타입 모형
- 나선형 모형
- 애자일 모형
폭포수 모형(Waterfall Model)
순차적인 개발 프로세스로, 개발 흐름이 마치 폭포수처럼 지속적으로 아래로 흐르는 것처럼 보이는 데서 이름이 붙여졌다.
폭포수 모델은 다음과 같은 단계가 순차적으로 기술되어 있다.
요구사항 기술 - 설계 - 구현 - 시험과 디버깅 - 설치(통합) - 유지보수 단계로 이루어져있다.
책에서는 순차적으로 이루어지기 때문에, 이전 단계로 돌아갈 수 없다는 것이 전제되어 각 단계를 철저하게 매듭짓고 다음 단계로 진행하는 방법론이라고 기술한다.
- 가장 오래되고 폭넓게 사용된 전통적 소프트웨어 생명주기 모델이다.
- 모델을 적용한 경험과 성공 사례가 많다.
- 각 단계가 끝난 후, 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 한다.
프로토타입 모형(Prototype Model, 원형 모형)
실제 개발될 소프트웨어에 대한 견본품(Prototype)을 만들어 최종 결과물을 예측하는 모델
나선형 모형(Sprial Model, 점진적 모형)
- 나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모델
- 보헴이 제안함
- 폭포수 모형, 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모델
- 누락되거나 추가된 요구사항 첨가 가능
- 유지보수 과정이 필요 없다
4가지 주요 활동
- 계획 수립
- 위험 분석
- 개발 및 검증
- 고객 평가
애자일 모형(Agile Model)
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하며 개발하는 모형
특정 개발 방법론이 아닌, 고객과의 소통에 초점을 맞춰 빠르고 낭비없게 만들기 위한 방법론을 통칭함.
- 폭포수 모형과 대조적
- 기업 활동 전반에 걸쳐 사용됨
대표적 개발 모형
- 스크럼(Scrum)
- XP(eXtreme Programming)
- 칸반(Kanban)
- Lean
- 기능 중심 개발(FDD : Feature Driven Development)
애자일 핵심 가치
- 프로세스와 도구보다 개인과 상호작용에 더 가치를 둔다
- 방대한 문서보다 실행되는 SW에 가치를 둔다
- 계약 협상보다 고객 협업에 가치를 둔다
- 계획을 따르기 보다 변화에 반응하는 것에 가치를 둔다