敏捷不仅仅是小瀑布吗?


18

我在项目中主要使用了瀑布方法,但是现在我将眼光扩展到了敏捷方法中。到目前为止,从我读过的东西(也许我读错了东西)来看,敏捷意味着小瀑布。您不用持续一到两年的大瀑布,而是可以持续几周或最多几个月的小瀑布。

我的理解是正确的还是不仅仅如此?敏捷哲学是什么?


4
您实际上读过《敏捷宣言》吗? agilemanifesto.org
S.Lott

Answers:


20

简单来说,是的。仅每两周执行一次Waterfall不会使您敏捷,但这是迭代的(这是敏捷的一半)。

瀑布模型定义了阶段-需求,体系结构,设计,实现,验证(测试),验证(验收测试)和发布。在任何迭代方法中,您都将在每次迭代中经历这些阶段中的每个阶段。它们之间可能有重叠,但是您可以引出并捕获需求,采用系统的体系结构和设计以进行实施,开发新功能或修复缺陷,测试新模块,然后将其提交给客户以供接受测试和部署。

但是,敏捷不仅需要迭代和增量,还需要做更多的事情。敏捷的租户被捕获在敏捷软件开发宣言中。宣言中有四个要点:

个人与流程和工具之间的互动

您经常让个人参与。许多实施都围绕自组织和自指导的团队。几乎所有人都经常与客户或有客户声音的人互动。您不必让一组正式的程序可以遵循和使用一些工具,而是让从事项目工作的人员来驱动项目的完成方式,从而以最佳的方式完成它。

工作软件超过全面的文档

在软件项目中,主要目标是交付软件。但是,在某些项目中,浪费的文档生产没有任何价值。Scott Ambler在敏捷/精益文档方面写了一篇很好的文章。这不是要不生成文档,而是要选择可以为您的团队,未来的开发人员,客户或用户增加价值的文档。您的软件工程师不是在制作不会增加价值的文档,而是在制作软件和相关的测试。

客户合作而非合同谈判

与其预先定义条​​款和时间表以及成本,不如说是与客户不断努力。例如,您可能以用户故事的形式捕获需求并为其分配分数。经过几次迭代后,您便确定了速度(点/迭代),并可以确定您的团队可以在迭代中实现多少个功能。当您的客户提供有关哪些功能可带来最大价值的反馈时,他们可以随时决定何时完成该项目。频繁的交付和与客户的互动可能会发生很多事情-满足了要求,项目结束了维护并最终终止了寿命,客户发现他们并不需要他们认为的一切,因此决定结束项目,该项目失败了,客户很早就发现了这一点,可以取消它。

响应计划变更

您无需预先制定大型设计或最终计划,而必须在必须更改设计或计划时进行返工。您不断根据您所拥有的信息估算和修订估算。您仔细选择度量标准,以洞悉项目的运行状况以及何时进行内部更改。您经常向客户添加,删除需求并对其进行优先级排序。最终,您了解到变化是唯一不变的。

敏捷意味着通过迅速交付高质量,增值软件来关注人们并满足他们的需求。随着客户需求的变化,您可以适应这些需求,从而专注于增加价值。敏捷方法有一些特定的实现,但它们都以人员为中心,及时交付工作软件,并适应快速变化的环境。


2
是的,“敏捷”更多地是关于态度,而不是特定的技巧。阅读Halfarsedagilemanifesto.org,了解一些组织即使采用了所谓的“敏捷”方法也无法采用“敏捷”方法的想法……
Bill Michell

2

是的,不是-实际流程可以看作是一系列小的瀑布,但是区别在于流程是在整个团队(开发,质量保证,业务等)的投入下不断发展和完善的,回顾性地讲,到一个更紧凑的部门,该部门能够对问题做出反应并准确地计划和交付。我在这里完全简化它,还有很多事情要做,但是我认为这不是一个不好的起点。


1

我会说这是一种简单的说法。是的,当您深入研究时,它的水流很小,但是背后却有更多的东西使它起作用。改变您处理项目方式的整个方法……更不用说所需的思维方式了。

如果您认真对待敏捷,那么以下是一系列(而且很长)的网络广播,您可能会感兴趣:

http://autumnofagile.net/


1

忘记敏捷,请思考一下“瀑布”的含义。

在需求阶段,每个人都试图找出最终产品需要解决的问题。人们对此争论了一段时间,然后他们都签署了一系列要求。至此,您的范围已定义,已签订合同,客户可以徘徊并等待您提出满足这些已定义要求的产品。

接下来是一个(或两个)设计阶段。设计人员(可能是开发人员,也可能不是开发人员)对系统必须如何配合才能满足已签署的要求进行了争论。如果他们不太了解需求,则可能会出现问题,这可能意味着他们必须回到客户手中,可能会重新打开需求阶段(并获得另一轮批准)或至少将变更管理付诸实践。通常,设计师只是做出最大的猜测。他们可能会提出一个逻辑数据模型,以及许多描述新系统及其工作方式的UML。然后他们在上面签字。

现在,开发人员可以根据已签署的设计实际开始编码。如果他们不太了解设计,可能会出现问题,这可能意味着他们必须回到设计者手中,可能会重新打开设计阶段(并获得另一轮批准)或至少将变更管理付诸实践。设计人员可能会反过来意识到,混淆确实可以归结到需求,这意味着他们必须重新打开需求讨论,签署和进一步的变更管理。通常,程序员(迫在眉睫的最后期限)只是做出最好的猜测。他们尽力制作功能代码。然后他们将其发布以进行测试。

现在系统测试阶段开始了。测试人员根据对需求和设计的理解进行测试,并将他们认为是缺陷的内容注册到错误跟踪/变更管理系统中,从而使开发人员重新开始开发,除非他们认为问题出在设计缺陷,将其发送回设计等。最终,系统测试通过并被批准。

最后,客户返回并在新系统上进行用户接受度测试。他们在这里决定测试人员测试,开发人员开发和设计人员设计的解决方案是否真正是他们想要的。如果不是这样,您可能必须回到设计阶段,甚至重新审视需求。

瀑布背后的想法是,一旦完成一个阶段,就很难(并且非常不希望)返回。通常,不同的人会涉及不同的阶段,因此会有很多交接-每个交接都会带来很大的误解和信息丢失的风险。在客户说出他们想要的内容和何时看到已建好的内容之间还存在很大的差距,在这段时间内,实际需求可能会发生很大的变化。

敏捷方法论着重于所有有关方面之间的强有力的沟通与合作。“基于合同协商的客户协作”原则意味着您不必经历一系列的签字和移交,而应与客户一起简单地工作,每次迭代都确定了难题的要求并立即形成测试,设计和工作代码-与所有参与者尽可能直接地沟通(消除交接成本和风险)。客户可以快速测试工作代码,从而消除了时滞风险。所有活动都以协作的方式进行,而不是以向下的方式进行。

要获得有关敏捷方法论尝试方法的出色概述,我强烈推荐Allistair Cockburn的《敏捷软件开发:合作游戏》


0

是的,这或多或少是正确的。关于如何进行的讨论和写作很多,但是一堆小瀑布才是问题的症结所在。

但是,如何使用一堆小瀑布的具体实现并非易事。例如,您不会在几年内从制作大型项目转变为制作许多小型项目。仍有一个大型项目需要投入1-2年的时间。因此,您需要将大型项目拆分为多个小型项目。这看起来似乎很明显,但是它充满了书页。


0

那是正确的还是比这更多的东西

都。是的,这是对概念的准确总结,但是有很多细节需要总结。我的意思是,当您只计划下周而不是明年时,计划的几乎所有方面都会发生变化。


0

如果您查看敏捷项目的静态结构(流程定义),它看起来确实像许多小瀑布。但是,敏捷项目的目标是获得更快更好的反馈

  • 您进行测试驱动的开发,以立即知道您的软件是否仍然有效
  • 客户在现场并执行验收测试以了解您的完成时间
  • 您可以进行回顾,根据进展情况和失败情况来调整流程。

敏捷宣言的亮点敏捷和瀑布之间存在一些差异(如感知那些谁签字)。


0

真正的“敏捷”通常是指1-2天而不是几周的瀑布。这并不意味着您没有遵循总体计划,真正的发布周期是1-2天。但是您应该尝试每天使用经过测试的产品,并且理论上每天都可以发布它。

例如,Scrum使用4周的冲刺,但冲刺不仅仅是一个瀑布(至少应该是一个瀑布)。您可以每天更改优先级,只要您发现某些事情与冲刺开始时的计划不符即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.