-> 블로그 이전

[SE] 폭포수 모델

2022. 3. 11. 21:34Major`/소프트웨어 공학

폭포수 모델 (Waterfall Model)

- SW 개발 시, 단계적으로 개발하는 방법

- 반드시 앞 단계가 먼저 완료되어야 다음 단계로 넘어갈 수 있다

  • 앞 단계가 완료 : 개발 + 해당 단계에 대한 철저한 검증

- 결과가 user의 의견과 다르거나, 결함이 있을 경우 바로 전 단계로 돌아가는 "Feedback"은 존재한다

- 프로젝트 진행과정에 대한 관리는 용이하지만, 최종적 목표가 개발 후반에 구체화되기 때문에, 문제가 후반에 발견될 가능성이 크다

 


 

폭포수 모델 구성

- 각 단계 종료 시, 철저한 검증 후에 다음 단계를 진행

- 전 단계에서 결함 발견 시, 해당 단계에 대한 피드백을 받고, 각 단계별 산출물을 명확하게 정의

- 기술적 위험성이 낮거나, 유사프로젝트 경험이 많은 경우에 사용

 

1) 계획 (Why)

- user의 needs를 파악해서 타당성을 조사

- 그리고, SW기능 + 제약조건(비용, 리스크, 기한, ...)을 명시하는 명세서를 작성한다

- "ROI"가 굉장히 중요하다

  • ROI : Return of Investement :: 투자대비 돌아오는 이득

- 현재 기술 수준으로 개발이 가능한지 파악을 해야 한다

 

 

2) 요구 분석 (What)

- user의 needs를 이해하고, 해당 needs에 대한 정확한 기능/비기능적 요구 사항을 도출

- 무엇을 개발하고, 시스템이 갖춰야 하는 조건/능력을 "요구사항 명세서"에 명시한다

>> 오류가 발생했을 경우, 요구분석 단계에서 고쳐야 한다

Why? 나중에 고치면 고치는 비용이 굉장히 많이 발생한다

 

 

3) 설계 (How)

- 분석 모델을 가지고 이를 세분화함으로써 실제 구현될 수 있는 형태로 전환

- 요구사항을 기반으로 명확하고 조직적인 구조로 설계해야 한다

1. 아키텍쳐 설계

2. 인터페이스 설계

3. 프로그램 설계

>> 구조적 설계 / 객체지향 설계 방법으로 나뉜다

 

4) 구현

- 설계단계에서 만들어진 설게서를 통해서 프로그램을 작성/코딩/디버킹/테스트를 수행한다

- 구현 시 코딩 표준, 테스트 절차를 준수해서 작성해야 한다 & 코드의 정적 분석을 진행

 

 

5) 시험

- 프로그램에서 발생 가능한 오류를 발견/수정하는 단계이다

 

6) 운영 / 유지보수

- 시스템 사용 중 발생하는 여러 변경사항에 대해 적응하고, 변화에 대비하는 과정

- 여러 오류들을 수정하고, 추가 기능 등을 개발한다

 

수정 유지보수

- 오류를 수정

 

적응 유지보수

- 환경 변화에 대응

 

완전 유지보수

- 기능을 개선하고 성능을 향상

 

예방 유지보수

- 미래 유지 보수성을 향상

 

 


장점

- 굉장히 고전적인 방법이고, 적용 사례가 많다

- 전체 과정(프로세스)의 이해가 간단하고 쉽다

- 현재 단계에 대한 이해가 빠르고 쉽다

- 문서/산출물 관리, 적용이 쉽다

 

단점

- 병행 작업이 안된다

- 피드백에 대한 반복 단계가 어렵다

- 테스트 단계에 발견된 중요한 에러에 대한 대응이 힘들다

- 고객의 needs를 반영하기 어렵다 : Why? 1 cycle로 개발하기 때문

- "Time to Market"이 점차 빨라짐에 따라 요즘시대에 적절하지 않다

- 분석/설계 단계가 너무 많아서 구현이 지연될 수 있다

  • 문서화 작업이 너무 많아서 필요없는 문서가 많이 생산될 수 있다

 

활용

- 해당 분야를 잘 알 경우

- 단순한 프로젝트

- 요구사항이 적은 프로그램

 

고려사항

- 관리는 쉬운데, 요구사항의 변경에 대한 대응력이 떨어진다

  • 단계별로 개발을 진행하기 때문에, 요구사항 단계가 끝나고 그 이후에 요구사항을 변경할 경우 수정이 어렵다

- 기술 위험이 낮고, 유사 프로젝트 경험이 있고, 요구사항이 명확할 때 좋다