瀑布方法:综合指南

Atlassian 作者:Atlassian
浏览主题

如果您从事项目管理工作已经有一段时间了,那么您一定遇到过瀑布方法。这是一种起源于二十世纪七十年代的老派软件开发方法。

在瀑布流程中,必须先完成每个项目阶段,然后才能进入下一个阶段。这种方法非常僵化,而且是线性的。该方法在很大程度上依赖于所有需求和您在开始之前所做的思考。

如果您还没听说过,也不要担心。让我们分解一下瀑布方法,看看它是如何工作的。

什么是瀑布方法?

瀑布方法是一种完善的项目管理工作流程。就像瀑布向下倾泻一样,每个流程阶段按顺序经历五个阶段,即需求、设计、实施、验证和维护。

该方法是计算机科学家 Winston Royce 在二十世纪七十年代发表的关于软件开发的研究论文中提出的。尽管 Royce 从未将这种模型命名为“瀑布”模型,但他因创建了一个线性、严格的项目管理系统而受到赞誉。

与其他方法(例如敏捷开发方法)不同,瀑布方法不允许灵活性。您必须先完成一个阶段,然后才能开始下一个阶段。您的团队直到解决了所有问题才能向前推进。此外,正如我们的项目管理简介指南所概述的那样,如果您的团队已经进入下一个项目阶段,那么就无法解决 bug 或技术债务。

瀑布方法包含哪些阶段?

瀑布方法由五个阶段组成:需求、设计、实施、验证和维护。让我们分解一下瀑布开发的五个具体阶段,并了解为什么在进入下一个阶段之前完成每个阶段至关重要。

要求

需求阶段说明系统应该做什么。在此阶段,您需要确定从企业义务到用户需求的项目范围。这为您提供了广泛的视角来了解整个项目。要求应具体指明:

  • 项目所需的资源。
  • 每个团队成员将具体从事的工作以及所处的阶段。
  • 整个项目的时间线,概述了每个阶段需要多长时间。
  • 流程每个阶段的详细信息。

但是,这些需求中“可能既有非常抽象的数学规范,也有非常详细的数学规范”,欧道明大学计算机科学 Steven Zeil 教授写道。这是因为需求可能无法概述确切的实现,而这是开发在后期阶段需要解决的问题。

设计

收集完所有要求后,是时候进入设计阶段了。此时,设计人员负责开发满足要求的解决方案。在这个阶段,设计人员需要:

  • 创建时间表和项目里程碑。
  • 确定确切的可交付成果。
  • 为可交付成果创建设计和/或蓝图。

可交付成果可以包括软件,也可以由实体产品组成。例如,设计人员确定软件的系统体系结构和用例。对于实体产品,他们需要弄清楚其确切的生产规格。

执行

一旦设计最终确定并获得批准,就该实施了。设计将其规格交给开发人员进行构建。

为实现这一目标,开发人员需要:

  • 制定实施计划。
  • 收集构建所需的任何数据或研究。
  • 在团队之间分配具体任务和资源。

在这个阶段,您甚至可能会发现设计中的某些部分无法实施。如果问题很大,则必须退后一步,重新进入设计阶段。

核查

开发人员对设计进行编码后,该进入质量保证阶段了。请务必对所有用例进行测试,以确保良好的用户体验。这是因为您不想向客户发布有 bug 的产品。

QA 阶段还会:

  • 编写测试用例。
  • 记录所有要修复的 bug 和错误。
  • 一次测试一个方面。
  • 确定要跟踪的 QA 指标。
  • 涵盖各种用例场景和环境。

维护

产品发布后,开发人员可能必须消除 bug。如果出现任何问题,客户会告知您的支持人员。然后,由团队来处理这些请求并发布更新的产品版本。

如您所见,每个阶段都依赖于它之前的阶段。它不允许在阶段之间或阶段内出现太多错误。

例如,如果在您处于验证阶段时利益相关者想要添加需求,则您必须重新检查整个项目。这可能意味着需要推倒一切重来。

瀑布方法的优势

对于依赖固定成果的项目,瀑布方法所具有的优势使其成为一项持久工作流程。2020 年的一项调查发现,56% 的项目专业人员在上一年使用过传统模型或瀑布模型。

瀑布规划有以下几项优势:

  • 清晰的项目结构:由于需要严格的规划,因此瀑布方法几乎没有给混淆留有余地。您有一个明确的目标来努力实现。
  • 设定的成本:严格的规划可确保预先了解项目的时间和成本。
  • Easier tracking: Assessing progress is faster because there is less cross-functional work. You can even manage the entirety of the project in a Gantt chart, which you can find in Jira.
  • 可复制的流程:如果一个项目成功,您可以再次将该流程用于另一个具有类似要求的项目。
  • 全面的项目文档:瀑布方法为您提供了蓝图和历史项目记录,因此您可以全面了解项目。
  • 改善风险管理:充足的前期规划可以降低风险。它使开发人员能够在编写任何代码之前发现设计问题。
  • 加强责任和问责制:团队在每个流程阶段承担责任。每个阶段都有一套明确的目标、里程碑和时间线。
  • 适合非专业员工更精准地执行:瀑布方法使经验不足的团队成员能够参与流程。
  • 减少因额外需求而导致的延迟:由于您的团队事先知晓需求,因此利益相关者或客户不可能提出其他要求。

瀑布方法的局限性

瀑布方法并非没有局限性,因此许多产品团队会选择敏捷开发方法。

瀑布方法为可预测的项目创造了奇迹,但在具有许多变量和未知数的项目中却以失败告终。让我们来看看瀑布规划的其他一些局限性:

  • 交付时间更长:与敏捷开发或精益等迭代流程不同,这种方法采用不灵活的分步流程,因此最终产品的交付时间可能比平时要长。
  • 创新的灵活性有限:任何意外事件都可能给使用这种模型的项目带来厄运。一个问题可能会使项目后退两步。
  • 客户反馈的机会有限:需求阶段完成后,项目就不在客户手中了。
  • 大量的功能请求:由于客户在项目执行过程中几乎没有发言权,因此启动后可能会有很多更改请求,例如在现有代码中添加新功能。这可能会造成进一步的维护问题并延长发布时间。
  • 错过截止时间:如果一个阶段存在重大问题,一切都会陷入停顿。在团队解决问题之前,任何事情都无法向前推进。它甚至可能要求您回到前一个阶段来解决问题。

下面是使用瀑布方法的项目的图示。如您所见,该项目被分成了几个僵化的时间段。这种僵化营造了这样一种环境,它鼓励开发人员、产品经理和利益相关者请求在每个时间段中分配的最大时间量,因为将来可能没有机会进行迭代。

瀑布式发布示例 | Atlassian 敏捷教练

瀑布方法与敏捷项目管理有何不同?

敏捷项目管理和瀑布方法具有相同的最终目标,即清晰的项目执行。瀑布规划将团队分为几个阶段,而敏捷项目管理允许在项目的多个阶段进行跨职能工作。团队不是按照僵化的步骤工作,而是按照规划、执行和评估的周期工作,随着项目的推进而迭代。

"敏捷宣言"解释了敏捷开发方法相较于瀑布模型的优势:

  • 个体和互动高于流程和工具
  • 工作的软件高于详尽的文档
  • 客户合作高于合同谈判
  • 通过遵循计划应对变化

If you're looking for tools that support Agile project management and serve the same end goal as Waterfall, consider Jira. It’s best suited for Agile projects, and helps you:

  • 跟踪工作:借助甘特图高级路线图、时间线和其他各种工具,您可以轻松跟踪整个项目的进度。
  • 让您的团队保持一致:通过跟踪,您可以跨业务团队无缝进行规划,让所有人就共同的目标保持一致。
  • Manage projects and workflows: With Jira, you can access project management templates that you can use for your Agile workflows.
  • 在每个阶段进行规划:Atlassian 推出了另一款产品 Jira Product Discovery,该产品提供产品路线图,用于在从发现到交付的每个阶段规划产品功能并确定相应功能优先级。

Atlassian's Agile tools support the product development lifecycle. There are even Agile metrics for tracking purposes. Jira lets you drive forward the Agile process. It uses intake forms to track work being done by internal teams and offers a repeatable process for requests.

这些 Jira 产品以原生方式集成在应用中,可使团队保持统一,加快工作速度。

使用敏捷开发项目管理方法

长久以来,一直在项目管理中应用的是瀑布式开发,但这种方法却往往不是现代软件开发人员的正确选择。敏捷开发方法提供了更大的灵活性。

以下是大多数团队更喜欢敏捷开发流程的原因:

  • 能够根据变化灵活调整:如果出现问题,团队能够更好地即时做出调整。而瀑布式开发过于僵化,难以应对出现的问题。
  • 拥有持续的反馈循环:持续改进离不开反馈循环。借助敏捷开发方法,您可以在开发过程中收集利益相关者的反馈并相应地进行迭代。
  • 加强沟通:在敏捷开发流程中,团队可以协同合作。瀑布式开发是在不同团队之间按顺序进行的一系列线性工作,难以实现有效沟通。


Here is where a project management tool such as Jira comes in handy for an Agile methodology. You can also use a project management template for your Agile projects. Your team can plan, collaborate, deliver, and report on projects in one tool. That keeps everyone aligned throughout any project and streamlines project management.

瀑布式开发方法:常见问题

瀑布式开发方法最适合哪些人?

那些最适合采用瀑布式开发方法的项目经理,所管理的项目应具有以下特点:

  • 目标不太复杂:没有复杂要求的项目最适合使用瀑布式开发。
  • 结果可预测:瀑布式开发最适合可复制且经过验证的项目。
  • 项目范围蔓延的可能性较低:客户不太可能在最后一刻提出要求的项目适合使用瀑布式开发。

瀑布式开发方法最适合哪些人?

敏捷开发非常适合那些灵活的、具有迭代思维的团队,例如:

  • 跨职能团队:一支由具有不同技能的人员组成的团队,他们能够处理项目的各个方面。这些人员都是协作型人员,能灵活变通。
  • 自组织团队:不需要太多手把手领导的自主团队。他们明白项目中有许多不确定之处,是解决问题的能手。这种思维方式也会让他们从结果出发,为结果多加考虑。
  • 初创企业和小型企业:这些企业受益于“快速行动和打破现状”的思维方式。因此,他们可以快速试错、从中学习,而后做出改进。

最后,敏捷开发也非常适合以客户为中心的项目,开发人员可以根据客户提出的意见随时进行迭代。

在实施项目管理方法之前,我应该考虑哪些因素?

在决定要在项目管理中采用哪种方法更合适的时候,需要考虑四个主要因素:项目复杂性、组织目标、团队具备的专业知识和和利益相关者的参与情况。

我们来详细说明一下:

  • 项目复杂性:瀑布式开发可以帮助将更大、更复杂的项目分解为较小的期望和目标集。但是这种方法过于僵化,无法很好地应对未知事项或变化。而敏捷开发更适合有许多变数的复杂项目。
  • 组织目标:您的组织想要实现什么?是寻求创新还是保持现状?如果您的组织想打破孤岛,最好采用敏捷开发方法。这样,团队将会更好地开展协作,并拥有更大的自主权。
  • 团队专业知识:如果您的团队是跨职能的,并且可以跨技能工作,那么敏捷开发方法是上佳之选。如果您的团队成员特别依赖某个技能组合,那么瀑布式开发可能是更好的选择。
  • 利益相关者的参与:如果您的利益相关者更倾向于亲自参与,那么敏捷开发方法最适合您,因为该方法支持持续的反馈和迭代。
后续内容
Scrum 速度