18

我今年正在学习软件工程,我对标题中的问题有点困惑。

我的教授和参考文献(“软件工程从业者方法”)都将这三个标题区分为不同的模型。但是,我看不出明显的区别,因为它们的方法对我来说看起来相同,但使用不同的语句来定义它们。我觉得实际上它们都代表相同的流程模型。

谁能更好地解释不同的模型?

4

3 回答 3

16

Craig Larman 在这个主题上写了很多文章,我推荐他的著名论文迭代和增量开发:简史(PDF) 和他的书敏捷和迭代开发:经理指南

以下是我总结的方式:

渐进式发展

增量开发是一种将系统功能分割成增量(小部分)的实践。在每个增量中,通过软件开发过程的所有活动(从需求到部署)来交付垂直的功能部分。

在软件开发中,增量开发(添加)经常与迭代开发(重做)一起使用。这称为迭代和增量开发 (IID)。

进化方法

Tom Gilb 在1976 年出版的《软件度量》一书中介绍了进化进化这两个术语,他在其中写了关于 EVO,他的 IID 实践(可能是最古老的)。进化发展的重点是尽早向利益相关者交付高价值,以及获取和利用利益相关者的反馈。

Software Development: Iterative & Evolutionary中,Craig Larman 是这样说的:

进化迭代开发意味着需求、计划、估计和解决方案在迭代过程中不断发展或完善,而不是在开发迭代开始之前在主要的前期规范工作中完全定义和“冻结”。进化方法与新产品开发中不可预测的发现和变化的模式是一致的。

然后进一步讨论了演进要求演进和适应性规划演进交付。检查链接。

螺旋模型

螺旋模型是另一种 IID 方法,已由 Barry Boehm 在 1980 年代中期正式化为瀑布的扩展,以更好地支持迭代开发并特别强调风险管理(通过迭代风险分析)。

引用迭代和增量开发:简史

1985 年 IID 出版物中的一个里程碑是 Barry Boehm 的“软件开发和增强的螺旋模型”(尽管更频繁的引用日期是 1986 年)。可以说,螺旋模型并不是团队根据风险优先考虑开发周期的第一个案例:例如,Gilb 和 IBM FSD 以前曾应用或提倡过这种想法的变体。然而,螺旋模型确实形式化并突出了风险驱动迭代的概念,并且需要在每次迭代中使用离散的风险评估步骤。

现在怎么办?

敏捷方法是 IID 和进化方法的一个子集,现在是首选方法。

参考

于 2010-10-09T21:57:21.187 回答
7

这些概念通常很难解释。

增量是工作产品(文档、模型、源代码等)的属性,这意味着它们是一点一点创建的,而不是一次性创建的。例如,您在需求分析期间创建类模型的第一个版本,然后在 UI 建模之后对其进行扩充,然后您甚至在详细设计期间对其进行更多扩展。

进化是交付物的属性,即交付给用户的工作产品,在这方面它是一种特殊的“增量”。这意味着无论交付什么,它都会尽可能早地以初始形式交付,而不是完全功能,然后每隔一段时间重新交付一次,每次都具有越来越多的功能。这通常意味着一个迭代的生命周期。

[一个迭代的生命周期,但是方式,是指你执行的任务(相对于“增量”,它指的是产品;这是SEMAT采用的观点),它意味着你执行相同的任务一遍又一遍地打字。例如,在一个迭代的生命周期中,您会发现自己在做设计、编码、单元测试、发布,然后一遍又一遍地做同样的事情。请注意,迭代和增量并不相互暗示;两者的任何组合都是可能的。]

生命周期的螺旋模型Barry Boehm提出的一个模型,它将瀑布的各个方面与迭代方法和内置质量控制等创新进步相结合。

关于“工作产品”、“任务”、“生命周期”等概念,请参见ISO/IEC 24744

希望这可以帮助。

于 2010-10-09T18:32:29.253 回答
0

这是来自 ISO 24748-1:2016(系统和软件工程生命周期管理)的ipsis litteris定义:

有许多不同的开发策略可以应用于系统和软件项目。其中三种策略总结如下:

a) 一次性。“一次性”策略,也称为“瀑布”,包括一次执行开发过程。简单地说:确定用户需求、定义需求、设计系统、实施系统、测试、修复和交付。

b) 增量。“增量”策略确定用户需求并定义系统要求,然后在一系列构建中执行其余的开发。第一个构建包含部分计划功能,下一个构建添加更多功能,依此类推,直到系统完成。

c) 进化的。“进化”策略也在构建中开发了一个系统,但与增量策略不同的是,它承认用户的需求没有被完全理解并且所有的需求都不能预先定义。在此策略中,用户需求和系统要求预先部分定义,然后在每个后续构建中进行细化。

希望这可以帮助。塔蒂

于 2017-02-28T18:53:05.987 回答