方法

Waterfall

一种顺序式开发模型,每个阶段(需求、设计、构建、测试、部署)在下一个阶段开始之前完成。对范围固定且充分理解的工作很扎实,对产品探索则很糟糕。

最近审阅: 2026-06-02 审阅人Kevin Riedl wiki ↗

Waterfall 把一个项目作为一连串有序的阶段来执行:先收集所有需求,然后设计整个系统,然后构建它,然后测试它,然后部署它。每个阶段产出一份签署确认的文档,并在下一个阶段开始之前完成。它的吸引力显而易见:你预先就知道计划、成本和日期,而且所有人在写下一行代码之前都达成一致。

它对某些工作仍然有正当的适用之处。当范围真正固定且被充分理解时,当监管方要求预先的文档和可追溯性时,或当你在构建硬件、金属切下后无法廉价迭代时,顺序式阶段就是诚实的模型。把这样的项目假装成"敏捷",只是把计划藏了起来,而不是把它去掉。

它在产品探索上失败得很惨。致命的假设是,你能在任何用户接触它之前就预先把正确的产品规范定下来。你几乎永远做不到。等到构建阶段结束时,几个月前收集的需求已经有一部分是错的,而 Waterfall 没有廉价的办法在测试阶段之前发现这一点,那时改动任何东西都很昂贵。你得到的是一个符合规范却错失需求的产品。

与敏捷诚实的区分:Waterfall 把所有决策前置,并赌它们是对的。敏捷把决策分散到整个工作过程中,并赌早期反馈会抓住错误的决策。对于任何你还不确切知道该构建什么的事情,这个赌注偏向敏捷。对于任何答案真正已知且固定的事情,Waterfall 的可预测性是一个优点,而不是缺陷。

// FAQ

常见问题

常见问题

一种顺序式开发模型,把一个项目作为有序阶段来执行,即需求、设计、构建、测试、部署,每个阶段在下一个开始之前完成并签署确认。它在写代码之前就预先承诺完整的计划、成本和日期。
Waterfall 把每个决策前置并赌计划是对的,然后抗拒改变。敏捷把决策分散到短迭代中,并用早期反馈来修正方向。Waterfall 适合范围固定且被充分理解的工作以及受监管或硬件类工作。敏捷适合任何你还不确切知道该构建什么的事情,而那是大多数软件。
在产品探索中。它假设你能在任何用户接触它之前就规范出正确的产品,而你几乎永远做不到。错误的需求只在测试阶段才浮现,那时改动它们最昂贵,于是你交付了一个符合规范却错失真实需求的产品。