Waterfall
一种顺序式开发模型,每个阶段(需求、设计、构建、测试、部署)在下一个阶段开始之前完成。对范围固定且充分理解的工作很扎实,对产品探索则很糟糕。
最近审阅: 2026-06-02
审阅人Kevin Riedl
wiki ↗
Waterfall 把一个项目作为一连串有序的阶段来执行:先收集所有需求,然后设计整个系统,然后构建它,然后测试它,然后部署它。每个阶段产出一份签署确认的文档,并在下一个阶段开始之前完成。它的吸引力显而易见:你预先就知道计划、成本和日期,而且所有人在写下一行代码之前都达成一致。
它对某些工作仍然有正当的适用之处。当范围真正固定且被充分理解时,当监管方要求预先的文档和可追溯性时,或当你在构建硬件、金属切下后无法廉价迭代时,顺序式阶段就是诚实的模型。把这样的项目假装成"敏捷",只是把计划藏了起来,而不是把它去掉。
它在产品探索上失败得很惨。致命的假设是,你能在任何用户接触它之前就预先把正确的产品规范定下来。你几乎永远做不到。等到构建阶段结束时,几个月前收集的需求已经有一部分是错的,而 Waterfall 没有廉价的办法在测试阶段之前发现这一点,那时改动任何东西都很昂贵。你得到的是一个符合规范却错失需求的产品。
与敏捷诚实的区分:Waterfall 把所有决策前置,并赌它们是对的。敏捷把决策分散到整个工作过程中,并赌早期反馈会抓住错误的决策。对于任何你还不确切知道该构建什么的事情,这个赌注偏向敏捷。对于任何答案真正已知且固定的事情,Waterfall 的可预测性是一个优点,而不是缺陷。
// FAQ