什么时候选择瀑布式项目管理而不是敏捷

内容贡献者凯特Eby

2016年9月28日

在非常流行的敏捷方法之前,有瀑布方法。瀑布被定义为一种顺序的或线性的软件开发方法,其中每个开发阶段都在下一个开发阶段开始之前完成。瀑布是一种直接的、合乎逻辑的产品开发方法。ob欧宝娱乐app手机下载在这种方法中,您决定要构建什么,计划构建,制定时间表,获取您的资源,分配资源,开发产品,把它交给测试团队,解决bug,然后发布它。欧宝体育app官方888ob欧宝娱乐app手机下载在此过程中,营销团队在对产品的预期中制造一些“嗡嗡声”,销售人员使客户相信新产品将解决他们的所有问题。ob欧宝娱乐app手机下载自从敏捷引入以来,瀑布方法并没有被经常使用,但是仍然有很多时候使用瀑布方法是有意义的。本指南将帮助你决定什么时候使用瀑布方法而不是敏捷方法。

瀑布法的历史

瀑布模式是一种要遵循的逻辑模式——按顺序计划、构建、测试和发布。瀑布的历史源于温斯顿·w·罗伊斯1970年在IEEE WESCON会议上发表的文章《管理》发展软件系统。Royce的文章可能是第一次讨论软件开发中的瀑布,尽管“瀑布”一词在文章中没有出现。正式术语是在Thomas E. Bell和T.A. Thayer 1976年发表于《第二届软件工程国际会议论文集》的论文中提出的,软件需求:它们真的是一个问题吗?.然而,正如许多地方所指出的那样,罗伊斯的论文并没有赞扬这种方法。事实上,他对它的描述并不谄媚,称它有缺陷,在很多方面都招致了失败。他继续讨论了一种更迭代的方法,这可能是后来成为敏捷方法

Bell和Thayer的论文讨论了软件需求开发中从自底向上到自顶向下的方法的变化,引用了MIL STD 490/483中采用的这种方法(MIL STD 490讨论了规范实践,MIL STD 483讨论了系统的配置管理实践)。本文主要是对这些方法进行实证检验,以确定哪种方法最有效。最后,这篇论文宣称“在过去的十年中,更多的结构和规程已经被采用,实践人员已经得出结论,自顶向下的方法优于过去的自底向上的方法。”“瀑布”一词直接指的是温斯顿·罗伊斯的论文。

尽管罗伊斯描述了瀑布法的缺陷,但在1985年,当国防部发布了DOD-STD-2167A,国防系统软件开发.它对软件开发周期的描述如下:

  1. 软件需求分析
  2. 初步设计
  3. 详细设计
  4. 编码和单元测试
  5. 计算机软件组件(CSC)集成与测试
  6. 去找找CSCI测试

该前沿声明:“本标准旨在动态响应快速发展的软件技术领域。因此,应该有选择地应用这个标准,并根据每个软件采办项目的独特特点进行调整。”然而,这一要求是白纸黑字写出来的,并得到了严格遵守。

当行业领导者对瀑布法的不灵活性感到沮丧时,瀑布法开始淡出大众的使用敏捷宣言.从那时起,越来越多的公司采用了敏捷,但许多企业仍然坚持使用瀑布法,这是有充分理由的。瀑布法有它的缺点,但也有它的好处,在合适的环境下,它可以成为最佳实践。

Smartsheet是一种更好、更敏捷的计划、跟踪和管理项目的方法

敏捷项目管理仪表板

Smartsheet是一个基于云的平台,它允许团队和组织计划、管理和报告项目,帮助您更有效地迭代并实现更多目标。参见Smartsheet的实际操作。

观看演示

瀑布式项目管理的好处

对于《瀑布》的所有批评,它的执行也有一些真正的好处:

  • 这是一种简单、直接的方法。
  • 开发一个管理瀑布项目的计划是很容易的,因为每个阶段都有开始和结束,你在编码之前就知道要开发什么,什么时候到期,什么时候开始测试等等。
  • 早期的规划为设计与外部系统集成的组件提供了良好的基础。
  • 为《瀑布》规划资源很容易,因为你知道所欧宝体育app官方888有事情的开始和结束时间。
  • 想要确定开始和结束日期的客户可以找到Waterfall。客户可以被告知产品在他们手中的日期,如果项目适合瀑布方法,它就会在那个日期交付。ob欧宝娱乐app手机下载
  • 开发成本可以提前确定。
  • 详细的程序可以用来规范过程的每一部分。
  • 《瀑布》强调设计的方法迫使开发者采用一种严格的方法进行开发,并明确了他们的期望。
  • 团队成员可以在他们的阶段开始之前或在他们的阶段结束之后参与其他项目,根据需要返回到项目中。
  • 对设计文档的依赖减少了开发人员流动带来的压力。
  • 重设计的方法意味着可以在设计阶段发现错误。这其中有明显的陷阱,任何使用过瀑布方法的人都知道设计错误会发生,但如果有一个经验丰富的团队,制定一个计划,你通常会得到一个可靠的设计,可以按照计划执行。

瀑布式项目管理的缺点

以下是关于《Waterfall》的一些主要担忧和批评:

  • 对于大型项目来说,发布的时间非常长。当涉及到小型内部项目时,Royce的论文对Waterfall很友好,但对于更大型、更复杂的项目,它却存在很大缺陷。事实上,这可能是敏捷变得如此流行的主要原因。通过瀑布法,太大的项目在完成之前就被取消了。
  • 对《瀑布》的第二大批评是,改变是不受欢迎的。一旦测试开始,返回开发或重新设计项目的成本是非常高的。在设计走得太远之前,必须仔细和正确地编写。
  • 工作软件直到项目后期才会出现。
  • 在项目早期编写的bug会给以后的代码带来很大的麻烦,但是直到测试开始时这些问题才会显现出来,这使得修复代码变得昂贵和耗时。
  • 它不是面向对象的方法。瀑布项目是高度集成的。这是瀑布模式降低灵活性的另一个方面。
  • 对于维护和其他类型的长期项目来说,这不是一个很好的方法。
  • 与上述批评同时出现的事实是,在项目开始之前,客户通常不知道他们想要什么。
  • 如果团队缺乏经验或进入了未知领域,那么障碍就会出现,给项目带来危险。
  • 为了保持进度,可能会对测试进行短时间的更改,这使得客户在产品交付后才会发现bug。ob欧宝娱乐app手机下载
  • 事态发展可能迫使整个项目被取消。例如,在开发阶段发生的行业变化可能会使整个项目过时。另一个事件可能是发现了一个非常严重的设计缺陷,以至于整个项目必须重新设计,这可能会导致客户拒绝该项目。

瀑布与敏捷的比较

瀑布方法专注于项目的设计阶段,而敏捷方法只需要最少的设计时间。两个项目管理选项都旨在交付可工作的软件,但是瀑布项目通常一年交付一到两次(甚至更少),而敏捷项目则可以每周交付一次。瀑布中的交付可能很大,需要很长时间的测试,许多公司也使用客户提供Beta测试。敏捷在软件构建时进行测试,通常由开发人员执行测试。

瀑布法和敏捷法的一个显著区别在于,瀑布法是一种方法论,而敏捷法是一种“运动”,包含了各种衍生方法,这些方法应用了敏捷法的原则和价值。Scrum,极限编程(XP),看板Scrumban,并且许多其他方法允许开发团队进行选择,因此可能存在其中的最佳选择。

当客户对需求不确定,或者想要密切参与开发过程,并且时间线很短而他们想要快速交付时,敏捷方法是一个更好的选择。如果存在复杂的依赖关系,瀑布法是更好的选择,但是当依赖关系很少时,敏捷法是更好的选择。如果速度比质量更重要,敏捷也是最好的。

敏捷的一些缺点是:

  • 需要客户的参与
  • 成本和时间表是不确定的
  • 规划是困难的
  • 最终结果不明确
  • 最小的文档
  • 团队成员必须是跨职能的——有些人在不熟悉的岗位上没有经验
  • 开发人员专注于单个项目
  • 范围渐变是一种风险——当项目欢迎变更时,它可能会失去控制,并超过到期日期

认为敏捷是与瀑布法截然不同的观点并不完全正确。敏捷方法实际上更多的是一种调整后的瀑布方法,它试图解决瀑布方法在抵制变更和较长的交付日期方面的一些缺点。缺乏灵活性和项目取消的高比率导致许多团队从瀑布模式转向敏捷模式。然而,重要的是要理解敏捷仍然采用顺序方法——它只是使用了更短的顺序。敏捷在一开始仍然包括一些需求分析和设计,但是直到需求和设计完成后才开始编码,并且您不能测试尚未编写的代码或交付尚未测试和集成的代码。因此,敏捷可以被认为是瀑布式项目管理的一种更灵活、更快速的形式。

为您的下一个使用敏捷方法的项目提供提示和最佳实践。

敏捷PM电子书

学习所有关于敏捷项目管理的知识,以及帮助您开始实施敏捷项目管理最佳实践的技巧。

获取免费的电子书来实现我的敏捷最佳实践

何时使用瀑布法进行项目管理

在瀑布法和敏捷法之间做出选择归根结底是对项目特征和客户需求的考察。特别地,密切关注项目的需求、目标和目标。瀑布通常是更好的选择:

  • 需求被很好地理解并且不太可能改变。
  • 客户不倾向于要求更改。
  • 客户不愿意参与开发,但希望在项目开始时得到咨询,并在项目结束时收到工作包。当客户参与到所有阶段(在每次迭代中检查产品)时,敏捷的效果最好,但是瀑布客户只需要收到一个版本并安装它。ob欧宝娱乐app手机下载(注意:这是一个简化。客户还必须接受使用系统的教育,这可能是一个漫长而重要的步骤。无论使用哪种方法,这都是一样的,可能一年一次或两次就一个较大版本的新特性向用户进行培训,比每月或甚至每周就一组较小的特性向用户进行培训的侵入性要小。另外,请记住,希望参与的客户可以参与到基于瀑布的项目中。让客户参与频繁的评审可能会分散注意力,并可能导致不必要的更改请求,但它也可以使项目专注于满足客户的需求。)
  • 这个项目很小。
  • 交货速度并不重要。
  • 交付将应用于不容易更改的遗留系统。
  • 将来您将有类似的项目,允许重用项目计划,并可以从前一个项目的大量文档中收集教训。


简要回顾顶级项目管理方法
瀑布法只是众多竞争方法中的一种。在做出实现其中一个或另一个的决定时,了解它们是什么是有帮助的。下面是目前使用的顶级项目管理方法的简要介绍。

瀑布
瀑布方法通常被认为是一种传统的项目管理方法。《瀑布》是基于所有事情都是按顺序发生的理念,即项目的一个阶段在另一个阶段开始之前结束。这就产生了许多依赖性,也导致了软件开发中一些相当糟糕的情况。项目经常落后于进度,超出预算,在某些情况下,当技术变化过快时,项目会被完全取消。

关键路径法(CPM)
CPM方法是另一种顺序方法,它假设每一步都依赖于前一步的完成。CPM项目的规划阶段更多的是关于识别项目中资源最密集的部分,以便分配资源并避免瓶颈。欧宝体育app官方888该方法的应用方法如下:

  • 确定所需的任务并定义完成它们的顺序。
  • 定义所需任务的依赖项。
  • 确定任务之间的关键关系和非关键关系。
  • 为每个任务安排预期的时间表。
  • 为关键路径制定B计划。

关键链项目管理(CCPM)
瀑布专注于设计,CPM专注于任务,而CCPM专注于资源和资源分配。欧宝体育app官方888CCPM集中于可能影响时间线、成本、性能和交付不足风险的因素。CCPM的方法是定义关键链,应用最有效的资源,最后为关键任务引入时间缓冲区,以便在出现问题时确保及时交付。欧宝体育app官方888

PMI项目管理知识体系®指南
PMBOK PMI®项目管理的指导方法应用了PMI的五个过程组,来自文本《项目管理知识体系指南》。以下是这些组织的高层概述:

  • 初始化-设置远景。这也是选择项目经理的过程组。
  • 计划——设定范围。项目管理知识体系描述了计划阶段的24个过程。
  • 执行——将计划付诸行动。
  • 监视和控制—这发生在整个项目中,而不是等待另一个阶段结束的顺序阶段。
  • 关闭——当客户同意接受项目时发生。

敏捷方法
敏捷被定义为一种运动,而不是一种方法,但是一系列敏捷方法是根据敏捷的价值观和原则开发出来的。

Scrum
Scrum方法有一个小型敏捷团队,由一名Scrum Master.Scrum Master的角色是促进团队的工作。计划是最少的,并创建了一个任务清单要工作。任务在“sprint”中执行,通常为两到四周。短暂的日常会议(称为每日scrum)是为了回顾一天的任务和识别障碍。团队成员执行项目的所有传统任务,一边进行设计,一边完成任务进行测试。Scrum的目标是交付工作软件。当一个Sprint结束时,下一个Sprint开始,团队从项目backlog中抽取一组任务。当总体项目目标得到满足且不再有其他任务时,项目就完成了。

看板
看板方法最适合于维护项目。看板方法的核心是看板板,它是所有任务的列表看板卡片)执行,并不断更新,并且容易被所有团队成员看到。当一个资源(团队成员)可用时,该团队成员从董事会中接过任务并进行处理。任务被添加到板上并持续进行。项目没有明确的开始或结束。

极限编程(XP)
sprint通常是一个星期的时间,包含多次迭代。在XP中,更改是关键,XP程序员与涉众密切合作。XP是需求不断变化的环境的理想选择。任务可以在sprint中期被替换。

适应性项目框架(APF)
APF假设IT项目变化如此广泛,没有一种方法是有意义的。IT项目在风险、成本、长度和复杂性方面有所不同,并且经常涉及市场、业务价值、客户参与和目标方面的不确定性。因此,一个APF项目从需求分析开始,以确定战略目标。项目迭代执行,在迭代之后执行事后分析,以改进流程。分析通常是持续进行的,因此整个项目可以在响应不确定性问题的过程中重新定义或调整,以维持或增加业务价值。

精益
精益旨在减少浪费和最大化价值。精益的核心价值是持续的增量改进和对人的尊重。精益专注于向客户交付最大的价值,维持流程,平均分配工作,最重要的是,消除浪费。

六西格玛
六西格玛是关于通过有效的过程和过程的持续改进来消除开发中的缺陷。六西格玛的评级意味着产品99.99966%无缺陷。ob欧宝娱乐app手机下载当你有一个具有六西格玛评级的过程时,这意味着通过这些产品交付的每个产品都可以预期实现相同的结果。ob欧宝娱乐app手机下载

精益六西格玛
精益六西格玛试图结合精益和六西格玛方法,消除浪费,使过程更有效,并向客户交付高价值和低缺陷。

基于过程的项目管理
在基于过程的项目管理中,重点是使每个项目与公司的使命和价值观保持一致。项目包含在公司战略中。因此,诸如度量等项目分析的传统方面被用来确定目标的满足程度。

PRINCE2
PRINCE2方法基于不太成功的PRINCE方法。PRINCE方法因为过于繁琐而没有被广泛采用,1996年由150个欧洲组织组成的委员会将其修订为PRINCE2。虽然PRINCE的目的是减少IT成本和时间超支,但它也是为任何类型的项目开发的项目管理方法。PRINCE2在2009年发布了一个重大修订,使方法更简单,并介绍了项目成功的七个基本原则。

项目整合可持续发展方法(PRiSM)
PRiSM专注于社会责任项目管理。其目的是管理项目,同时减少对环境的负面影响,促进对社会有益的项目。

利益实现
利益实现方法完全是关于客户的。从开始到结束,该方法寻求确保客户从交付物中获得最大利益,超过成本和时间。

许多项目管理方法等于许多机会

在项目管理的世界里有很多方法。随着软件行业变得更加复杂(方法和语言的多样性)和更简单(编写代码的方便性增加),大多数都围绕着新的方法和不同的需求发展起来。然而,旧的项目管理方法仍然在正确的环境中保留了它们的价值,这一点可以从仍然使用瀑布方法开发项目的公司中得到证明。在他们同意开发之前,许多客户仍然想知道它的成本和完成时间,他们还想知道它将包含什么内容。如果没有这些重要的信息,他们如何知道交付物是否具有任何商业价值?

为什么Smartsheet是瀑布式项目管理的强大工具

从简单的任务管理和项目计划到复杂的资源和投资组合管理,Smartsheet帮助您改善协作,提高工作速度——使您完成更多工作。

Smartsheet平台可以方便地在任何地方计划、捕获、管理和报告工作,帮助您的团队更有效地完成更多工作。报告关键指标,并在工作发生时通过滚动报告、仪表板和自动工作流来获得实时可视性,以保持团队的联系和消息灵通。

当团队清楚要完成的工作时,没有人知道在同样的时间内他们能多完成多少。今天就可以免费试用Smartsheet。

发现一个更好的方法来简化工作流程和消除竖井。

免费试用Smartsheet 获得一个免费的Smartsheet演示