Skip to content

Waterfall Model

INF4817 - Software Engineering, Software Engineering Frameworks


Waterfall Model

This is the oldest model in Software engineering. It emphasizes planning and distinct non-overlapping stages.

Stages:

  • System requirements - the systems, hardware and other tools needed to build the system.
  • Software requirements - establishing of the expectations for the actual software. All the software functionality, the interaction with external applications (eg. databases), the performances and UI requirements as well.
  • Architectural design - determining the software framework, the design of major components of the system and their interactions. It does define low level structure of each of these components.
  • Detailed design - Produces a specification doc for each component described in the architecture.
  • Coding - implementing the design.
  • Testing - determine whether the software meets the requirements.
  • Maintenance - address problems/enhancement requests post delivery.

Advantages

  • Easy to understand and implement
  • Good habits - define-before-design and design-before-code
  • Documentation driven - easier for for longevity of project with changing teams and on-boarding new members.
  • Works well on mature products and weak teams (i.e. dispersed teams)
  • Easy to identify deliverables and milestones as each phase is discrete and linear.
  • Lower resources required (not as collaboration heavy as other models).

Disadvantages

  • Requires a lot of upfront information
  • Unrealistic expectation to have accurate requirements so early in the project
  • Difficult to integrate risk management.
  • Difficult and expensive to make changes upstream (document changes).
  • Uni-directional, difficult to go backward through the phases with any changes.
  • Increases development time and cost.
  • Very inflexible - cannot handle vague or grey requirements.

See also

References

  • A Comparison Between Five Models Of Software Engineering