---
title: "What is Waterfall?"
canonical: https://wavect.io/glossary/waterfall/
language: en
description: "A sequential model where each phase (requirements, design, build, test, deploy) finishes before the next begins. Solid for fixed scope, poor for discovery."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

METHODOLOGY

# Waterfall

A sequential model where each phase (requirements, design, build, test, deploy) finishes before the next begins. Solid for fixed scope, poor for discovery.

Last reviewed: 2026-06-02 by [Kevin Riedl](/team/kevin-riedl/) [wiki ↗](https://www.wikidata.org/wiki/Q139796365)

Waterfall runs a project as an ordered sequence of phases: gather all the requirements, then design the whole system, then build it, then test it, then deploy it. Each phase produces a signed-off document and finishes before the next one starts. The appeal is obvious: you know the plan, the cost, and the date up front, and everyone agrees to it before a line of code is written.

It still legitimately fits some work. When the scope is genuinely fixed and well understood, when a regulator requires up-front documentation and traceability, or when you are building hardware where you cannot cheaply iterate after the metal is cut, sequential phases are the honest model. Pretending such a project is “agile” just hides the plan instead of removing it.

The contracting angle is where Waterfall and Agile collide most concretely. A fixed-price Werkvertrag, under Austrian and German law, needs a defined deliverable to bind the vendor to, which pushes naturally toward a waterfall-shaped, fully-specified scope. Genuinely iterative work, where you expect the requirements to change as you learn, fits a Dienstvertrag or a retainer better. Founders get into trouble when they want the legal certainty of fixed-price and the flexibility of agile at the same time: those pull in opposite directions. The honest resolution is usually to do a fixed-price discovery to nail down enough scope to fix a price on, then run the build with whatever boundary permeability the remaining uncertainty actually warrants.

It fails badly for product discovery. The fatal assumption is that you can specify the right product up front, before any user has touched it. You almost never can. By the time the build phase ends, the requirements gathered months earlier are partly wrong, and Waterfall has no cheap way to find out until the testing phase, when changing anything is expensive. You get a product that matches the spec and misses the need.

The honest distinction from [Agile](/glossary/agile/): Waterfall front-loads all the decisions and bets that they are right. Agile (whether run as [Scrum](/glossary/scrum/) or a lighter flow) spreads decisions across the work and bets that early feedback will catch the wrong ones. Either way, both are just sequencing choices over the same underlying [SDLC](/glossary/sdlc/) stages. For anything where you do not yet know exactly what to build, the bet favours Agile. For anything where the answer is genuinely known and fixed, Waterfall’s predictability is a feature, not a flaw.

// FAQ

## FAQs

### What is Waterfall?

A sequential development model that runs a project as ordered phases, requirements, design, build, test, deploy, each finishing and signed off before the next begins. It commits to the full plan, cost, and date up front, before any code is written.

### Agile vs Waterfall?

Waterfall front-loads every decision and bets the plan is right, then resists change. Agile spreads decisions across short iterations and uses early feedback to correct course. Waterfall fits fixed, well-understood scope and regulated or hardware work. Agile fits anything where you do not yet know exactly what to build, which is most software.

### When does Waterfall fail?

In product discovery. It assumes you can specify the right product before any user has touched it, which you almost never can. The wrong requirements only surface in the test phase, when changing them is most expensive, and you ship a product that matches the spec but misses the actual need.

Related terms

- [Agile](/glossary/agile/)
- [Scrum](/glossary/scrum/)
- [SDLC](/glossary/sdlc/)

Related services

- [Custom Software Development](/services/software-development/)

Related case studies

- [Polity](/case-studies/polity/)

Related guides

- [The software development process, week by week](/software-development-guide/software-development-process/)

Talk to us

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/glossary/waterfall/#term",
      "@type": "DefinedTerm",
      "alternateName": [],
      "description": "A sequential model where each phase (requirements, design, build, test, deploy) finishes before the next begins. Solid for fixed scope, poor for discovery.",
      "inDefinedTermSet": "https://wavect.io/glossary/#termset",
      "name": "Waterfall",
      "termCode": "waterfall",
      "url": "https://wavect.io/glossary/waterfall/"
    },
    {
      "@id": "https://wavect.io/glossary/waterfall/#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-06-02",
      "description": "A sequential model where each phase (requirements, design, build, test, deploy) finishes before the next begins. Solid for fixed scope, poor for discovery.",
      "headline": "Waterfall",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-06-02",
      "mainEntity": {
        "@id": "https://wavect.io/glossary/waterfall/#term"
      },
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        }
      ],
      "name": "Waterfall",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".gls-single__h1",
          ".gls-single__tldr"
        ]
      },
      "url": "https://wavect.io/glossary/waterfall/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/",
          "name": "Home",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/",
          "name": "Tech, product & engagement glossary",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/glossary/waterfall/",
          "name": "Waterfall",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "A sequential development model that runs a project as ordered phases, requirements, design, build, test, deploy, each finishing and signed off before the next begins. It commits to the full plan, cost, and date up front, before any code is written."
      },
      "name": "What is Waterfall?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Waterfall front-loads every decision and bets the plan is right, then resists change. Agile spreads decisions across short iterations and uses early feedback to correct course. Waterfall fits fixed, well-understood scope and regulated or hardware work. Agile fits anything where you do not yet know exactly what to build, which is most software."
      },
      "name": "Agile vs Waterfall?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "In product discovery. It assumes you can specify the right product before any user has touched it, which you almost never can. The wrong requirements only surface in the test phase, when changing them is most expensive, and you ship a product that matches the spec but misses the actual need."
      },
      "name": "When does Waterfall fail?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
