
瀑布模型是一种顺序式过程模型,它把项目划分为从需求到运行的前后衔接的阶段。每个阶段都要等上一个阶段交付成果后才开始。Winston W. Royce 于 1970 年在 IEEE WESCON 会议上用七个步骤描述了这一顺序,并亲自指出其纯粹形式风险很高。
什么是瀑布模型?
瀑布模型是一种线性过程模型,项目按固定顺序把每个阶段只经历一次。一个阶段的成果就是下一个阶段的输入。在甘特图中,这会形成典型的阶梯形状,模型也因此得名。
一个项目要成为 瀑布模型,需要四个要素:
- 阶段:有明确开始和结束的环节,例如设计或测试。
- 交付成果:每个阶段产出的成果,例如需求规格说明书、设计说明书或测试报告。
- 里程碑:在每个阶段结束时由客户或项目负责人批准成果。详见术语表中的 项目管理中的里程碑。
- 结束到开始的依赖关系:阶段 2 在阶段 1 结束时开始。
瀑布模型从何而来?
瀑布模型源自软件工程。Winston W. Royce 于 1970 年在论文 Managing the Development of Large Software Systems(Proceedings IEEE WESCON,1970 年 8 月,第 1 至 9 页)中提出了这一模型。他的图 2 列出了七个步骤:系统需求、软件需求、分析、程序设计、编码、测试和运行。
Royce 认为这种纯粹的顺序很危险。他在图下方写道:“I believe in this concept, but the implementation described above is risky and invites failure”(我认同这个概念,但上述实施方式风险很高,容易导致失败)。他的理由是:最后的测试是系统第一次真实运行的时刻。如果此时发现设计缺陷,项目就会退回起点,按 Royce 的估计,进度或成本可能超出多达 100%。
作为补救,他建议增加五项措施:先做程序设计、把设计写成文档、做两遍(先做试点)、规划并监控测试、让客户正式参与。Royce 本人从未使用“瀑布”一词。据目前所知,这个词最早出现在 1976 年 Thomas E. Bell 和 T. A. Thayer 在第二届 International Conference on Software Engineering 上发表的论文中,该论文引用了 Royce。
瀑布模型有哪些阶段?
在实践中,瀑布模型通常有六个阶段:需求、设计、实现、测试、上线和维护。Royce 区分了七个步骤;教材常把系统需求和软件需求合并。关键在于每个阶段交付的成果。
| 阶段 | 交付成果 | 阶段结束时的里程碑 |
|---|---|---|
| 1 需求 | 需求规格说明书:系统要做什么? | 需求说明书获批 |
| 2 设计 | 设计说明书和架构:如何构建? | 设计获批 |
| 3 实现 | 完整可运行的系统 | 代码冻结 |
| 4 测试 | 测试报告、已修复的缺陷 | 验收通过 |
| 5 上线 | 已安装的系统、已培训的用户 | 正式上线 |
| 6 维护 | 运行期间的缺陷修复和更新 | 合同结束或系统替换 |
瀑布式项目示例是什么样的?
一家软件公司为房地产开发商开发客户门户,购房者可以在门户中查看装修选项和施工日期。开发商按固定价格付款,需求在签约前已经确定。项目到正式上线共 18 周。
以瀑布方式开发的客户门户
六个阶段、五个里程碑,所有阶段以结束到开始相连
示例中的三个数字说明了这个模型的特点:
- 延误:如果开发商晚一周批准需求说明书,正式上线就从第 18 周推迟到第 19 周。所有阶段都在关键路径上,因此任何延误都会推迟完工日期。
- 阶段比重:实现占 18 周中的 8 周(44%),测试只有 3 周(17%)。
- 返工:如果第 15 周的测试发现设计缺陷,团队必须重做设计(3 周)、实现(8 周)和测试(3 周),共 14 周;正式上线从第 18 周推迟到第 32 周,晚了 78%。这正是 Royce 所警告的风险。
有没有瀑布式项目模板?
有。Merlin Project 提供两个免费模板,用里程碑表示按阶段推进的项目。模板 软件开发 把开发项目分为评估、构思、规格、开发、测试和交付阶段,并用“规格完成”等决策里程碑分隔各阶段。模板 独栋住宅 把同样的逻辑用于施工进度计划,从初步设计一直到主体结构。
适用于 Merlin Project 的瀑布模板
该模板包含开发项目的典型阶段以及阶段之间的里程碑。下载文件,删除不需要的阶段,再添加您自己的活动即可。模板提供德语、英语、西班牙语和法语版本。
如果不使用 Merlin Project,也可以把示例结构复制成表格。每一行是一个活动或里程碑,“前置任务”一列定义结束到开始的依赖关系:
| 编号 | 活动 | 类型 | 工期 | 前置任务 |
|---|---|---|---|---|
| 1 | 收集需求 | 活动 | 3 周 | 无 |
| 2 | 需求说明书获批 | 里程碑 | 0 | 1 |
| 3 | 设计与设计说明书 | 活动 | 3 周 | 2 |
| 4 | 设计获批 | 里程碑 | 0 | 3 |
| 5 | 实现 | 活动 | 8 周 | 4 |
| 6 | 代码冻结 | 里程碑 | 0 | 5 |
| 7 | 系统测试与验收测试 | 活动 | 3 周 | 6 |
| 8 | 验收通过 | 里程碑 | 0 | 7 |
| 9 | 上线与培训 | 活动 | 1 周 | 8 |
| 10 | 正式上线 | 里程碑 | 0 | 9 |
| 11 | 维护 | 活动 | 持续 | 10 |
瀑布模型适用于哪些项目?
当需求在开始前已经确定、实施期间几乎不变时,瀑布模型最合适。典型场景包括建筑工程、需要行政审批的项目以及固定价格合同。盖房子时,屋顶一定在墙体之后,因为结构上不存在其他顺序。

适合采用瀑布模型的情况
- 客户和团队能在开始前以书面形式确定需求
- 主管部门、审计方或合同要求在固定节点审批
- 已约定固定价格或固定期限
- 物理依赖决定了先后顺序(先打地基,再砌墙)
不适合采用瀑布模型的情况
- 需求要通过用户反馈才能形成
- 团队需要尽早展示可运行的中间版本
- 项目期间市场或技术发生变化
- 测试太晚会导致代价高昂的返工,如上面的示例
瀑布、敏捷与混合模式有什么区别?
瀑布模型预先规划整个项目并在最后交付;Scrum 等敏捷方法按短周期规划,每个周期结束后交付可用的成果。混合式项目管理把两者结合起来:用阶段和里程碑搭建框架,在阶段内部以敏捷方式工作。
| 维度 | 瀑布 | 敏捷(如 Scrum) | 混合 |
|---|---|---|---|
| 规划 | 开始前规划整个项目 | 按冲刺规划,最长一个月 | 阶段预先规划,任务按阶段规划 |
| 变更 | 通过正式变更申请 | 随时通过待办列表 | 在阶段范围内 |
| 客户参与 | 在里程碑处 | 每次冲刺评审 | 在里程碑和评审时 |
| 交付 | 最后一次性交付 | 每个冲刺后 | 按阶段或版本 |
| 典型视图 | 甘特图 | 看板 | 甘特图与看板联动 |
团队如何搭建这种组合,请参阅关于 混合式项目管理 的文章。
如何在 Merlin Project 中规划瀑布式项目
Merlin Project 在工作分解视图中呈现瀑布结构:左侧是大纲,右侧是 甘特图。按以下步骤即可复现示例:
- 打开 视图 > 工作分解 > 条目,把每个阶段创建为一个组。用 Ctrl+Cmd+→ 把活动缩进到所属阶段下。
- 通过 插入 > 里程碑(Cmd+Alt+M)在每个阶段末尾添加里程碑。它在甘特图中显示为菱形。
- 按顺序选中各阶段和里程碑,然后选择 结构 > 链接 > 结束到开始(Ctrl+Cmd+L)。Merlin Project 会把所选项依次链接起来。
- 通过 视图 > 显示关键路线 突出显示决定上线日期的活动链。
- 在批准当天,把该日期填入项目设置的 参考日期 字段。此后,计划 / 实际比较(时间) 视图会显示相对于这份基准计划的每一项偏差。
工作分解中的阶段和里程碑
Merlin 文档中的示例展示了一个分三个阶段进行的办公室搬迁。每个组之后都有一个里程碑,甘特图中的箭头表示结束到开始的依赖关系。
无需额外步骤的基准计划
Merlin Project 把完整的项目历史保存在文档中。因此您无需手动保存基准计划:只要在参考日期字段中填入日期,灰色的参考图条就会显示当时计划的时间段。详见 计划与实际比较 课程。
在实现阶段,混合方式更有优势。按 F2 打开详细视图,在其中选择看板。在上方选中一个阶段后,下方看板只显示该阶段的活动。把卡片从“待办列表”拖到“完成”,Merlin Project 会把活动进度设为 100%,甘特图中的图条也会立即更新。
如果您对这篇博客文章有任何疑问或希望参与讨论,欢迎您在我们的论坛中发帖。
常见问题
瀑布模型有什么例子?
例如一个需求固定的客户门户:需求(3 周)、设计(3 周)、实现(8 周)、测试(3 周)和上线(1 周)依次进行。每个阶段都以“需求说明书获批”这样的里程碑结束,18 周后正式上线。建造独栋住宅也遵循同样的逻辑。
瀑布模型有哪些阶段?
实践中通常有六个:需求、设计、实现、测试、上线和维护。Winston W. Royce 在 1970 年列出了七个步骤,因为他把系统需求和软件需求分开。每个阶段都交付可检验的成果,例如需求说明书或测试报告。
瀑布模型适用于哪些项目?
适用于需求在开始前已确定、实施中很少变化的项目,例如建筑工程、需要行政审批的项目和固定价格合同。需求依赖用户反馈、或需要尽早展示中间版本的项目,更适合敏捷或混合方式。
有免费的瀑布式项目模板吗?
有。Merlin Project 的“软件开发”模板包含带决策里程碑的阶段,“独栋住宅”模板包含按阶段划分的施工进度计划。两者都可以在模板页面免费下载。Merlin Project 可免费试用 30 天。
瀑布模型是谁提出的?
这一顺序可追溯到 Winston W. Royce,他在 1970 年的论文“Managing the Development of Large Software Systems”中进行了描述。Royce 本人认为纯粹形式风险很高,并建议加入反馈和试点。“瀑布”这一名称最早由 Thomas E. Bell 和 T. A. Thayer 于 1976 年使用。
瀑布模型和敏捷有什么区别?
瀑布模型在开始前规划整个项目,并在最后一次性交付。Scrum 等敏捷方法以最长一个月的冲刺(Scrum 指南 2020)进行规划,每个冲刺后交付。混合方式以瀑布阶段为框架,在阶段内部以敏捷方式工作。