소프트웨어 생명주기란?
소프트웨어 개발 방법론*의 바탕이 되는 것으로,
소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의
과정을 각 단계별로 나눈 것이다.
*소프트웨어 개발 방법론이란?
소프트웨어 개발과 유지보수 등에 필요한 여러 가지 작업들의
수행 방법과 이러한 작업들을 좀 더 효율적으로 수행하기 위해
필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것.
소프트웨어 생명 주기 모형
- 폭포수 모형(Waterfall Model)
폭포수 모형은
소프트웨어 개발 과정에서
이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저히 검토하고 승인 과정을 거친 후 다음 단계를 진행하는 개발 방법론이다.
- 가장 오래되고 가장 폭넓게 사용된 전통적인 생명주기 모형(=고전적 생명 주기 모형)
- 한단계가 끝나야만 넘어갈 수 있는 선형 순차적 모형
- 매뉴얼을 작성해야 한다.(매뉴얼은 제품의 일부)
- 각 단계가 끝나면 다음 단계 진행을 위한 명확한 결과물이 산출되어야 함.
- 두개 이상의 과정 병행 수행 불가.
[타당성 검토] -> [계획] -> [요구 분석] -> [설계] -> [구현(코딩)] -> [시험(검사)] -> [유지보수]
- 프로토타입 모형(Prototype Model, 원형 모형)
프로토타입 모형은
사용자의 요구사항을 정확히 파악하기 위해
실제 개발될 소프트웨어에 대한 견본(시제) 품(=Prototype)을 만들어 최종 결과물을 예측하는 모형이다.
- 시제품은 사용자와 시스템 사이의 인터페이스*에 중점을 두어 개발.
- 추후 구현 단계에서 사용될 골격 코드가 된다.
- 개발이 완료된 시점에서 오류가 발견되는 폭포수 모형의 단점을 보완하기 위한 모형이다.

- 나선형 모형(Spiral Model, 점진적 모형)
나선형 모형은
보헴(Boehm)이 제안,
폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형.
- 나선을 돌듯이 여러 번의 개발 과정을 거침,
점진적으로 완벽한 최종 소프트웨어를 개발 하기에 점진적 모형이라고도 한다.
- 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것이 목적.
- 누락되거나 추가된 요구사항을 첨가 가능.
- 또, 정밀하고 유지보수 과정 필요 없다.

- 애자일 모형(Agile Model)
애자일 모형은
"민첩한", "기민한"이라는 의미를 가짐
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하며 개발과정을 진행
- 어느 특정 개발 방법론이 아니라,
좋은 것을 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 방법론을 통칭
- 스프린트(Sprint), 이터레이션(Iteration)이라고 불리는 짧은 개발 주기를 반복,
반복되는 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용.
- 고객이 요구사항에 우선순위를 부여하여 개발 작업 진행.
*** 애자일 모형 기반 소프트웨어 개발 모형
- 스크럽(Scrum)
- XP(eXtreme Programming)
- 칸반(Kanban),Lean,크리스탈(Crystal)
- ASD(Adaptive Software Development)
- FDD(Feature Driven Development)
- DSDM(Dynamic System Development Method)
- DAD(Disciplined Agile Delivery) 등등

**폭포수 모형/애자일 모형 비교!
폭포수 모형 | 애자일 모형 | |
새로운 요구사항 반영 | 어려움 | 지속적으로 반영 |
고객과의 의사소통 | 소통 적음 | 지속적인 소통 |
테스트 | 마지막에 한번에 테스트 | 반복되는 일정 주기 끝 마다 테스트 |
개발 중심 | 계획 ,문서(매뉴얼) | 고객(소통)중심 |