Waterfall
Waterfall is a way of running a project in fixed order, where each phase is finished and signed off before the next one starts. It is usually taught as the outdated thing Agile replaced, which is both unfair and unhelpful: it is the right choice whenever changing your mind late costs more than specifying carefully now. The page opens with every phase on one screen — what it produces, the gate that closes it and what a change costs there — then covers what Royce actually wrote in 1970, each phase in turn, the V-model, six questions that decide between a predictive plan and an iterative one, the hybrids real projects run, five documented cases, and where it degrades.
- First drawn
- Royce, 1970 — as a warning
- PMBOK name
- Predictive life cycle
- Feedback point
- At acceptance
Waterfall on one screen
Here is the whole model first. Waterfall is defined less by its phases than by what closes each one: a document, a review and a signature. The table walks through the five phases in order — what each one produces, what must be true before anyone may leave it, and what a change costs if it is discovered there.
| Phase | What it produces | The gate that closes it | A change found here costs |
|---|---|---|---|
| 1. Requirements | A requirements specification: every function, plus how fast, how many users, what is logged, which regulations apply. ISO/IEC/IEEE 29148 lists what goes in it. | Every requirement can be tested, and the customer signs the baseline — in systems engineering, the System Requirements Review. | An edit to a document and a new signature. |
| 2. Design | An architecture — the components and the interfaces between them — and a detailed design of each component, with interface control documents for anything shared. | The design can meet every requirement, traced line by line. In defence and space these are the Preliminary and Critical Design Reviews, PDR and CDR. | The design documents below the change, and a second review. |
| 3. Implementation | Code and unit tests, built against the interfaces in the design rather than against each other. | Every unit is complete, unit-tested and reviewed against its design. | Rework in every component that touches the changed interface, plus the design documents. |
| 4. Verification | The integrated system, tested at integration, system and acceptance level, and a test report. | A Test Readiness Review before testing starts; the customer’s acceptance signature after it. | Everything above it at once: a wrong requirement reopens design and code at the point with the least time left. |
| 5. Maintenance | The system in operation. Defects are fixed, and changes are made through formal change requests against the baseline. | Each change request is assessed for impact and approved by a change control board before work starts. | A change request, an impact analysis, a regression run — and a contract amendment if the scope moves. |
Whether to use the model at all is decided by one number — what it costs you to change your mind late — and the fifth section turns that number into six questions you can answer about your own project.
What Royce actually wrote in 1970
Now for a piece of history worth knowing, because it changes how you read every diagram of this model you will ever see.
The cascade comes from a paper that Winston Royce, a manager at the defence contractor TRW, presented at the WESCON conference in August 1970: "Managing the Development of Large Software Systems". His second figure shows seven steps in a line — system requirements, software requirements, analysis, program design, coding, testing, operations. The word "waterfall" appears nowhere in the paper. Thomas Bell and T. A. Thayer are usually credited with attaching that name to it, in 1976.
A page later, Royce wrote: "I believe in this concept, but the implementation described above is risky and invites failure." His reason is precise. Testing is the first moment at which timing, storage and input and output are experienced rather than analysed. If they fail their constraints, the design has to change, and then, in his words, "the development process has returned to the origin and one can expect up to a 100-percent overrun in schedule and/or costs."
He spent the rest of the paper on five additions that make the sequence survivable. The table gives each one under his own heading, what he asked for, and what the same idea is called today.
| Royce’s step | What he asked for | Called today |
|---|---|---|
| 1. Program design comes first | A preliminary design, done before analysis by designers who know the machine’s limits, so that storage and timing problems show up while they are still cheap. | An architecture spike, a walking skeleton |
| 2. Document the design | "Quite a lot" of documentation, which he made the first rule of managing software: "ruthless enforcement of documentation requirements". | Design documents and decision records — the one addition the industry kept, and over-kept |
| 3. Do it twice | If the program is being built for the first time, the version delivered to the customer should be the second. For a 30-month project, perhaps a 10-month pilot model. | A prototype, a pilot, a thin end-to-end slice |
| 4. Plan, control and monitor testing | Testing planned by specialists who did not write the code, every piece of analysis and code scanned by a second person, and every logic path exercised at least once. | Independent testing, code review, coverage |
| 5. Involve the customer | Formally, and at defined points between requirements and acceptance, because what a design is going to do "is subject to wide interpretation even after previous agreement". | A review or a demo at the end of every increment |
His son, Walker Royce, who later helped build the Rational Unified Process, told Craig Larman and Victor Basili that his father "was always a proponent of iterative, incremental, evolutionary development", and that the paper described the waterfall as the simplest description, one that "would not work for all but the most straightforward projects" (IEEE Computer, 2003).
The five phases, one at a time
Let us walk through each phase: what happens in it, what it produces, and the question that has to be answered before you are allowed to move on.
1. Requirements
Everything the system must do is gathered and written down. Not just features — also the non-functional requirements: how fast, how many users at once, what must be logged, which regulations apply.
The output is a specification, and the gate question is: do we all agree this is what is being built? The signatures here are what make everything downstream possible — and what makes a late change a contractual matter rather than a conversation.
One test separates a usable requirement from a wish: can someone write down how it would be checked? "The system shall be fast" cannot be tested. "Search returns results within two seconds for 95 percent of queries, with 500 users online" can — and the V-model below makes that test part of the requirement.
2. Design
The specification is turned into a technical plan. This usually splits in two: high-level design decides the components and how they talk to each other, and detailed design decides what happens inside each one.
The gate question is whether this design can actually meet the specification. This is the phase where an experienced architect earns their keep, because a structural mistake found here costs a week and the same mistake found during testing costs a quarter.
3. Implementation
The code gets written, following the design. Developers write unit tests as they go, but there is no integrated system to try yet — components are built against the interfaces the design specified rather than against each other.
This is the longest phase and, counter-intuitively, the calmest. Everything has been decided; the work is execution. It is also where the project is most likely to be quietly behind, because there is no working system to measure progress against — only percentages of completion.
4. Verification
The pieces are integrated and tested together, then handed to the customer for acceptance testing. This is the first moment anyone sees the whole system behave.
And this is where the model’s central weakness shows. Every assumption made in requirements — nine months ago, by people who had never used the thing — is tested at once, at the point where correcting any of them is most expensive.
5. Maintenance
The system is live. Defects are fixed, small changes are made through a formal change request process, and the product runs until it is replaced.
Worth noting: in most waterfall projects this phase is longer than all the others combined, and it is usually the one nobody plans for properly.
The V-model: every phase paired with its test
There is a variant worth knowing, because it fixes the biggest practical problem with the pure model and you will meet it in regulated industries.
The V-model takes the same phases and bends the line into a V. The left arm goes down through requirements, design and detailed design. The right arm comes back up through the corresponding levels of testing. Each phase on the left is paired with the test level that will verify it.
| Left arm — building it | Right arm — verifying it |
|---|---|
| Requirements | Acceptance testing |
| High-level design | System testing |
| Detailed design | Integration testing |
| Implementation | Unit testing |
The practical gain is that the acceptance tests are written during the requirements phase, not after the build. That forces a useful question early: how would we prove this requirement is met? A requirement nobody can write a test for is a requirement nobody has understood, and the V-model surfaces those in month one rather than month nine.
The shape has two independent origins. In Germany, the V-Modell was developed from 1986 by IABG for the Federal Ministry of Defence, taken over for civilian federal agencies in 1992, and revised as V-Modell 97 and then V-Modell XT, which German federal IT projects still use. In the United States, Kevin Forsberg and Harold Mooz presented a "Vee" for systems engineering at the first NCOSE symposium in 1991.
The two halves of the right arm answer different questions, and Barry Boehm gave them their standard wording in 1981. Verification asks "are we building the product right?" — does the build match the specification? Validation asks "are we building the right product?" — was the specification what the user needed? Integration and system testing verify. Only acceptance testing validates.
When a predictive plan is cheaper: six questions
Strip away the culture war and the choice between Waterfall and Agile comes down to a single number: how much does it cost you to change your mind late?
That number is hard to state directly, so here it is split into six questions. Each row says which answer points to a predictive plan and which to an iterative one. Most projects answer some each way, and the mix — not the majority — tells you which parts to plan up front and which to discover by building.
| Question | Points to a predictive plan | Points to an iterative one |
|---|---|---|
| 1. What does a change cost after release? | A recall, a re-certification, a site visit, a contract amendment | A redeploy |
| 2. Can the requirements be known before building? | A published interface, a regulation’s text, a migration to a target you understand | Users who have not yet seen the thing |
| 3. Has this team built this kind of thing before? | Several times, on the same technology | New stack, new domain, or both |
| 4. Must someone outside approve a specification first? | A fixed-price tender, a safety case, a customer who signs off at gates | Nobody outside the team has to approve the plan |
| 5. Is part of it useful on its own? | Only the whole works: a data cut-over, a satellite, a bridge | Each slice can be used by someone |
| 6. Who can answer questions during the build? | The customer is available at the gates, not in between | Someone who can decide sits with the team every week |
Why the answers matter comes down to when risk is retired. A risk is retired when something runs and proves an assumption right or wrong — not when a document describing the assumption is signed. A single pass retires little until integration; an iterative plan retires some every time something runs in front of someone.
Change is cheap → iterate
A web service with automated tests and continuous deployment. A wrong decision costs a redeploy. Deferring decisions costs almost nothing, so gather evidence instead of guessing.
Change is expensive → specify
Firmware on hardware already in customers’ hands. A certified medical device. A system integration where the other side’s interface is frozen by contract. Here, careful upfront thinking is the cheaper path.
Notice that this is a property of your situation, not of your beliefs about software development. The same team may be right to iterate on the web frontend and right to specify carefully on the firmware, in the same quarter.
Waterfall
- Scope fixed; time and cost estimated against it
- One large feedback point, at acceptance
- Documentation is a contractual deliverable
- Strong audit trail; every gate is signed
Agile
- Time and team fixed; scope flexes
- Many small feedback points, every iteration
- Documentation written where it unblocks someone
- Audit trail must be built deliberately
The hybrids real projects run
Very few organisations run either model in pure form. The common real shape is a predictive wrapper around iterative execution: a fixed contractual scope and milestone plan on the outside, with the team working in sprints inside it.
That hybrid is honest as long as one condition holds: the outer plan gets genuinely re-baselined when the inner work discovers something. To re-baseline is to agree a new version of the plan and measure against it from then on, instead of reporting against the old one as if nothing had happened.
| Shape | What is fixed | What iterates | Honest when |
|---|---|---|---|
| Predictive wrapper, sprints inside | Contract scope and milestone dates | Delivery, sprint by sprint | The outer plan is re-baselined when the sprints find something |
| Incremental builds — MIL-STD-498, 1994 | The overall requirements and the architecture | Design and code, build by build; each build is delivered | A later build may change what an earlier one assumed |
| Stage-Gate — Robert Cooper, 1990 | The gates and their criteria | Everything between two gates | A gate can stop the project, not only approve it |
| Water-Scrum-Fall — Forrester, 2011 | Requirements up front, release at the end | Development only | Rarely: it keeps both ends of Waterfall and calls the middle Agile |
Stage-Gate deserves a sentence of its own, because it is often confused with Waterfall and is a different thing. Its gates are investment decisions — continue, change course, or stop — taken by people who control the money, and a portfolio in which no project is ever stopped at a gate is running a ceremony, not the method. The planning-side version of the same idea, detailing the near term and leaving the far term coarse, is rolling wave planningdetail the near term, outline the restPlanning the next few months in detail and the rest only as budgeted placeholders, then detailing the next stretch at each planning cycle. It keeps the plan complete without inventing detail nobody can know yet; it fails when the placeholders are never revisited.Full article →All terms, covered on the work breakdown structure page.
Five documented cases, and the control each one tested
Waterfall’s record is better documented than most methods’, because so much of it was written by governments and inquiry boards. The first two cases are about the model itself. The other three are about what a gate can and cannot catch.
| Case | What happened | The control it tested |
|---|---|---|
| DOD-STD-2167, 1985–1994 | The US defence standard for software, issued in 1985, required the single-pass, document-driven sequence. In 1987 a Defense Science Board task force chaired by Fred Brooks reported that the draft revision "continues to reinforce exactly the document-driven, specify-then-build approach that lies at the heart of so many DoD software problems". 2167A (February 1988) tried to be neutral about method; MIL-STD-498 (December 1994) replaced it with incremental builds. The standard’s principal author later said he had not heard of iterative development when he wrote it, and would have recommended it. | A mandate. One life cycle required of every project, whatever its cost of late change — the very question the model should be chosen by. |
| Space Shuttle flight software, 1977–1980 | IBM’s Federal Systems Division built the primary avionics software at the heart of the shuttle — a textbook case of rigorous specification — in 17 iterations over 31 months, about eight weeks each, because the shuttle’s requirements kept changing. The team described applying "the ideal cycle to small elements of the overall software package on an iterative basis" (Madden and Rone, Communications of the ACM, 1984). | Rigour in small increments. The gates and documents were kept; what changed was how much each one covered. |
| Denver International Airport, 1995 | Design of the airport-wide automated baggage system began well after construction of the airport was under way. A fixed scope, schedule and budget "precluded extensive simulation or physical testing of the full design" (SEBoK case study). The airport opened in February 1995, sixteen months late, at a delay cost of about $1.1 million a day, and the automated system was abandoned in August 2005. | A fixed plan with no room for verification. Scope arrived late, the plan was not re-baselined, and testing was the phase that gave way. |
| Ariane 5 flight 501, 1996 | On 4 June 1996 the rocket broke up about 40 seconds after launch. Its inertial reference software had been reused from Ariane 4. Converting a horizontal-velocity value — far larger on Ariane 5’s trajectory — into a 16-bit integer overflowed, and shut down both the unit and its identical backup. The inquiry board found that the Ariane 5 trajectory had not been part of the unit’s specification, and that the complete system had not been tested with it (Lions report, July 1996). | The right arm of the V. A requirement inherited without being re-validated for its new use, and the one test level that would have exposed it left out. |
| Mars Climate Orbiter, 1999 | Ground software supplied to the navigation team reported thruster impulse in pound-force seconds; the interface specification required newton-seconds. Months of small trajectory errors accumulated, and on 23 September 1999 the spacecraft reached Mars far lower than planned and was lost. The mishap board named the root cause as the failure to use metric units in a ground software file called "Small Forces" (Phase I report, November 1999). | A signed interface is not a verified one. The specification existed and said the right thing; nobody tested the interface end to end across the boundary between the two organisations. |
Where it degrades into theatre
The honest limit first. Waterfall is honest about scope and date and silent about knowledge. It can only ever be as right as the requirements were in month one, and it has no mechanism of its own for finding out they were wrong before the verification phase. Where knowledge genuinely exists before the build — a frozen interface, a known migration target, a team doing the fifth version of the same thing — that silence costs nothing, and the model’s discipline is pure gain.
Its defenders and its critics agree on more than either admits. David Parnas and Paul Clements, who believed in the ideal of a rational, specification-first process, published "A Rational Design Process: How and Why to Fake It" in 1986: nobody can actually work that way, they argued, but the documents should be written as if they had. Fred Brooks put the other half more bluntly in his keynote at the 1995 International Conference on Software Engineering: "The waterfall model is wrong!"
- Requirements signed off by people who will not use the system, so acceptance is the first real review.
- A verification phase compressed to fit a date, which turns testing into a formality.
- Change requests treated as failures rather than as information, so the plan is defended past its usefulness.
- A change control board that meets monthly, so every change — right or wrong — waits a month.
- A traceability matrix filled in after the build, to pass the audit rather than to find a gap.
- A design review that reviews slides instead of the design, so the gate is a meeting rather than a check.
- Acceptance tests written after the code, which keeps the V on paper and removes its only gain.
- Sprinta fixed-length work cycleA fixed period, usually one to four weeks, at the end of which there is something finished enough to show. The length is fixed and the scope moves — a sprint that is extended to fit the work has given up the only thing it was for.Full article →All terms inside a plan that is never re-baselined — iteration in appearance only.
- Progress reported as percentage complete, which cannot be verified until the system runs.
- "Waterfall because the regulator requires it", when the regulator requires evidence, not a sequence.
When to use it
Use it when
- Requirements are genuinely stable and well understood before work starts.
- A late change is genuinely expensive — shipped hardware, physical deployment, frozen interfaces.
- The team has built this kind of system before, on the same technology.
- The contract fixes scope and price, and the client needs a date to plan around.
Avoid it when
- The product is new and its users have not yet told you what they need.
- The technology is unfamiliar, so design estimates are guesses dressed as plans.
- You can release cheaply and often — then late feedback is a cost you chose, not one you inherited.
- The plan will not be re-baselined when reality diverges, which makes the gates theatre.
Sources and method
What this page stands on
- 16 sources
- 3 documented failures
- Checked October 13, 2026
Practices and where the terms come from
what Royce wrote, the phases, the V-model and its vocabulary- ResearchWinston W. Royce — Managing the Development of Large Software SystemsProceedings of IEEE WESCON · Aug 1970
- ResearchCraig Larman, Victor R. Basili — Iterative and Incremental Development: A Brief History (opens in a new tab)IEEE Computer · Jun 2003
- ResearchT. E. Bell, T. A. Thayer — Software Requirements: Are They Really a Problem?International Conference on Software Engineering · 1976
- StandardA Guide to the Project Management Body of Knowledge (PMBOK Guide) (opens in a new tab)Project Management Institute
- StandardISO/IEC/IEEE 29148:2018 — Requirements engineering (opens in a new tab)ISO · 2018
- GuideISTQB Glossary (opens in a new tab)ISTQB
- ResearchKevin Forsberg, Harold Mooz — The Relationship of System Engineering to the Project Cycle (opens in a new tab)INCOSE International Symposium · 1991
- StandardV-Modell XTGerman Federal Government
- BookBarry Boehm — Software Engineering EconomicsPrentice Hall · 1981
The failures this page learns from
the section “Five documented cases, and the control each one tested”- GuideDenver Airport Baggage Handling System (opens in a new tab)SEBoK
- Regulator reportAriane 501 — Presentation of Inquiry Board report (opens in a new tab)European Space Agency · Jul 19, 1996
- PostmortemMars Climate Orbiter Mishap Investigation Board — Phase I Report (opens in a new tab)NASA · Nov 10, 1999
Faking it, gates and hybrids
the sections on the economics and the hybrids- ResearchDavid L. Parnas, Paul C. Clements — A Rational Design Process: How and Why to Fake It (opens in a new tab)IEEE Transactions on Software Engineering · Feb 1986
- ResearchRobert G. Cooper — Stage-Gate Systems: A New Tool for Managing New Products (opens in a new tab)Business Horizons · May 1990
- ResearchDave West — Water-Scrum-Fall Is The Reality Of Agile For Most Organizations TodayForrester Research · Jul 2011
- StandardAAMI TIR45:2012 — Guidance on the use of AGILE practices in the development of medical device softwareAAMI · 2012
Researched with Claude. Finding and cross-checking the primary sources was done with Claude (Anthropic). Selection, writing and fact-checking: the Anatomy of IT Product editors.
Found this useful?
Share it with someone who is working on the same problem.