• 10 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 1/29/24

Learn about the Waterfall model of project management

We've spent a few chapters on fashionable team workflows like agile and scrum. Let's take a turn and check out an alternative approach called the waterfall model. 

The waterfall model imitates actual waterfalls in some of the following ways:

  • Projects cascade through different phases.

  • The flow between each phase should be logical and natural

  • You can see the bottom (end) of the project from the top (beginning) of it.

  • Projects don't flow backwards.

You'll see more of how these metaphors play out in the waterfall model down below!

The waterfall model cascades down, much like an actual waterfall
The waterfall model cascades like an actual waterfall.

Interestingly, the origins of the waterfall model weren't in software development. The first uses of the model were in physical product production. This makes sense! When you're producing a physical product, it's much harder to step backwards or make tiny iterations the way you would in an agile workflow. 

Software teams adopted this same model because when the waterfall method was created in the 1970's, not much else existed.

Waterfall model steps

Let's go through the different steps of the waterfall model:

  • Requirements and analysis

  • Design

  • Coding

  • Testing

  • Installation/release

  • Maintenance

Requirements and analysis

This is the key step where needs are defined and people get on the same page. Analysis goes beyond the project brief-level. Analysis in the waterfall model means discussing software requirements, versioning, customer constraints, project needs, strategy, and more. These discussions are often summarized in a large product requirements document. 

In the waterfall metaphor, this is the precipice of the waterfall where the water is about to tumble off, so you'd better get everything you need in place before the water (project) speeds over the edge!

Design

Software architecture comes into play in the design stage. For smaller features, this isn't as important, because if you're fixing a tiny bug or adding a little functionality, you're probably not overhauling the whole site architecture.

Designing software architecture requires a broad, overall view of a software system, and that's why this step appears so early on in the waterfall model!

Coding

We all know what that is! the coding or implementation step is where you're actually writing the code that's gonna make your feature or product come to life.

Testing

Next up in the waterfall model, you'll have the testing phase. You may be thinking, "Oooh, testing! That reminds me of agile models!" You're right! Testing is a part of nearly any software development workflow you could choose. The testing phase in the waterfall model is where developers write tests to confirm the functionality they built works properly and doesn't mess up anything else in the code base. This phase includes writing unit tests and integration tests, and the feedback from the tests allows mistakes and problems to be fixed...before the feature goes out.

Installation and release

This is the "Woohoo!" moment where the software is either installed or released! If the team or application is large, this can actually be a hefty step.

Maintenance

Lastly, maintenance! Maintenance means keeping software up and running and making sure that even where there are new versions of tools involved, or code being refactored, everything still works as it should.

There is no direct equivalent of this step in agile workflows, that's because maintenance isn't really necessary in them. Constant iteration means that, by default, everything is being perpetually maintained and even-improved!

You'll have noticed that the earlier steps involve a lot of planning, and later stages a lot of pure execution. That's the overall gist of the waterfall method, which makes it much less responsive and easy-moving. You can't just iterate, iterate, iterate. You must carefully plan at the beginning of a project because once execution starts, it's hard to stop without restarting at the beginning.

Example of certificate of achievement
Example of certificate of achievement