1. 소프트웨어 생명 주기

소프트웨어 개발 방법론의 바탕이 되는 것으로, 소프트웨어를 개발하기 위해 정의하고 운용, 유지보수 등의 과정을 각 단계별로 나눈 것

종류

  • 폭포수 모형
  • 프로토타입 모형
  • 나선형 모형
  • 애자일 모형

이 외에 하이브리드형 모델, 반복형 모델 같은 것도 있습니다.

1. 폭포수 모델(Waterfall Model)

폭포에서 한번 떨어진 물은 거슬러 올라갈 수 없듯이 소프트웨어 개발도 이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후에 다음 단계를 진행하는 모형

graph LR
  타당성검토 --> 계획 --> 요구분석 --> 설계 --> 구현 --> 시험 --> 유지보수
타당성검토
계획
요구분석
설계
구현
시험
유지보수

특징

  • 전통적인 소프트웨어 생명 주기 모형
  • 선형 순차적 모형
  • 성공 사례가 많음
  • 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함

2. 프로토타입 모델(Prototype Model)

사용자의 요구사항을 정확하게 파악하기 위해 실제 개발될 소프트웨어에 대한 견본품(Prototype)을 만들어 최종 결과물을 예측하는 모형

graph LR
  요구수집 --> 빠른설계 --> 프로토타입구축 --> 고객평가 --> 프로토타입조정 --> 구현 --> 요구수집
요구수집
빠른설계
프로토타입구축
고객평가
프로토타입조정
구현

특징

  • 의뢰자나 개발자 모두에게 공통의 참조 모델
  • 추후 구현 단계에서 사용될 골격 코드가 된다.
  • 새로운 요구사항이 도출될 때마다 이를 반영
  • 단기간 제작을 목적으로 하다 보니 비효율적인 언어나 알고리즘이 사용될 수 있음

3. 나선형 모델(Spiral Model)

보헴(Boehm) 이 제안한 것으로, 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형

graph LR
	계획수립 --> 위험분석 --> 개발및검증 --> 고객평가 --> 계획수립
계획수립
위험분석
개발및검증
고객평가

특징

  • 나선을 따라 돌듯이 여러 번의 소프트웨어 개발 과정을 거쳐 최종 소프트웨어를 개발
  • 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것을 목적으로 함
  • 핵심 기술에 문제가 있거나 사용자의 요구사항이 이해하기 어려운 경우에 적합
  • 요구사항을 개발 도중에 첨가할 수 있고, 정밀하며, 유지보수 과정이 필요 없음

4. 애자일 모델(Agile Model)

‘민첩한’, ‘기민한’이라는 의미로, 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하는 모델

특징

  • 좋은 것을 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 방법론
  • 스프린트(Sprint) 라고 불리는 짧은 개발 주기를 반복
  • 주기마다 만들어지는 결과물에 대한 고객의 평가와 요구를 적극 수용
  • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합

종류

  • 스크럼(Scrum)
  • XP(eXtreme Programming)
  • 칸반(Kanban)
  • Lean
  • 크리스탈(Crystal)
  • ASD(Adaptive Software Development)
  • 기능 중심 개발(FDD: Feature Driven Development)
  • DSDM(Dynamic System Development Method)
  • DAD(Disciplined Agile Delivery)

5. 폭포수/애자일 모델 비교

구분폭포수 모델애자일 모델
새로운 요구사항 반영어려움지속적으로 반영
고객과의 의사소통적음지속적임
테스트마지막에 모든 기능을 테스트반복되는 일정 주기가 끝날 때마다 테스트
개발 중심계획, 문서(매뉴얼)고객