Study/Software Engineering

폭포수 모델(Waterfall Model)의 각 단계 소개

빨간당무 2016. 3. 30. 21:31

폭포수 모델(Waterfall Model)의 각 단계의 명세를 소개해 본다. 



선형 순차적(Linear Sequential) 모델로 고전적 라이프 사이클이며, 이 모델은 분석, 설계, 코딩, 테스팅, 지원의 과정을 순차적으로 접근하는 소프트웨어 개발 과정이다. 위 그림과 같이 폭포수 모델의 각 단계는 아래와 같다. 


1. 계획(Software Concept)

 - 개발 범위

 - 개발 평가(Estimation) - 비용, 기간, 인력, 성공 가능성 등

 - 리스크 분석

 - 일정 계획

 - 관리 전략 수립


2. 요구 분석(Requirements and Analysis)

 - 요구 - 시스템이 가져야할 능력(Capability)과 조건(Condition)

 - What의 단계

 - 응용 분야(도메인)에 집중

 - 가장 중요하지만 어려운 단계

 - 요구와 분석을 나누어 진행하는 경우도 있음

 - 결과물 : 요구분석서(SRS)


3. 설계(Design)

 - How의 단계

 - 솔루션에 집중

 - 아키텍처 설계

 - 데이터베이스 설계

 - UI 설계

 - 상세 설계 - 설계 단계를 [시스템 설계]와 [상세 설계] 두 단계로 나누어 진행하는 경우도 있음

 - 결과물 : 설계서(SD)


4. 구현(Coding and Debugging)

 - Do it 의 단계

 - 코딩과 단위 테스트(Coding and Unit testing)

 - 설계 or 통합 단계와 겹쳐서 진행되기도 함

 - 일정 관리 이슈가 커짐(Last miniute change)

 - 이전 단계의 담당자들과의 커뮤니케이션에 어려움이 발생(Communication overhead)

 - 하청 관리(외주하는 경우)


5. 시험(System testing)

 - 통합과 테스트 과정(Integration Testing and System Testing)

 - 모듈의 통합(Integration Testing)

 - 통합은 주로 개발자가 담당

 - 테스트는 주로 QA 팀이 담당

 - 단계적인 테스트(단위(Unit) -> 통합 -> 시스템)

 - 목적 중심 테스트(스트레스 테스트, 성능 테스트, 알파테스트, 베타 테스트, Acceptance 테스트, Usability 테스트 등)


6. 인수/설치(Deployment & Maintenance)

 - 시스템의 타입에 따라 다른 설치 방법

 - 이전(Migration) 정책

 - 설치는 개발 프로젝트의 일부이나 이후 유지보수는 별개 프로젝트임

 - 유지보수 원인 (결함을 고침, 새 기능 추가, 성능 추가 등)


이 모델의 효율성에 대한 비판으로 이 모델이 직면하는 문제는 다음과 같다. 


1. 실제 프로젝트는 이 모델을 따르지 않는다. 선형 순차적 모델은 간접적으로만 각 단계의 반복을 허용한다 그래서 변화가 일어나면 팀 프로젝트에 혼선이 일어날 수 있다. 

2. 고객이 모든 요구사항을 말하기는 힘들다. 선형 순차적 모델은 모든 요구 사항이 정해져야 가능한 모델이다. 이러한 점이 많은 프로젝트의 초기의 불확실성을 해결하기 힘들게 만든다. 

3. 고객은 인내심을 가져야 한다. 실제로 동작하는 프로그램은 프로젝트의 마지막 단계에 가서야 얻을 수 있다. 만약 중대한 문제점이 프로그램의 검토 단계에서야 발견된다면 큰 문제를 가져온다. 


위 문제 외에도 

선형 순차적 모델은 한 프로젝트 팀은 의존적 관계에 있는 다른 팀의 업무가 끝나기 전까지 기다려야 하는 정체 상태(Blocking state)를 유발할 수 있고, 그러한 기다리는 시간이 실제 개발 시간보다 더 길 수도 있다고 주장하였다. 그리고 그러한 정체 상태는 선형 순차적 모델의 처음부터 끝까지 매우 일반적으로 벌어진다고 말하였다[Bradac, 1994.].




Ref. : 새로 쓴 소프트웨어 공학, 최은만 저, 정익사

Ref. : 소프트웨어 공학 실무적 접근 5th Edition, 우치수외 3명 공역, Pressman

.