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

内容贡献者凯特Eby

2016年9月28日

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

瀑布法的历史

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

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

尽管Royce描述了这些缺陷,但是在1985年,当国防部发布DOD-STD-2167A时,瀑布成为首选方法。国防系统软件开发。它将软件开发周期描述如下:

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

前言指出:“本标准旨在动态地响应快速发展的软件技术领域。因此,这个标准应该被有选择地应用和裁剪,以适应每个软件获取程序的独特特征。”然而,这个要求是白纸黑字写出来的,并且严格遵守。

当行业领导者对其缺乏灵活性感到沮丧并开发了瀑布方法时,瀑布方法开始从流行的应用中消失敏捷宣言。从那时起,越来越多的公司采用了敏捷,但许多企业仍然坚持瀑布,这是有充分理由的。瀑布法有它的缺点,但它也有它的优点,在合适的环境下,它可以成为最佳实践。

项目管理指南

您的一站式服务,一切项目管理


准备好从你的项目管理工作中获得更多了吗?访问我们全面的项目管理指南,获取技巧、最佳实践和免费资源,以更有效地管理您的工作。欧宝体育app官方888

查看指南

瀑布式项目管理的好处

对于所有对瀑布的批评,它的实施确实有一些好处:

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

瀑布式项目管理的弊端

以下是关于Waterfall的一些主要问题和批评:

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

瀑布式与敏捷式的比较

瀑布法侧重于项目的设计阶段,而敏捷法只涉及到最少的设计时间。两种项目管理方式的目标都是交付可工作的软件,但是瀑布式项目通常一年交付一次或两次版本(甚至更少),而敏捷项目可以每周交付一次可工作的软件。Waterfall的交付量可能很大,需要很长时间的测试,许多公司还使用客户提供Beta测试。敏捷在软件构建时进行测试,开发人员经常执行测试。

一个重要的瀑布和敏捷的区别瀑布是一种方法论,而敏捷是一种“运动”,它包含了应用敏捷原则和价值的各种派生方法。Scrum极限编程(XP);看板,Scrumban,以及许多其他方法允许开发团队选择,因此在它们之间可能存在最佳选择。

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

敏捷的一些缺点是:

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

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

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

敏捷项目管理电子书

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

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

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

决定是采用瀑布式还是敏捷式,归根结底是要检查项目的特点和客户的需求。特别地,要密切关注项目的需求、目标和目的。在以下情况下,瀑布通常是更好的选择:

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


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

瀑布
瀑布方法通常被认为是项目管理的传统方法。瀑布模式是基于所有事情按顺序发生的概念,即项目的一个阶段在另一个阶段开始之前结束。这就产生了许多依赖关系,也导致了软件开发的一些相当灾难性的情况。项目经常落后于进度和超出预算,在某些情况下,由于技术变化太快而完全取消。

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

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

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

PMI项目管理知识体系®指南
PMI PMBOK®项目管理指导性方法应用了《项目管理知识体系指南》中PMI的五个过程组。以下是这些组的高级概述:

  • 启动——设定愿景。这也是选择项目经理的过程组。
  • 计划——设定范围。项目管理知识体系描述了规划阶段的24个过程。
  • 执行——把计划付诸行动。
  • 监视和控制——这发生在整个项目中,而不是等待另一个阶段结束的连续阶段。
  • 结束——在客户同意接受项目时发生。

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

Scrum
Scrum方法有一个小的敏捷团队,由一个Scrum Master。Scrum Master的角色是促进团队的工作。计划是最小的,并且创建了一个要工作的任务列表。任务以“冲刺”的形式完成,通常需要两到四周的时间。短暂的日常会议(称为每日scrum)是用来回顾一天的任务并确定障碍的。团队成员执行项目的所有传统任务,在进行时进行设计,在完成任务时进行测试。Scrum的目标是交出可以工作的软件。当一个Sprint结束时,下一个Sprint开始,团队从项目待办事项列表中绘制一组任务。当项目的总体目标已经实现,并且没有更多的任务时,项目就完成了。

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

极限编程(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演示