waterfall model

The waterfall model is a linear, sequential approach to the software development life cycle (SDLC) that is popular in software engineering and product development. The waterfall model emphasizes a logical progression of steps. Similar to the direction water flows over the edge of a cliff, distinct endpoints or goals are set for each phase of development and cannot be revisited after completion. The term was first introduced in a paper published in 1970 by Dr. Winston W. Royce and continues to be used in applications of industrial design.

The waterfall methodology is composed of seven non-overlapping stages:

  1. Requirements: Potential requirements, deadlines and guidelines for the project are analyzed and placed into a functional specification. This stage handles the defining and planning of the project without mentioning specific processes.
  2. Analysis: The system specifications are analyzed to generate product models and business logic   that will guide production. This is also when financial and technical resources are audited for feasibility.
  3. Design: A design specification document is created to outline technical design requirements such as programming language, hardware, data sources, architecture and services.
  4. Coding/Implementation: The source code is developed using the models, logic and requirements designated in the prior stages. Typically, the system is designed in smaller components, or units, before being implemented together.
  5. Testing: This is when quality assuranceunit system   and  beta tests take place to report issues that may need to be resolved. This may cause a forced repeat of the coding stage for debugging. If the system passes the tests, the waterfall continues forward.
  6. Operation/Deployment: The product or application is deemed fully functional and is deployed to a live environment.
  7. Maintenance: Corrective, adaptive and perfective maintenance is carried out indefinitely to improve, update and enhance the final product. This could include releasing  patch   updates or releasing new versions.
Waterfall model

Before moving to the next phase, there is usually a review and sign off process to ensure that all defined goals have been met.

The waterfall approach is ideal for projects that have specific documentation, fixed requirements, ample resources, an established timeline and well-understood technology. Alternatives to the waterfall model include joint application development (JAD), rapid application development (RAD), sync-and-stabilize, Agile project management (APM) and the spiral model.

Advantages of the waterfall model

While agile or dynamic methods often replace the waterfall model, there are some advantages:

  • Upfront documentation and planning stages allow for large or shifting teams to remain informed and move towards a common goal.
  • Forces structured , disciplined organization.
  • Is simple to understand, follow and arrange tasks.
  • Facilitates departmentalization and managerial control based on schedule or deadlines.
  • Reinforces good coding habits to define before design and then code.
  • Allows for early design or specification changes to be made easily.
  • Clearly defines milestones and deadlines.

Disadvantages of the waterfall model

The disadvantages of the waterfall model typically surround risk associated with a lack of revision, including:

  • Design is not adaptive; often when a flaw is found, the entire process needs to start over.
  • Ignores the potential to receive mid-process user or client feedback and make changes based on results.
  • Delays testing until the end of the development life cycle.
  • Does not consider error correction.
  • Does not handle requests for changes, scope adjustments or updates well.
  • Reduces efficiency by not allowing processes to overlap.
  • No working product is available until the later stages of the life cycle.
  • Not ideal for complex, high risk, ongoing or object-oriented projects.

This was last updated in February 2019

Next Steps

Consider these need-to-know tips for ALM software

Continue Reading About waterfall model

Dig Deeper on Agile, DevOps and software development methodologies