我今年正在学习软件工程,我对标题中的问题感到困惑。
我的教授和参考书(“软件工程A从业者方法”)都将这三个标题区分为不同的模型。但是,我看不出明显的区别,因为他们的方法看起来与我相同,但使用不同的语句来定义它们。 我觉得它们实际上代表了相同的过程模型。
有人能更好地解释不同的模型吗?
答案 0 :(得分:16)
Craig Larman在这个主题上写了很多文章,我建议他着名的论文Iterative and Incremental Development: A Brief History(PDF)和他的书Agile and Iterative Development: A Manager's Guide。
以下是我总结的方法:
增量开发是一种将系统功能切成增量(小部分)的做法。在每个增量中,通过完成软件开发过程的所有活动(从需求到部署),可以提供垂直的功能。
增量开发(添加)通常与迭代开发(重做)一起用于软件开发。这被称为迭代和增量开发(IID)。
术语 evolution 和 evolutionary 由Tom Gilb在1976年出版的“em> Software Metrics”一书中介绍,他在那里写了关于EVO的文章,他的IID的实践(也许是最老的)。进化发展的重点是尽早向利益相关者提供高价值,以及获取和利用利益相关者的反馈。
在Software Development: Iterative & Evolutionary中,Craig Larman这样说:
进化迭代开发意味着需求,计划,估计和解决方案进化或在迭代过程中进行优化,而不是完全定义和“冻结”在开发迭代开始之前的主要前期规范工作中。进化方法与新产品开发中不可预测的发现和变化模式一致。
然后讨论进一步进化要求,进化和适应性规划,进化传递。检查链接。
螺旋模型是另一种IID方法,由Barry Boehm在其中正式化 20世纪80年代中期作为瀑布的延伸,以更好地支持迭代开发,并特别强调风险管理(通过迭代风险分析)。
引用Iterative and Incremental Development: A Brief History:
1985年IID出版物的一个里程碑 是Barry Boehm的“螺旋模型” 软件开发和增强“ (虽然更频繁的引用 日期是1986年)。螺旋模型是 可以说不是第一种情况 团队优先考虑开发周期 风险:Gilb和IBM FSD之前有过 应用或提倡变种 例如,这个想法。然而 螺旋模型确实正式化和制造 突出风险驱动的迭代 概念和使用离散的需要 每个阶段的风险评估步骤 迭代。
敏捷方法是IID和进化方法的一个子集,现在是首选方法。
答案 1 :(得分:7)
这些概念通常解释不清。
增量是工作产品(文档,模型,源代码等)的属性,这意味着它们是一点一点地创建而不是一次性创建。例如,您在需求分析期间创建了类模型的第一个版本,然后在UI建模之后对其进行扩充,然后在详细设计期间进一步扩展它。
进化是可交付成果的属性,即交付给用户的工作产品,在这方面,它是一种特殊的“增量”。这意味着无论交付什么,它都会以初始形式尽早交付,而不是完全正常运行,然后每隔一段时间重新交付,每次都有越来越多的功能。这通常意味着迭代生命周期。
[一个迭代生命周期,但方式,指的是你执行的任务(而不是“增量”,它指的是产品;这是{{3采用的视图) }}),这意味着你一遍又一遍地执行相同类型的任务。例如,在迭代生命周期中,您会发现自己正在进行设计,然后编码,然后进行单元测试,然后发布,然后重复相同的事情。请注意,迭代和增量并不相互暗示;两者的任何组合都是可能的。]
生命周期的螺旋模型是SEMAT提出的模型,它将瀑布的各个方面与创新的进步相结合,如迭代方法和内置质量控制。
有关“工作产品”,“任务”,“生命周期”等概念,请参阅Barry Boehm。
希望这有帮助。
答案 2 :(得分:0)
这是ISO 24748-1:2016(系统和软件工程生命周期管理)中的 ipsis litteris 定义:
有许多不同的开发策略可以应用于系统和软件项目。其中三种策略总结如下:
a)一劳永逸。 “一次性”策略,也称为“瀑布式”,包括一次执行开发过程。简单地:确定用户需求,定义需求,设计系统,实施系统,测试,修复和交付。
b)增量。 “增量”策略确定用户需求并定义系统需求,然后在一系列构建中执行其余的开发。第一个构建包含部分计划功能,下一个构建添加更多功能,依此类推,直到系统完成。
c)进化。 “进化”策略还在构建中开发了一个系统,但与增量策略的不同之处在于承认用户需求尚未完全理解且所有需求都无法预先定义。在此策略中,预先部分定义用户需求和系统需求,然后在每个后续构建中进行细化。希望这会有所帮助。塔蒂