项目管理中的瀑布模型:阶段、示例与模板

瀑布式项目计划:每个阶段在上一阶段结束时开始

瀑布模型是一种顺序式过程模型,它把项目划分为从需求到运行的前后衔接的阶段。每个阶段都要等上一个阶段交付成果后才开始。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 周。

以瀑布方式开发的客户门户

六个阶段、五个里程碑,所有阶段以结束到开始相连

阶段
第1周35791113151719
1 需求
3 周
2 设计
3 周
3 实现
8 周
4 测试
3 周
5 上线
6 维护
持续
关键路径运行◆ 里程碑
每个阶段都依赖上一阶段的里程碑。六个阶段全部位于关键路径上,没有任何浮动时间。

示例中的三个数字说明了这个模型的特点:

  1. 延误:如果开发商晚一周批准需求说明书,正式上线就从第 18 周推迟到第 19 周。所有阶段都在关键路径上,因此任何延误都会推迟完工日期。
  2. 阶段比重:实现占 18 周中的 8 周(44%),测试只有 3 周(17%)。
  3. 返工:如果第 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 在工作分解视图中呈现瀑布结构:左侧是大纲,右侧是 甘特图。按以下步骤即可复现示例:

  1. 打开 视图 > 工作分解 > 条目,把每个阶段创建为一个组。用 Ctrl+Cmd+→ 把活动缩进到所属阶段下。
  2. 通过 插入 > 里程碑(Cmd+Alt+M)在每个阶段末尾添加里程碑。它在甘特图中显示为菱形。
  3. 按顺序选中各阶段和里程碑,然后选择 结构 > 链接 > 结束到开始(Ctrl+Cmd+L)。Merlin Project 会把所选项依次链接起来。
  4. 通过 视图 > 显示关键路线 突出显示决定上线日期的活动链。
  5. 在批准当天,把该日期填入项目设置的 参考日期 字段。此后,计划 / 实际比较(时间) 视图会显示相对于这份基准计划的每一项偏差。
Merlin Project 的工作分解视图,三个阶段作为组,每个阶段末尾有一个里程碑,甘特图中显示结束到开始的依赖关系

工作分解中的阶段和里程碑

Merlin 文档中的示例展示了一个分三个阶段进行的办公室搬迁。每个组之后都有一个里程碑,甘特图中的箭头表示结束到开始的依赖关系。

Merlin Project 的计划与实际比较时间视图,显示每个活动的计划工期和预计工期

无需额外步骤的基准计划

Merlin Project 把完整的项目历史保存在文档中。因此您无需手动保存基准计划:只要在参考日期字段中填入日期,灰色的参考图条就会显示当时计划的时间段。详见 计划与实际比较 课程。

在实现阶段,混合方式更有优势。按 F2 打开详细视图,在其中选择看板。在上方选中一个阶段后,下方看板只显示该阶段的活动。把卡片从“待办列表”拖到“完成”,Merlin Project 会把活动进度设为 100%,甘特图中的图条也会立即更新。

Merlin Project 上方为工作分解视图,下方详细视图中为所选阶段的看板

上方瀑布,下方看板

上方是带里程碑的阶段计划,下方是所选阶段的 看板。两个视图显示同一批活动,任何修改都会立即同时反映在两处。


如果您对这篇博客文章有任何疑问或希望参与讨论,欢迎您在我们的论坛中发帖。

常见问题

瀑布模型有什么例子?

例如一个需求固定的客户门户:需求(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)进行规划,每个冲刺后交付。混合方式以瀑布阶段为框架,在阶段内部以敏捷方式工作。

规划项目, 让计划真正奏效。

一款管理项目计划的应用,在所有 Apple 设备上原生运行。