폭포수 모형(Waterfall Model)이란?
폭포수 모형(Waterfall Model)은 1979년 Boehm이 제시한 전형적인 생명주기 모형으로 소프트웨어 개발 시 프로세스에 체계적인 원리를 도입한 첫 방법론입니다. 즉, 소프트웨어 개발 생명주기(SDLC)에서 가장 오래된 전통적인 모델이라고 할 수 있습니다.
각 단계를 순차적으로 진행하며 마치 폭포처럼 위에서 아래로 흐르는 구조이기 때문에 이런 이름이 붙었고 선형 순차 모형이라고도 합니다.
특징
폭포수 모형은 아래와 같은 여러 성질 및 특징을 갖고 있습니다.
- 단계별 진행: 각 단계의 결과가 확인된 후에 다음 단계로 진행하는 단계적, 순차적, 체계적인 접근 방식을 갖고 있습니다.
- 문서 중심: 각 단계별 산출물이 문서화되어야 하며, 이를 바탕으로 개발이 진행됩니다.
- 요구사항 변경이 어려움: 한 번 정의된 요구사항을 수정하기 어렵기 때문에 초기 단계에서 정확한 요구 분석이 중요합니다.
- 대규모 프로젝트에 적합: 개발 프로세스가 명확하고 문서화가 철저해 대규모 시스템 개발에 적합한 경우가 많습니다.
이 의외에도 폭포수 모형은 가장 오래된 모형으로 적용 사례가 많고 널리 사용된 방법이기 때문에 단계별 산출물이 명확하고 기존 시스템 보완에 좋습니다. 또한 해당 모형의 특성상 요구사항 변경이 어렵기 때문에 비교적 응용 분야가 단순하거나 내용이 잘 알려진 경우에 적용해야 하는데, 따라서 비전문가가 사용할 시스템을 개발하는데 적합합니다.
폭포수 모형의 단계

폭포수 모형은 보통 다음과 같은 단계로 구성됩니다.
1. 계획(Planning)
- 주어진 문제와 시스템의 특성을 파악하여 개발에 필요한 비용과 기간을 예측해 팀을 구성한다.
- 개발의 타당성을 분석하고 전체 시스템이 갖추어야 할 기본 기능과 성능 요건을 파악한다.
2. 요구사항 분석(Requirement Analysis)
- 사용자 요구를 정확히 분석하고 이해하는 과정으로 구현될 시스템의 기능이나 목표, 계약사항 등을 정확히 파악한다.
- 소프트웨어의 기능, 성능, 신뢰도 등 목표 시스템의 품질을 파악한다.
- 개발자(분석가)와 사용자 간의 의사소통이 중요하며, 명확한 기능 정의를 해야 한다.
3. 설계(Design)
- 요구사항을 기반으로 하드웨어 또는 소프트웨어 시스템의 구조를 설계한다.
- 상위 설계(High-Level Design, HLD): 시스템 전체 구조, 데이터베이스 설계
- 세부 설계(Low-Level Design, LLD): 모듈, 인터페이스, 알고리즘 설계
- 한 개 이상의 실행 가능한 프로그램으로 변환할 수 있는 형태로 소프트웨어의 기능을 표현한다.
4. 구현(Implementation)
- 설계된 내용을 토대로 실제 프로그래밍 언어를 이용하여 코드화하는 단계
- 각 모듈(Module) 단위로 코딩을 진행한다.
5. 테스트(Testing & Verification)
- 각 프로그램 단위의 내부적으로 이상 여부 및 입력에 따라 요구되는 결과로 작동하는지의 여부를 확인한다.
- 단위 테스트(Unit Test) → 통합 테스트(Integration Test) → 시스템 테스트(System Test) → 인수 테스트(Acceptance Test) 등과 같은 순서로 진행된다.
6. 배포(Deployment)
- 개발이 완료된 소프트웨어를 실제 운영 환경에 배포하는 단계
- 사용자가 소프트웨어를 사용할 수 있도록 설정하고, 배포 후 안정성을 확인한다.
7. 운영 및 유지보수(Operation & Maintenance)
- 배포된 소프트웨어를 운영하고, 필요에 따라 유지보수를 수행하는 단계
- 사용자에게 전달되어 실제로 사용되며, 전달 이후에 발생하는 변경이 있다면 변경 요구를 수용하고 계속적인 유지보수를 해주어야 한다.
- 버그 수정, 기능 개선, 성능 최적화 등의 작업이 포함된다.
장점
- 각 단계가 정리되어 있어 프로젝트를 명확하게 관리할 수 있다.
- 철저한 문서화를 통해 개발 진행 사항을 파악하기 좋습니다. 또한 중단 시에도 인수인계가 용이하다.
단점
- 초기 요구사항이 잘못되면 이후 개발 과정 중에 발생하는 새로운 요구사항이나 경험을 설계에 반영하기가 어렵다.
- 요구사항을 완벽하게 작성해야 하지만 개발 초기에 사용자들의 모든 요구사항을 명확히 설명하는 것이 어렵다.
- 단계별로 구현되지만 병행되어 진행되거나 가시 거슬러 올라갈 수 없으며, 반복을 허용하지 않는다.
- 실제 프로젝트는 순차적으로 개발되지 못하고 반복적인 성향을 가지므로 개발 모델로 적합하지 않은 경우가 많다. 따라서 실제 프로젝트 수행 시 이 모델의 연속적 단계를 따르는 경우가 드물다.
정리
폭포수 모형(Waterfall model)은 요구사항이 명확하고 변경 가능성이 적은, 안정성이 중요한 프로젝트(ex: 정부 시스템, 금융, 의료 시스템)에서 강점을 발휘합니다. 하지만 빠르게 프로토타입을 제작해야 하는 경우나 변화가 많은 프로젝트에서는 유연성이 떨어져 최종 제품이 사용자 기대와 다를 가능성이 높아지므로 애자일(Agile) 같은 반복적인 개발 방식이 더 적합할 수 있습니다.
따라서 폭포수 모형(Waterfall model)이 적합한지 판단할 때는 요구사항의 안정성, 개발 속도, 사용자 피드백 반영 필요성 등을 고려하는 것이 중요합니다.