What's the difference between incremental software process model, evolutionary model, and the spiral model?

Ahm*_*med 18 sdlc

我今年正在学习软件工程,我对标题中的问题感到困惑.

我的教授和参考文献("软件工程实践者方法")都将这三个标题区分为不同的模型.但是,我看不出明显的区别,因为他们的方法看起来与我相同,但使用不同的语句来定义它们.我觉得它们实际上代表了相同的过程模型.

任何人都可以更好地解释不同的模型吗?

Pas*_*ent 16

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

以下是我总结的方法:

增量发展

增量开发是一种将系统功能切成增量(小部分)的实践.在每个增量中,通过遍历软件开发过程的所有活动(从需求到部署),提供垂直的功能片.

增量开发(添加)通常与迭代开发(重做)一起用于软件开发.这称为迭代和增量开发(IID).

进化方法

汤姆吉尔布在1976年出版的软件指标一书中介绍了进化进化这两个术语,他写了关于EVO的文章,他的IID实践(可能是最老的).进化发展的重点是尽早向利益相关者提供高价值,以及获取和利用利益相关者的反馈.

软件开发:Iterative&Evolutionary中,Craig Larman这样说:

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

然后讨论进一步的进化要求,进化和适应性规划,进化传递.检查链接.

螺旋模型

螺旋模型是已在80年代中期已正式由巴里·贝姆作为瀑布的延伸,以更好地支持迭代开发,并提出要特别强调风险管理(通过反复的风险分析),另一种方法IID.

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

1985年的一项具有里程碑意义的出版物IID是巴里·贝姆的"软件开发及增强螺旋模型"(虽然更频繁引用日期为1986年).螺旋模型可以说是不是第一种情况,其中一个团队的风险优先开发周期:Gilb和IBM FSD以前应用或倡导这一理念的变化,例如.但是,螺旋模型没有正式做出突出风险驱动的迭代概念,并利用风险评估的不连续的步骤在每个迭代的需求.

现在怎么办?

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

参考


Ces*_*Gon 7

这些概念通常很难解释.

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

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

[ 迭代生命周期,但方式,指的是您执行的任务(而不是"增量",指的是产品;这是SEMAT采用的视图),这意味着您执行相同的任务一遍又一遍地打字.例如,在迭代生命周期中,您会发现自己正在进行设计,然后进行编码,然后进行单元测试,然后再发布,然后再一次使用相同的内容.请注意,迭代和增量并不相互暗示; 两者的任何组合都是可能的.]

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

有关"工作产品","任务","生命周期"等概念,请参阅ISO/IEC 24744.

希望这可以帮助.