폭포수 모델(waterfall model)은 개념, 요구, 설계, 구현, 테스트, 설치·점검 단계를 이 순서로 수행하는 소프트웨어 개발 모델이다. 단계끼리 겹칠 수는 있지만 반복은 거의 없다.[1]

원 논문의 단계

Royce는 1970년 논문에서 고객에게 인도할 큰 프로그램을 개발하는 단계를 시스템 요구사항, 소프트웨어 요구사항, 분석, 프로그램 설계, 코딩, 테스트, 운용 순서로 그렸다. 그는 각 단계가 바로 앞뒤 단계와는 오가며 다듬어지되, 멀리 떨어진 단계와는 거의 오가지 않기를 바랐다.[2]

원 논문이 제안한 것

Royce는 이 단계 구성 자체는 믿을 만하다고 보았지만, 그대로만 구현하면 위험하고 실패하기 쉽다고 했다. 테스트가 개발 끝에 오므로 타이밍, 저장 공간, 입출력 같은 문제가 그때 처음 실제로 드러나고, 제약을 맞추지 못하면 설계를 크게 다시 해야 하며 요구까지 고쳐야 할 수도 있기 때문이다. 그는 개발 위험을 대부분 없애려고 기본 방식에 다섯 가지를 더하자고 제안했다.[2]

  1. 분석을 시작하기 전에 예비 프로그램 설계를 마친다.
  2. 설계를 문서로 남긴다. 단계에 맞춘 문서 계획을 두고 적어도 여섯 가지 문서를 만든다.
  3. 일을 두 번 한다. 처음 만드는 프로그램이면, 핵심 설계와 운용 영역에서 고객에게 인도하는 판이 두 번째 판이 되도록 축소판(pilot model)을 먼저 만든다.
  4. 테스트를 계획하고 통제하고 감시한다.
  5. 고객을 개발에 참여시킨다.[2]

Royce는 순차 단계를 버리지 않고 기본으로 두었다. 그 위에 이웃 단계와 오가며 다듬는 반복과, 전체 과정을 축소판으로 먼저 한 번 해 보는 반복을 더했고, 단계를 건너뛰어 멀리 되돌아가는 일은 피하려 했다. 그의 논문에는 “waterfall”이라는 이름이 나오지 않는다.[2] Bell과 Thayer는 1976년 논문에서 Royce가 제시한 개발 활동의 차례를 “waterfall”이라 불렀다.[3]

[1]
ISO/IEC/IEEE, “ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary (OBP preview).” 2017. Accessed: Oct. 02, 2026. [Online]. Available: https://www.iso.org/obp/ui/#iso:std:iso-iec-ieee:24765:ed-2:v1:en
[2]
W. W. Royce, “Managing the Development of Large Software Systems: Concepts and Techniques,” in Proceedings of the 9th International Conference on Software Engineering (ICSE ’87), 1987, pp. 328–338. Accessed: Oct. 02, 2026. [Online]. Available: https://web.archive.org/web/20250531211246/https://dl.acm.org/doi/pdf/10.5555/41765.41801
[3]
T. E. Bell and T. A. Thayer, “Software Requirements: Are They Really a Problem?,” in Proceedings of the 2nd International Conference on Software Engineering (ICSE ’76), 1976, pp. 61–68. Accessed: Oct. 02, 2026. [Online]. Available: https://web.archive.org/web/20250517124124/https://dl.acm.org/doi/pdf/10.5555/800253.807650