敏捷开发、迭代开发和增量式开发之间的区别。

48

敏捷开发、迭代开发和增量式开发之间有什么区别?敏捷开发是否被视为迭代和增量式开发的一种形式?一些信息显示,敏捷开发是迭代和增量式开发中最新的一种。我需要对此进行明确的澄清。

5个回答

59
  • 迭代式 - 你不能一次性完成一个功能。你处于编码>>获取反馈>>编码>>...的循环中。你不断迭代,直到完成。
  • 增量式 - 你只构建你现在需要的部分。除非有需要得到证明,否则不会过度设计或添加灵活性。当需要出现时,你就在已有的基础上进行构建。(注意:与迭代不同之处在于你正在添加新的东西,而不是精细调整现有的东西)。
  • 敏捷 - 如果你重视敏捷宣言中列出的相同事项,则说明你是敏捷的。这也意味着没有标准模板、清单或程序可以“执行敏捷”。它不会过度规定……它只声明你可以使用任何你需要的实践来“成为敏捷的”。Scrum、XP和Kanban是一些更具规范性的“敏捷”方法,因为它们分享相同的价值观。持续和早期反馈、频繁的发布/演示、演化设计等因此它们可以是迭代和增量的。

6
我建议阅读Karl Scotland在该主题上的博客(http://availagility.co.uk/2009/12/22/fidelity-the-lost-dimension-of-the-iron-triangle/),他介绍了“忠实度”这一概念,进一步解释了渐进式和迭代式开发之间的区别,以及敏捷意味着既要渐进又要迭代(即两者并不矛盾)。 - dm76
@dm76 - 是的,这些术语的使用程度取决于你与谁交流。阅读链接 - 我同意这个想法;然而我发现人们很难定义他们的最低期望(F级)。此外,我的增量版本不是一次性将一个功能建立到完全的准确度.. 而是随着时间/新需求逐步增加。 - Gishu
我认为这里的关键是“与迭代不同之处在于你正在添加新事物..而不是完善某些东西)”。 - dangerousdave
阿波罗计划是由NASA执行的一系列迭代和增量任务。阿波罗11号是1969年首次将人类送上月球的任务。从1到11的每个新任务都是实验和逐渐迭代改进的增量过程。很高兴看到Jeff Norris博士在“任务关键敏捷性”方面发表了精彩演讲-https://www.youtube.com/watch?v=EfXl7X-0wRI - jjpcondor

11

增量开发是指将软件项目的不同部分持续集成到整个项目中,而不是采用单体方法,在一个或几个里程碑中组装所有不同的部分。

迭代式开发意味着一旦组件的第一个版本完成,就会对其进行测试、审查,并几乎立即将结果转化为该组件的新版本(迭代)。

因此,首要的结果是:迭代式开发不需要增量式,反之亦然,但这些方法非常相配。

敏捷开发旨在减少软件项目中的大量计划开销,以允许快速响应变化,例如客户需求。增量和迭代式开发几乎总是敏捷开发策略的一部分。有几种敏捷开发方法(例如 scrum)。


2

迭代开发意味着在产品寿命周期内重新审视传统瀑布模型的步骤。这些阶段甚至可以重叠,例如,在进行端到端测试时,您可以已经开始准备新需求。

增量开发意味着您规划功能并逐步实现它们。

敏捷旨在在每个Sprint之后创建“可能可交付的产品”。您如何实现这一目标是另一回事。敏捷试图采用来自各个领域(例如极限编程)的“最佳”技术。敏捷不排除运行增量或迭代开发。


0

一些重要且成功执行的软件项目,如Google Chrome和Mozilla Firefox,是迭代和增量软件开发的典范。

我将引用一篇精彩的Ars Technica文章来描述这种方法:http://arstechnica.com/information-technology/2010/07/chrome-team-sets-six-week-cadence-for-new-major-versions/

根据Chrome程序经理Anthony Laforge的说法,加快发布速度旨在实现三个主要目标。其一是更快地向用户推出新功能。第二个目标是使发布计划可预测,因此更容易规划哪些功能将被包含,哪些功能将被定位为后续版本。第三个目标,也是最反直觉的,是为了减轻Chrome开发人员的压力。
Laforge解释说,发布之间较短、可预测的时间段更像是“从中央车站出发的火车”。准备好的新功能不必等待其他需要更长时间完成的功能,它们可以直接跳上当前的发布“列车”。这反过来又可以减轻开发人员的压力,让他们不必匆忙完成其他功能,因为另一个发布列车将在六周后到来。他们可以放心知道自己的工作不会阻止列车离开车站。

-10

敏捷开发是项目开发中最常用的技术。在敏捷技术中,人们会从一种技术转换到另一种技术...主要目的是消除依赖关系。 例如,人们从生产转向开发,从开发转向测试。 这样,依赖关系就可以在一个团队或个人身上消除。


2
我认为你应该多了解一下敏捷开发,因为你说的话没有意义。 - Spencer Melo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接