软件开发的增量方法与迭代方法之间有什么区别?


16

增量的方法是软件开发的方法,其中所述模型的设计,实现和测试增量(多一点每次加入),直至产品完成。它涉及开发和维护。满足所有要求的产品定义为成品

迭代设计是基于原型,测试,分析和提炼产品或过程的循环过程设计方法。根据测试设计的最新迭代的结果,可以进行更改和完善。此过程旨在最终改善设计的质量和功能。在迭代设计中,随着设计的连续版本或迭代,与设计的系统进行交互被用作通知和发展项目的研究形式。

似乎这两种方法都涉及创建系统的一部分,对其进行完善以使其通过所有测试用例,添加系统的另一个组件并再次对其进行完善,这些方法会重复进行直到系统完成为止。

这两种软件设计方式的实际区别是什么

如何将这两种方法结合起来形成迭代和增量设计方法

Answers:


13

增量逼近采用的步骤,一组号码,从开始发展去完成的进展的线性路径。

增量开发是从设计,实施,测试/验证,维护开始的步骤。这些可以进一步细分为子步骤,但是大多数增量模型都遵循相同的模式。该瀑布模型是一个传统的增量发展的道路。

迭代方法具有的步骤没有定数,而发展是周期完成。

迭代开发与跟踪单个功能的进度无关。取而代之的是,重点放在首先创建可用的原型上,并在开发周期中添加功能,在这些开发周期中,每个周期都要完成增量开发步骤。敏捷建模是一种典型的迭代方法。


增量模型最初是按照工厂中使用的传统装配线模型开发的。不幸的是,软件设计和开发与制造实物几乎没有共同点。代码是蓝图,而不是开发的成品。在开发过程中经常会“发现”好的设计选择。在没有适当上下文的情况下将开发人员锁定在一组假设中,可能会导致最佳情况下的设计不佳,或者在最坏的情况下导致开发完全脱轨。

迭代方法现在变得越来越普遍,因为它更适合软件开发的自然发展路径。迭代方法无需花费大量时间/精力根据假设去追求“完美的设计”,而只是创建“足够好”的东西来开始并不断发展以满足用户的需求。

tl; dr-如果您是在增量模型下撰写论文,那么您将尝试一次从头到尾完美地撰写一篇论文。如果您是在“迭代模型”下编写的,则需要快速草拟并通过一系列修订阶段对其进行改进。


更新:

我修改了“渐进方法”的定义,以适应更实际的示例。

如果您曾经不得不处理合同问题,那么增量合同就是大多数合同(特别是军事合同)的执行方式。尽管典型的“瀑布模型”有许多细微的变化,但实际上大多数/所有模型都是以相同的方式应用的。

步骤如下:

  • 合同授予
  • 初步设计审查
  • 关键设计评论
  • 规格冻结
  • 发展历程
  • 实地/整合
  • 验证
  • 可靠性测试

PDR和CDR是创建和修改规范的地方。规范完成后,应将其冻结以防止示波器蠕变。如果使用该软件扩展现有系统,则会发生集成。验证用于检查应用程序是否符合规范。可靠性是一项测试,以证明应用程序在长期内将是可靠的,可以将其指定为类似于SLA(服务水平协议),其中系统需要维持一定百分比的正常运行时间(例如3个月的正常运行时间为99%) )。

该模型非常适合直接在纸上指定但难以生产的系统。很难在纸上指定任何详细程度的软件(例如UML)。负责管理/合同的大多数“业务类型”都没有意识到,就软件开发而言,代码本身就是规范。纸质规范通常需要花费与代码本身一样多的时间/精力来编写,而且在实践中通常证明不完整/劣等。

增量方法通过将代码本身视为规范来尝试浪费时间/资源。代码本身不需要经过多个修订周期,而不是通过多个修订步骤来运行纸张规范。


+1是一个很好的例子,尽管增量描述对我来说似乎是错误的
Basilevs 2014年

@Basilevs好吗?
Evan Plaice

7
瀑布不是增量的。增量式是指逐步构建(通过测试设计)软件。在传统的瀑布模型中,您将执行所有设计,所有实现,然后进行所有测试。它根本不是增量的。瀑布有多种形式,例如您可以先处理需求工程,然后将项目分解为增量,在这些增量中设计,实施,测试(并与其他增量进行集成和测试),但这不是传统方法瀑布。
Thomas Owens

0

与任何形容词一样,软件开发中的大多数事情都取决于它!

这取决于上下文以及该术语的使用方式。因此,您要问的是增量和迭代方法在软件开发之间的区别,但是您的引用是针对迭代设计的,这是另一回事(尽管类似)。

因此,专门回答作为一种软件开发方法。

这个问题放错了地方。这不是一个。您无法直接比较它们,因为它们指的是流程的不同部分。

迭代软件开发本质上是增量的。增量软件开发不必是迭代的。

增加是一个小动作,希望可以向前发展。这是一种参考所执行工作的每个步骤的方式。

迭代是一个工作周期。

因此,迭代是指使用的整个开发周期。增量是指工作的每个单独步骤。迭代将产生一个增量,该增量由软件的一个或多个实际增量(通常是多个)组成。

结论...

迭代软件开发是一种特定类型的软件开发方法,与传统的瀑布方法相反,它以迭代方式工作。Scrum是一个很好的例子。

增量软件开发较为笼统,指的是逐步进行工作,这是大多数(也许是全部?)方法的功能。话虽如此,该术语相对于现代敏捷方法而言更常用,这可能解释了两个非常相似的术语之间的混淆。

最后,当然,这取决于该术语在使用时的含义,这通常会因说话者,每月时间等而有很大差异!

一个更有趣的问题是,采用经验方法进行软件开发是否适合所有这些情况。迭代方法的优点在于它可以实现经验主义,而这正是魔术发生的地方。

希望这可以帮助。

本文通过示例很好地描述了它。

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.