Waterfall vs Agile: Planning, Handling Change and Project Fit

The waterfall model is a development model that proceeds through requirements definition, design, programming and testing in order from upstream to downstream, in principle moving to the next phase only after the deliverables of the previous phase are finalized. Because the whole plan is set at the start, progress and cost are easy to manage, but errors in requirements found in later phases cause a lot of rework. Agile development is an umbrella term for approaches that repeat short iterations of a few weeks, build working software each time, take in users' feedback and revise the plan as requirements change; Scrum and extreme programming (XP) are typical methods. Waterfall fits when requirements are clear and stable, and agile fits when requirements change easily and you want to deliver usable features early.

AspectWaterfall modelAgile development
How the phases proceedRequirements → design → programming → testing, each done once, in order from upstreamShort iterations (sprints in Scrum) containing planning, design, implementation and testing, repeated many times
PlanningScope, schedule and cost of the whole project are set at the start, and work follows that planA rough direction is set, and the plan is revised each iteration, highest-priority items first
Handling requirement changesChanges after the previous phase's deliverables are finalized cause a lot of rework and go through a change-management procedureChange is assumed and is easily taken into the plan for the next iteration
When working software appearsMainly near the end of development; delivered all at once after testingEvery iteration produces working software (an increment, in Scrum)
When testing happensAfter programming: unit, integration, system and acceptance testing in order (matched to design phases in the V-model)Every iteration; changes are often checked each time with automated tests and continuous integration
DocumentationRequirements specifications, design documents and so on are written for each phase and finalized through reviewsWorking software is valued, and documentation is often limited to what is needed
Customer involvementMainly at the initial requirements definition and the final acceptance testingReviews the product every iteration and gives feedback; in Scrum, the product owner sets the priorities of what to build
Progress trackingMeasured by completed phases and deliverables; easy to manage with a WBS and Gantt chartsMeasured each iteration by features that are finished and working
Projects that fitClear, stable requirements; specifications that must be fixed early alongside hardware; contracts that must fix scope and cost up frontRequirements that change easily, or new services where you want to check user reactions while building

Figures are typical orders of magnitude and vary by process generation and product.

When to use which

Waterfall model
When requirements are clear from the start and unlikely to change, when many organizations are involved and approvals and documents are required at each phase, or when, as with embedded devices, the specification must be fixed early to match the hardware.
Agile development
When it is not clear at the start what will actually help users, when you want to change priorities as the market and requirements change, or when you want to deliver usable features early, even a little at a time. It assumes that users or the client stay involved throughout development.

FAQ

Does agile development skip plans and design documents?

No. Agile development does plan; rather than fixing every detail at the start, it revises the plan each iteration. In Scrum, sprint planning at the start of each sprint decides what will be built in that sprint. Documents that are needed are also written.

What is the Manifesto for Agile Software Development?

A statement of the ideas behind agile development, written by a group of software developers in 2001. It sets out four values: individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and responding to change over following a plan. It is worded to say that while there is value in the items on the right, the items on the left are valued more.

How do Scrum and agile development differ?

Agile development is an umbrella term for ideas and approaches that develop software in short iterations while responding to change. Scrum is one of the typical frameworks for putting it into practice; it defines three roles (product owner, Scrum master and developers) and events held within sprints of a fixed length of one month or less.

Are waterfall and agile ever combined?

Yes. For example, overall requirements and the high-level design are decided first, and implementation and testing then proceed in short iterations. Within the waterfall tradition, techniques such as prototyping to confirm requirements and the spiral model, which repeats the phases several times, have also long been used to reduce rework.

Check your understanding

Which is a characteristic of the waterfall model of software development?

  1. APhases such as requirements definition, design, implementation and testing are carried out in order from upstream, and in principle the next phase starts only after the previous phase's deliverables are finalized
  2. BShort iterations are repeated, each producing working software and incorporating feedback from users
  3. CA prototype is built first and shown to users to confirm their requirements before full-scale development begins
Show answer and explanation

Answer: A. Phases such as requirements definition, design, implementation and testing are carried out in order from upstream, and in principle the next phase starts only after the previous phase's deliverables are finalized

The waterfall model is a development model in which phases proceed in the order requirements definition, design, programming and testing, like water flowing downhill. Because each phase's deliverables are finalized through reviews, it is easy to plan and to track progress, but an error in the requirements found in a later phase causes a lot of rework. It is used when requirements are clear and unlikely to change, or when the specification must be fixed early together with the hardware. Incorporating user feedback through iterations is a feature of iterative approaches such as agile development, and confirming requirements with a prototype is a feature of the prototyping model.

In the V-model of software development, which test corresponds to the requirements definition phase and checks that what was decided in that phase is satisfied?

  1. AUnit testing
  2. BIntegration testing
  3. CAcceptance testing
Show answer and explanation

Answer: C. Acceptance testing

The V-model is a development model that places the phases going down from requirements definition through design to implementation on the left, places the testing phases going back up on the right, and links each pair of corresponding phases. Acceptance testing (operational testing) corresponds to requirements definition, and as the design phases become more detailed, system testing, integration testing and unit testing correspond to them in turn. The mapping of the intermediate phases differs slightly between organizations and textbooks, and system testing is sometimes also mapped to requirements definition, but all agree that acceptance testing, which checks the requirements from the customer's or user's point of view, corresponds to requirements definition. The key point of the model is to prepare the test plans and pass criteria at the time of the corresponding design phase.

In Scrum, which role is accountable for the content and ordering (priority) of the Product Backlog items and for maximizing the value of the product?

  1. AScrum Master
  2. BProduct Owner
  3. CDevelopers
Show answer and explanation

Answer: B. Product Owner

A Scrum Team consists of three roles: the Product Owner, the Scrum Master and the Developers. The Product Owner manages the Product Backlog, the list of what should be built, decides which items are built first, and is accountable for maximizing the value of the product. The Scrum Master spreads the Scrum way of working through the team and organization and helps remove impediments. The Developers are the people who create a working Increment in each Sprint.

  1. In Scrum, which event takes place at the end of a Sprint to show the completed Increment (the working product) to stakeholders, gather feedback and adjust future direction and the Product Backlog?
  2. In agile development methods such as Extreme Programming (XP), what is the activity of reorganizing the internal structure of a program so that it is easier to understand and change, without changing its externally visible behavior?
  3. Which describes continuous integration (CI)?

Practice Software Development and Project Management questions

Key terms explained

Waterfall model
A software development model in which phases such as requirements definition, design, programming and testing are carried out in order from upstream, and in principle the next phase starts only after the previous phase's deliverables are finalized. Planning and progress are easy to control, but an error in the requirements found in a later phase causes a lot of rework.
Agile development
A general term for ways of developing software that repeat short iterations of a few weeks, produce working software each time, incorporate user feedback and revise the plan to follow changing requirements. Representative methods include Scrum and Extreme Programming (XP).
Scrum
A representative framework of agile development. With three roles, the Product Owner, the Scrum Master and the Developers, and the events held within Sprints of a fixed length of one month or less (Sprint Planning, the Daily Scrum, the Sprint Review and the Sprint Retrospective), a working product is built a little at a time.
V-model
A development model that arranges the phases going down from requirements definition through design to implementation and the testing phases going back up from unit testing to acceptance testing in a V shape, and pairs the two sides, such as requirements definition with acceptance testing, design with integration and system testing, and module design with unit testing. Which design phase is paired with which test differs slightly between organizations and textbooks.
Test-driven development (TDD)
A way of developing software in a short repeated cycle: first write a test for the feature to be built, then write the minimum code to make the test pass, then refactor while keeping the tests passing. It spread as a practice of Extreme Programming (XP).
CI/CD (continuous integration and continuous delivery)
A combined name for continuous integration (CI), in which developers merge their changes into a shared branch frequently and each merge triggers a build and automated tests, and continuous delivery (CD), which keeps tested changes ready to be released to production at any time. When the release itself is also automated, it is called continuous deployment.
WBS (work breakdown structure)
A tree that breaks down the deliverables of a project and the work needed for them from the top level to lower levels. The lowest elements are called work packages and are the units for estimating, scheduling, assigning people and tracking progress.

Related comparisons