文/明道团队

什么是瀑布开发?

瀑布开发适用于按序线性开发的项目,尤其是有明确开发生命周期(SDLC)的项目,比如软件工程、IT项目。我们可以用甘特图来记录每项任务的开始和结束。瀑布开发过程分为7个阶段,每当一个阶段的任务完成后,研发团队才会开始下一阶段工作。瀑布开发如果在某个阶段中出错就必须回到规划阶段从头再来,而不是返回上个阶段。团队在每次进入下阶段前,可能都需要客户对产品需求进行审查和批准。

 

瀑布开发的优点

瀑布所拥有的线性和刚性两个特点,以及所用到深度开发文档,使其适用于简单且没有变动的项目。

瀑布的优点包括:

  • 易于使用和管理:由于瀑布开发在每个项目中都遵循相同的顺序,因此易于使用。用瀑布开始项目前,团队不需要任何知识预备或培训。由于瀑布开发在每个阶段都有指定的交付产品并对产品进行评审,因此易于管理和控制。
  • 交付时间严格:瀑布开发有明确的项目起止时间,因此很容易和客户、利益方分享并跟踪项目进度。在开始研发前我们对产品需求、产品设计进行深入研究,帮助团队减少错过交付日的风险。
  • 有详细的文档留底:瀑布要求每个阶段都要有文档记录,从而更好地理解代码和测试背后的逻辑。如果利益方想要详细了解过程中的某个阶段时,这些文档也就派上用场了。

瀑布开发的缺点

瀑布最大缺点在于难以应对需求的改变。由于瀑布是一个线性开发模式,不能够在相邻两阶段内来回切换,即使出错也不能退回上一阶段, 只能一条路走到黑。瀑布有下面这些缺点:

不适应改变:当团队完成某阶段的所有任务后,由于是线性开发,也就意味着这个阶段回不了头了。当他们在测试阶段才发现少了某个功能时,退回再修复需要付非常大的代价。

  • 直到后期才交付软件:项目必须要先进行前置的2到4个阶段才会开始研发。等于相关者要到项目后期才能看到能交付的产品。
  • 收集准确的要求可能是一个挑战:瀑布开发的第一阶段是由项目经理和客户、利益相关方探讨产品需求。在项目初期对产品做非常精准的定位本身就很难。甚至很多时候客户不知道他们想要什么,他们会随着项目的开展才能慢慢了解。

 

瀑布开发的阶段

瀑布开发有七个阶段,都必须按序进行。例如,如果研发团队正处于测试阶段,他们不能回到需求阶段。

  1. 概念阶段:这个阶段需要提出一个想法。概念阶段包括项目的粗略评估,为什么它是有益的,和相应的产品预算。
  2. 启动阶段:一旦想法落地,下一步我们需要找合适的项目团队来执行,和他们确认产品目标、产品范围、产品目的和最终交付的结果。
  3. 需求收集阶段:收集和分析需求并评估项目是否真的可行。所有这些信息都记录在需求说明文档中。
  4. 产品设计阶段:在这一阶段研发团队已经开始编写代码了。我们要对需求进行研究和评估,并准备设计系统。这时团队的目标是要清楚要做什么和产品雏形应该什么样。
  5. 研发阶段:真正开始研发写代码的阶段,产品在设计阶段所产出的流程图或算法在这阶段都需要被翻译为程序语言。
  6. 测试阶段:代码完成后,需要测试软件是否有任何错误。测试完成后,软件将交付给客户。有些团队可能会选择包含用户验收测试(UAT),用户在将测试软件部署到公众之前对其进行测试。
  7. 维护阶段:一旦客户在现实世界中使用该软件,他们可能会发现其他问题。开发团队需要解决,更改或修改软件才能继续有效。

 

迭代瀑布开发

传统瀑布模型中,团队这一理念贯穿项目的每个阶段。例如,团队一起对整个项目进行分析,然后一起为整个项目进行设计等。

在迭代瀑布模型中,仍然需要很多前期规划。一旦计划完成,团队会遵循和传统瀑布相同的模式,但会为用户故事逐一做分析、设计和研发。然后进行下一个用户故事再重复这个过程。这个过程能够有效的将任务进行分解,帮助研发团队更好去执行。

 

瀑布如何处理软件需求

瀑布开发开始项目前需要提前了解软件的所有需求。所有的需求没有收集齐时,整个项目就不会开始进入下一阶段。

有些瀑布开发项目会有专门团队去和客户沟通,通过调查问卷、面谈、电话、白板或建模工具来收集他们的需求。

一旦确定了最初的需求,团队应该生成一个需求说明文档(有时他们可能会创建多个)。本文档向团队传达最终需要交付的内容,以便每个人都了解项目的范围。

 

推荐内容

《打造敏捷开发模式》第一章:什么是敏捷

《打造敏捷开发模式》第二章:什么是Scrum

 

文章来源:smartsheet

由明道团队编译、整理

您可以点击此处【订阅】获取更多敏捷开发的资料,我们将定期向您邮箱推送相关文章、培训资料和案例。

0

发表评论

电子邮件地址不会被公开。 必填项已用*标注