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. 폭포수/애자일 모델 비교

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다