기록

폭포수 모델 (Water fall model) 본문

[Study]/소프트웨어공학

폭포수 모델 (Water fall model)

Dannnnnn 2019. 8. 13. 11:44
반응형

폭포수 모델(waterfall model) = 선형 순차적 모델 (linear sequential model)

 

폭포수 모델의 개발 절차

폭포수 모델에서는 폭포의 물이 위에서 아래로 떨어지듯이

계획, 분석, 설계, 구현, 테스트, 유지보수의 각 단계가 하향식(top-down)으로 진행되며,

병행되거나 거슬러 반복되지 않는다.

 

이 모델에서는 요구사항분석단계가 끝나면 '요구 분석 명세서'라는 문서가 산출된다.

이 명세서를 기준으로 사용자에게 이상 유무를 확인받고 다음 단계인 설계 절차로 넘어간다.

이렇게 각 단계의 산출물에 대해 확인 절차를 거침으로써 서로 간의 책임 소재를 분명히 할 수 있다.

 

계획(planning) 단계

  • 문제를 정의한 후 프로젝트 영역을 결정
  • 작업 분할 구조도(WBS: Work Breakdown Structure)로 세부 작업 결정
  • CPM(Critical Path Method)로 작업 순서 결정
  • 간트 차트를 이용해 일정표 작성
  • 기능 점수(FP: Function Point) 등으로 프로젝트에 소요되는 비용 산정
  • 계획 단계의 최종 산출물인 '개발 계획서' 작성

요구 분석(requirement analysis) 단계

  • 기존 시스템 분석 및 인터뷰 등을 통한 사용자 요구사항 수집
  • 사용자가 요구하는 기능적 요구사항과 비기능적 요구사항 파악
  • 각 방법론에 따른 표기법을 이용해 정리된 요구사항을 표현
  • 객체지향 방법론에서는 유스케이스 다이어그램 작성
  • 요구 분석 단계의 최종 산출물인 '요구 분석 명세서' 작성

설계(design) 단계

설계 단계는 크고 전체적인 시스템 구성을 나타내는 상위설계(아키텍처 설계)와 각 모듈(컴포넌트, 자료구조, 알고리즘)의 세부 내용을 설계하는 하위 설계로 나뉜다.

 

상위설계

  • 개발하려는 소프트웨어의 전체 구조를 볼 수 있는 아키텍처 설계
  • 아키텍처의 품질 속성 결정
  • 아키텍처의 스타일 결정
  • 설계 패턴 결정

하위설계

  • 모듈 간 결합도와 모듈 내 응집력 고려해 각 모듈의 세부내용 설계
  • 객체지향 방법론에 따라 설계를 한다면 설계 원리, 클래스 간의 관계, 클래스 설계 원칙 고려

구현(implenemtation) 단계

구현은 코딩을 하는 단계이다. 코딩을 할 땐 가능한 표준 코딩 스타일을 지키는 것이 좋다.

또한, 최근에는 보안이 매우 중요하므로 시큐어 코딩(sequre coding)방법도 고려한다.

 

테스트(test) 단계

테스트 방법은 다음과 같이 분류 가능하며 프로젝트의 성격에 맞는 방법을 선택한다.

  • 개발자 또는 사용자 시각에 따른 분류
  • 사용되는 목적에 따른 분류
  • 프로그램의 실행 요구 여부에 따른 분류
  • 품질 특성에 따른 분류
  • 소프트웨어 개발 단계에 따른 분류

유지보수(maintenance) 단계

소프트웨어를 사용하다보면 추가 요구 사항, 수정 사항 등이 발생한다.

유지보수 단계는 사용 중인 소프트웨어를 문제없이 잘 유지하고, 보수하면서 사용하는 단계이다.

  • 수정 유지보수
  • 적응 유지보수
  • 기능 보강 유지보수
  • 예방 유지보수

폭포수 모델의 장점

- 관리가 용이하다

폭포수 모델은 절차가 간결하고 이해하기 쉽다. 또, 순차적 모델이므로 단계별 진척 사항에 대한 관리가 용이하다. 따라서 유사 분야의 소프트웨어 개발 경험이 많으면 효율과 품질 측면에서 우수한 결과를 낼 수 있다.

 

- 체계적으로 문서화할 수 있다

폭포수 모델은 각 단계별로 정형화된 접근 방법을 사용한다. 따라서 단계별 산출물을 체계적으로 문서화할 수 있다. 그리고 단계별 산출물을 검토하여 프로젝트 진행을 명확하게 할 수 있다.

 

- 요구사항의 변화가 적은 프로젝트에 적합

폭포수 모델은 초기에 어느 정도 요구사항이 확정되고 요구사항의 변화가 비교적 적은 형태의 프로젝트를 개발할 때 적합하다

 

폭포수 모델의 단점

- 각 단계는 앞 단계가 완료되어야 수행할 수 있다.

앞 단계가 끝날 때 까지 대기해야한다. 따라서 각 단계를 개발하는 절차 중에는 사용자의 요구 사항을 반영할 수 있는 체계적인 방법이 없어, 개발이 완료되어 동작하는 것을 보기 전에는 사용자가 원하는 것을 정확히 알 수 없다.

 

- 각 단계의 결과물이 완벽한 수준이여야 다음 단계에 오류가 발생하지 않는다.

하지만 현실은 그렇지 못하다. 산출물을 충분히 검토했다 해도 발견하지 못한 오류가 있을 수 있다. 따라서 추후에 오류가 발견된다면 수정하는 데 시간과 비용이 많이 들 것이다. 또한, 개발된 이후에 새로운 요구사항이 추가된다면 프로젝트 전체 일정에 큰 부담을 줄 것이다.

 

- 사용자가 중간에 가시적인 결과를 볼 수 없어 답답할 수 있다.

사용자가 실제로 소프트웨어 작동 모습을 보려면 구현이 끝나야한다. 오랜 기다림 끝에 확인한 실행 결과가 만족스러우면 다행이지만, 원하는 결과가 아니라면 수정 요구사항을 받아 보완하기 위해 시간과 비용이 많이 들 것이다.

 

 

요즘처럼 소프트웨어 개발이 매우 빠르고 끊임없이 변경되는 시대에는 적합한 모델이 아니다.

하지만 요구사항이 어느정도 고정되어 있고 작업이 선형으로 진행된다면 유용하다.

 

반응형

'[Study] > 소프트웨어공학' 카테고리의 다른 글

추상화, 모듈화  (0) 2019.08.16
애자일방법론과 폭포수모델 비교  (0) 2019.08.16
나선형 모델  (0) 2019.08.16
프로토타입 모델 (Prototype model)  (0) 2019.08.13
V 모델  (0) 2019.08.13