Waterfall In Software Development

Last modified by chrisby on 2024/05/20 08:43

What is waterfall model?

The Waterfall Model is a linear project management approach where the project's lifecycle is divided into distinct phases, such as analysis, design, implementation, and testing. Each phase has defined objectives and set deadlines. Importantly, one phase begins only after the completion of the previous one, ensuring a sequential progression throughout the project's duration. For example:

waterfall_white.svg

Figure: Simple waterfall planning example for 12 month project

Problems of the Waterfall Model

Waterfall is suitable for projects where the units of work can be specified very precisely at the start of the project and won't change during the course of the project. Neither of these criteria usually applies to software development, which makes waterfall a poor choice in many cases. Here are some of the resulting problems:

  • Costly Late Feedback: Fixing problems early is cheap. However, in waterfall, problems are typically identified during the implementation and testing phases, which increases the cost of fixing them.
    • Late Technical Feedback: The design and analysis phases lack a verification mechanism, which can result in problems being identified late in the implementation and testing phases. A lack of early feedback can lead teams to invest time in concepts that may not be viable or are based on other flawed ideas, wasting resources.
    • Late Customer Feedback: The structured nature of the waterfall means that valuable customer feedback on features is often received late, at the earliest in the implementation phase, missing opportunities for early insight and low-cost corrections.
  • Inflexibility to Change
    • Rigid Approach to Evolving Requirements: Waterfall's strict planning and deadlines make it less adaptable to changing requirements throughout the project lifecycle.
    • No Room for Redesign: After the design phase, there's minimal room for redesign, even if subsequent developments suggest the need.
    • Wasting time in case of premature completion: Time is wasted on planning and design, even though the tasks are completed due to fixed phase schedules.
  • Prioritizing contracts over needs: The waterfall model can sometimes prioritize contractual obligations over the evolving needs of the project, which can compromise the final product.
  • A common consequence is delivery delays:
    • Frequent deadline overruns: The inflexible nature of waterfall, combined with the unpredictable nature of software projects, often results in missed deadlines, extended timelines and added stress.
    • Late reporting of delays: Due to the late feedback mechanism, delays are identified later, making it difficult to accurately estimate the actual project completion date.

Agile, on the other hand, is explicitly designed for imprecise specification at the outset and adaptation to constantly changing requirements, making it often the better choice in software development.