我今年正在学习软件工程,我对标题中的问题有点困惑。
我的教授和参考文献(“软件工程从业者方法”)都将这三个标题区分为不同的模型。但是,我看不出明显的区别,因为它们的方法对我来说看起来相同,但使用不同的语句来定义它们。我觉得实际上它们都代表相同的流程模型。
谁能更好地解释不同的模型?
我今年正在学习软件工程,我对标题中的问题有点困惑。
我的教授和参考文献(“软件工程从业者方法”)都将这三个标题区分为不同的模型。但是,我看不出明显的区别,因为它们的方法对我来说看起来相同,但使用不同的语句来定义它们。我觉得实际上它们都代表相同的流程模型。
谁能更好地解释不同的模型?
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 和进化方法的一个子集,现在是首选方法。
这些概念通常很难解释。
增量是工作产品(文档、模型、源代码等)的属性,这意味着它们是一点一点创建的,而不是一次性创建的。例如,您在需求分析期间创建类模型的第一个版本,然后在 UI 建模之后对其进行扩充,然后您甚至在详细设计期间对其进行更多扩展。
进化是交付物的属性,即交付给用户的工作产品,在这方面它是一种特殊的“增量”。这意味着无论交付什么,它都会尽可能早地以初始形式交付,而不是完全功能,然后每隔一段时间重新交付一次,每次都具有越来越多的功能。这通常意味着一个迭代的生命周期。
[一个迭代的生命周期,但是方式,是指你执行的任务(相对于“增量”,它指的是产品;这是SEMAT采用的观点),它意味着你执行相同的任务一遍又一遍地打字。例如,在一个迭代的生命周期中,您会发现自己在做设计、编码、单元测试、发布,然后一遍又一遍地做同样的事情。请注意,迭代和增量并不相互暗示;两者的任何组合都是可能的。]
生命周期的螺旋模型是Barry Boehm提出的一个模型,它将瀑布的各个方面与迭代方法和内置质量控制等创新进步相结合。
关于“工作产品”、“任务”、“生命周期”等概念,请参见ISO/IEC 24744。
希望这可以帮助。
这是来自 ISO 24748-1:2016(系统和软件工程生命周期管理)的ipsis litteris定义:
有许多不同的开发策略可以应用于系统和软件项目。其中三种策略总结如下:
a) 一次性。“一次性”策略,也称为“瀑布”,包括一次执行开发过程。简单地说:确定用户需求、定义需求、设计系统、实施系统、测试、修复和交付。
b) 增量。“增量”策略确定用户需求并定义系统要求,然后在一系列构建中执行其余的开发。第一个构建包含部分计划功能,下一个构建添加更多功能,依此类推,直到系统完成。
c) 进化的。“进化”策略也在构建中开发了一个系统,但与增量策略不同的是,它承认用户的需求没有被完全理解并且所有的需求都不能预先定义。在此策略中,用户需求和系统要求预先部分定义,然后在每个后续构建中进行细化。
希望这可以帮助。塔蒂