我已经阅读了很多关于敏捷和瀑布的信息,我想不出今天为什么有人应该做瀑布的任何理由。我特别关注测试过程。 我是否想念一些东西,是否有一些我忽略的明显优势?
答案 0 :(得分:5)
仍然存在瀑布适合的情况。典型的例子包括军事,太空,医疗和安全关键系统,如飞行控制软件,你绝对需要先详细确定规格,开发它,然后彻底测试整个产品。
敏捷适用于大多数业务和产品软件(即构建的大部分软件),因为它允许用户从粗略的想法开始并随着它们的进行细化。如果他们的网站或内部业务线应用程序在几次迭代中不完全正确(或有错误),那么它通常会超出从可行的位快速传递的业务价值。您不希望从核电站控制器系统的粗略构想开始,并在进行中对其进行改进。
使用纯瀑布的权衡是在这些场景中开发软件的成本要高出几个数量级。然而,成本效益仍然是有利的,因为你无法承担(比方说)你的航天器在轨道中途击中空指针异常。
其间当然有灰色阴影。可以在瀑布框架中使用敏捷技术(参见RUP),并且可以在纯瀑布和纯粹敏捷之间扩展和缩小平衡。
答案 1 :(得分:2)
瀑布式开发模型的主要优点之一是它已经使用了数年和数年才能开发出来。有用。即使有一个很大的转变并专注于敏捷,瀑布是一个非常清晰的过程,其中包含开发的每个部分的起点和终点。
随着敏捷编程的引入,很容易看到瀑布的衰落以及它如何适应当今编程的需求。
只要你小心并提前计划并进行充分测试,我就会说敏捷测试可以比瀑布更有效甚至更有效 - 当测试抛出一些可能导致设计的错误时,使用敏捷肯定更容易改变你的方式。
要考虑的另一件事是开发使用,测试驱动的开发。 http://en.wikipedia.org/wiki/Test-driven_development
答案 2 :(得分:0)
外包
我见过许多公司坚持使用瀑布进行外包项目。在定价报价方面,大多数供应商都非常具体。瀑布非常适合这种模式 - 你交出你想要的东西,他们生产它。我不是这个的粉丝,但我能理解以这种方式执行的原因。我认为大多数外包公司最终会找到一种变得更加灵活的方式,因为它变得更符合行业标准。
答案 3 :(得分:0)
问题的答案取决于您为项目使用何种开发方法。它是敏捷的/它是瀑布/等等。在过去的三到四年里,我参与了只涉及敏捷或只有瀑布的项目,因此将使用它们作为我的参考点。 如果项目的要求不断变化,我们永远不应该进行瀑布式设计,因为瀑布式方法假定设计/分析/等已经完成,而如果我们采用敏捷方法,则基于渐进式方法,我们将项目划分为随着我们的进展,增量故事和构建/测试,所以如果需求发生变化,它不会涉及开发人员和测试人员的大量重新工作。 例如,我们必须创建四个新的网页作为我们项目的一部分,然后瀑布假定他们的设计等已经完成,并且测试将在所有四个页面开发完成后开始,而敏捷的情况是我们首先开发的一页并将其交给QA进行测试[手动/自动化],依此类推。因此,我们可以看到,敏捷为我们的项目增加了价值,除了在开发时发现功能缺陷/错误之外,不会使需求发生变化。