瀑布模型指南:优缺点和适合的团队领域
如果你在项目管理这一领域有一定的经验,那么你肯定不陌生于瀑布模型这一概念。它是一种诞生于 1970 年代的传统软件开发方法。 在使用瀑布模型的过程中,必须按顺序完成每个项目的阶段,之后才能进入下一阶段。这种方法是非常严格且按部就班的。它极度依赖于项目开始前完成的所有需求收集和前期规划。 如果对此还不太了解,也没关系。下面将详细介绍瀑布模型以及其工作原理。
什么是瀑布模型方法论?
瀑布模型方法论是一个经过时间检验的项目管理流程。它的工作方式类似于瀑布,过程中的每一个阶段都会顺序地向下传递,分成五个主要阶段:需求收集、设计、实现、验证以及维护。 这个方法是基于 1970 年计算机科学家 Winston Royce 关于软件开发的研究而来的。虽然 Royce 本人并没有把这个模型称作“瀑布”,但他因为构建了这样一个有条不紊、严谨的项目管理框架而被广泛认可。 不同于敏捷方法论这样的其他方法,瀑布模型不提供太多的灵活性。在移向下一个阶段之前,必须彻底完成当前阶段的工作。团队在没有解决现有问题之前,不能进行到下一步。而且,一旦团队进入了项目的下一阶段,就无法回头去解决之前阶段的 BUG 或技术欠缺,正如项目管理入门指南中所描述的那样。
瀑布模型的阶段有哪些?
瀑布模型由五个阶段组成:需求、设计、实现、验证和维护。接下来,将详细介绍瀑布开发的这五个阶段,并解释为什么必须在前往下一阶段之前彻底完成当前阶段的重要性。
需求
需求阶段用来界定系统的功能和目标。在这个阶段,会确定项目的全范围,涵盖从商业责任到用户需求的各个方面,为整个项目提供一个宏观视图。需求阶段需要明确指出:
项目需要哪些资源。
各个团队成员在项目的哪个阶段负责什么工作。
整个项目的时间安排,包括每个阶段需要的时间长度。
过程中每个阶段的具体细节。
然而,正如 Old Dominion University 计算机科学教授 Steven Zeil 指出的,这些需求的描述可能会从非常笼统到非常具体的数学规格不等。这意味着,需求阶段可能不会提供一个精确的实施计划,具体的实施方案需要在项目后续阶段中进一步明确和解决。
设计
在所有需求被收集完毕之后,项目将进入设计阶段。这个阶段中,设计师会制定出符合需求的解决方案。具体来说,设计师将会:
制定项目的时间表和关键里程碑。
明确需要交付的具体成果。
为这些成果制作设计方案或图纸。
这些成果可能是软件,也可能是实体产品。比如,在软件方面,设计师会确定系统的架构和使用案例;而对于实体产品,他们则会确定产品生产的具体规格。
实现
在开发人员完成编码并实现设计之后,接下来就是进行质量保证的步骤。对所有的使用案例进行测试非常关键,这是为了确保用户能有一个良好的体验,因为肯定不希望向客户交付一个有缺陷的产品。 质量保证的工作包括:
编制测试用例。
记录下需要修正的任何错误和缺陷。
一次针对一个特定方面进行测试。
确定需要追踪的质量保证指标。
测试不同的使用场景和环境。
运维
产品发布之后,开发人员可能需要修正出现的错误。客户通过支持团队报告任何问题。接着,团队要处理这些反馈并发布产品的更新版本。 如所观察到的,每一个阶段都依赖前一个阶段。这个过程不允许在阶段之间或阶段内出现太多的错误。 比如,在验证阶段,如果有一个利益相关者提出了一个新的需求,就必须重新评估整个项目。这可能意味着要放弃目前的进展,重新开始。
瀑布模型的好处
瀑布模型之所以成为一种长期使用的工作流程,尤其是对于那些需要固定结果的项目,是因为它带来的好处。一项 2020 年的调查显示,在过去的一年里,有 56%的项目管理专业人士使用了传统方法或瀑布模型。 瀑布模型规划的好处主要包括:
清晰的项目结构:严格的计划使得项目结构清晰明了,几乎不留下混乱的空间,确保了向一个明确的目标前进。
固定成本:通过详细的计划,项目的时间和成本都能够提前确定。
易于追踪:由于跨功能的工作较少,使得项目进度更容易评估和追踪。可以使用甘特图在 Jira 软件中管理整个项目。
可复制性:一旦某个项目成功,其过程就可以复制用于另一个具有相似需求的项目。
全面的项目文档:提供了项目的蓝图和历史记录,让整个项目的回顾变得全面。
风险管理改进:大量的前期规划帮助降低了项目风险,使得在编写代码之前就可以发现设计上的问题。
责任与问责增强:团队在每个阶段都需要承担责任,每个阶段都设定了明确的目标、里程碑和时间线。
对非专家的执行更准确:瀑布模型允许那些经验较少的团队成员更好地融入项目流程。
因附加需求导致的延迟减少:由于团队提前清楚地了解需求,利益相关者或客户后续的额外要求得以减少。
瀑布模型的局限性
瀑布模型虽然在一些情况下非常有效,但它也有自己的局限性,这就是为什么很多产品团队更倾向于选择敏捷方法论。 对于那些可预测的项目,瀑布方法能够带来显著的效果。但是,对于那些变数多、不确定因素多的项目,它的表现就不那么理想了。瀑布规划还有一些其他的局限性,包括:
更长的交付时间:因为必须严格按照步骤一步步来,不像敏捷或精益那样是迭代的过程,所以最终产品的完成可能需要更长的时间。
创新灵活性有限:任何不预期的事件都可能对使用这种模型的项目造成重大影响。一个小问题都有可能让项目大幅度回退。
客户反馈机会有限:需求阶段一旦结束,项目就不再由客户直接控制。
大量的功能请求:因为客户在项目执行过程中基本没有机会提出意见,所以在产品发布后,可能会收到很多关于新增功能的变更请求。这不仅会引起更多的维护问题,还可能延迟产品的发布。
截止日期的推迟:如果项目的某个阶段遇到了重大问题,整个项目就会停滞不前。在团队解决这个问题之前,项目的任何部分都无法继续进行。有时候,甚至需要回到某个之前的阶段去解决这个问题。
下面是一个采用瀑布方法进行的项目的例子。可以看到,整个项目被分割成了一系列固定的时间段。这样的刚性安排使得开发人员、产品经理和其他相关方倾向于在每一个时间段内要求尽可能多的时间,因为他们意识到未来可能没有机会对工作进行迭代修改。
![](https://static001.geekbang.org/infoq/74/74e1d33fbcce15b1861b421be2fdd06a.png)
瀑布方法与敏捷项目管理有何不同?
敏捷项目管理和瀑布方法论的最终目的都是实现项目的清晰和明确执行。瀑布方法将工作分成了连续的阶段,每个阶段完成后才能进行到下一个,而敏捷方法支持跨阶段的跨功能合作。敏捷团队不是简单地遵循固定的步骤,而是通过规划、执行和评估的循环方式来进行迭代工作。 “敏捷宣言”强调了敏捷方法相比瀑布方法的几个优点:
重视个人间的交互多于流程和工具;
重视能够工作的软件多于详尽的文档;
重视与客户的合作多于合同谈判;
重视对变化的响应多于遵循一个预设计划。
如果你在寻找一款既支持敏捷项目管理又能支持瀑布模型的项目工具,那么 PingCode 是个不错的选择。它特别适合于敏捷项目,同时又支持瀑布项目。
![](https://static001.geekbang.org/infoq/23/23a184d258bad9a00517f24ccf6382cb.png)
PingCode 能够帮助你进行以下操作:
跟踪工作:利用甘特图、高级路线图、时间线以及其他多种工具,可以方便地追踪项目的进展。
团队协同:跟踪功能使得跨业务团队的计划更加无缝,确保团队成员都朝着相同的目标努力。
管理项目和工作流:PingCode 提供了适用于敏捷工作流的项目管理模板,方便使用。
各阶段的规划:PingCode 另一款子产品——产品管理提供了产品路线图,用于规划和确定每个阶段产品功能的优先级,从发现阶段到交付阶段。
PingCode 的敏捷工具全面支持产品开发的生命周期,并提供了用于追踪的敏捷指标。
采用敏捷方法进行项目管理
瀑布模型虽然在项目管理领域有悠久的历史,但对于现代软件开发者而言,往往并非最理想的选择。相比之下,敏捷方法论则提供了更大的灵活性。 许多团队偏爱敏捷方法的原因包括:
适应性强:遇到问题时,团队能够更加灵活地做出调整。相对于瀑布模型的固定性,敏捷方法让应对障碍变得更加容易。
持续的反馈机制:持续改进需要不断的反馈。通过敏捷方法,可以在整个过程中收集来自利益相关者的反馈,并根据反馈进行迭代。
沟通更加顺畅:敏捷过程中团队成员协作紧密。而瀑布模型中,不同团队之间的工作交接可能会阻碍有效的沟通。
这就是为什么像 PingCode 这类项目管理工具在敏捷方法论中特别有用。你还可以利用项目管理模板来管理你的敏捷项目。团队可以利用同一个工具进行项目的规划、协作、交付和报告,这不仅保证了项目过程中每个人的步调一致,也简化了项目管理流程。
瀑布方法论最适合谁?
瀑布模型特别适合以下类型项目的项目经理:
目标简单明了:适用于那些需求简单、不太复杂的项目。
结果可预测:最适合那些可以重复并且已经被验证过的项目。
项目范围不易变动:适合于那些客户不太可能在最后关头提出新需求的项目。
敏捷方法论最适合谁?
敏捷方法论特别适用于那些拥有迭代思维的敏捷团队,比如:
跨职能团队:这样的团队由具备多种技能的成员组成,他们能够在项目的不同方面发挥作用。这类团队成员擅长合作并且适应性强。
自组织团队:这种团队能够自我管理,不需要过多的外部指导。他们能够应对项目中的不确定性,并且是优秀的问题解决者。这样的心态还使他们对项目结果拥有更大的主导权。
初创公司和小企业:这类公司倾向于采取“快速行动,快速失败”的策略,从而能够迅速从失败中学习并作出改进。
最后,敏捷方法在那些客户反馈对项目迭代至关重要的以客户为中心的项目中,表现尤为出色。
在实施项目管理方法前我应该考虑哪些因素?
在选择项目管理方法时,需要考虑四个主要因素:项目的复杂性、组织的目标、团队的专业技能以及利益相关者的参与程度。
项目复杂性:瀑布模型适用于将大型复杂项目分解成更小的、明确的目标和期望,但对于需要应对许多未知因素和变化的复杂项目,敏捷方法更加合适。
组织目标:考虑你的组织是想要创新还是维持现状。如果目标是打破部门间的隔阂,敏捷方法能够通过促进更加紧密和自主的团队合作来实现这一点。
团队专业知识:对于跨职能、能跨领域工作的团队,敏捷方法是一个很好的选择。如果团队成员更多依赖于特定的技能集,那么瀑布模型可能更适合。
利益相关者参与:如果预期利益相关者会更积极地参与,敏捷方法能够通过支持持续的反馈和项目迭代来更好地满足这一需求。
评论