什么是迭代模型

早在20世纪50年代末期,软件领域中就出现了迭代模型。最早的迭代过程可能被描述为“分段模型(stagewise model)”,其背景是H.D.Benington领导的美国空军SAGE项目。

  迭代模型是RUP(Rational Unified Process,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。

  实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。迭代的思想如下图所示。

  在现代过程方法XP(eXtreme Programming,极限编程)、RUP无一例外地都推荐、主张采用能显著减少风险的迭代模型。美国国防部原本提倡瀑布过程和观点,在发现那么多采用了瀑布模型的失败的项目之后,不但放弃了对它的要求,而且从1994年的报告开始,积极地鼓励采用更加现代化的迭代模型来取代瀑布模型做法。同时,中国中科院也提倡选用迭代模型。

  对众多的开发模型和过程方法,及权威机构的看法,企业应选择什么样的开发模型,应慎重对从以下几方面进行考虑:

  1、RUP虽然内容极其丰富,定义了选起、精化、构建、产品化4个阶段和业务建模、需求、分析设计、实现、测试、部署等9个工种,提供了一大堆的文档模板,但极易让人误解是重型的过程,实施推广有一定难度。

  2、再次,在质量管理方面:以实现系统架构、核心功能目标的迭代产品生的工作成果作为质量控制重点。每次迭代进行系统集成、系统测试,达到对软件质量的持续验证。每次系统测试,需要回归测试前一次迭代遗留发现的问题。每次迭代发布的小版本组织客户(包括内部客户、外部客户)进行评价,通过演示操作等方式,评价该次迭代是否达到预定的目标,并以此为依据来制定下一次迭代的目标。

  3、最后,在其他方面:每次迭代成果须进行配置管理,版本控制很重要。在整个迭代过程中风险无处不在,建议每周作一次风险跟踪。同时通过重点关注进度、工作量、满意度、缺陷等数据收集,关注每次迭代情况。

  总之,选择一个合适的生命周期模型,并应用正确的方法,对于任何软件项目的成功是至关重要。企业在选择开发模型应从项目时间要求、需求明确程度、风险状况等选择合适的生命周期模型。

迭代模型的选择使用条件

1、在项目开发早期需求可能有所变化。

  2、分析设计人员对应用领域很熟悉。

  3、高风险项目。

  4、用户可不同程度地参与整个项目的开发过程。

  5、使用面向对象的语言或统一建模语言(Unified Modeling Language,UML)。

  6、使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose是非常受欢迎的物件软体开发工具。)。

  7、具有高素质的项目管理者和软件研发团队。

迭代模型的优点

与传统的瀑布模型相比较,迭代过程具有以下优点:

  1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

  2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

  3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

  4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。

迭代模型(Iterative Model)相关推荐

  1. 项目管理模型总结---原型模型、迭代模型

    原型模型  原型模型--样品模型 原型模型的主要思想: 先借用已有系统作为原型模型,通过"样品"不断改进,使得最后的产品就是用户所需要的. 原型模型通过向用户提供原型获取用户的反馈 ...

  2. 他山之石,可以攻玉:认知科学中的迭代模型,何以缓解语言迁移

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 人类有千万种不同的种族文化,但人类语言是如何进化出一些共通形式?"语言迭代模型"表示:语言本身是通过进化来适应个体之 ...

  3. Ember——在构建Ember应用程序时,我们会使用到六个主要部件:应用程序(Application)、模型(Model)、视图(View)、模板(Template)、路由(...

    在构建Ember应用程序时,我们会使用到六个主要部件: 模板(Template).应用程序(Application).视图(View).路由(Routing).控制器(Controller)和模型(M ...

  4. 浅谈软件研发模式中瀑布模型、迭代模型、敏捷模型

    要比较模型的区别,首先说说什么叫软件开发.软件开发是一项包括版本计划.需求捕捉.需求分析.设计到代码编写.调试.维护的一系列过程.软件开发不仅仅是编程.而对于软件研发(Reserch and Deve ...

  5. 软件开发模型之迭代模型

    转自:http://baike.baidu.com/view/1380740.htm 早在20世纪50年代末期,软件领域中就出现了迭代模型.最早的迭代过程可能被描述为"分段模型(stagew ...

  6. 【理论推导】扩散模型 Diffusion Model

    VAE 与 多层 VAE 回顾之前的文章 [理论推导]变分自动编码器 Variational AutoEncoder(VAE),有结论 log ⁡ p ( x ) = E z ∼ q ( z ∣ x ...

  7. 软件测试(概念Ⅱ) · 开发模型 · 软件的生命周期 · 瀑布模型 · 螺旋模型 · 增量模型 · 迭代模型 · 敏捷模型 · scrum · 软件测试模型之 V 模型 W 模型

    一.开发模型的由来 二.软件的生命周期 三.瀑布模型(Waterfall Model) 四.螺旋模型(Spiral Model) 五.增量模型(Incremental Model) 六.迭代模型(Ra ...

  8. B-07 Django-第二部分(熟练掌握)-模型(Model)设计-数据访问操作(记录查询-基本)

    模型(Model)设计-数据访问操作(查询操作介绍与基本API) 文章目录 模型(Model)设计-数据访问操作(查询操作介绍与基本API) 回顾 a.模型(Model)设计流程过程说明 目标 参考 ...

  9. 基于pytorch的模型压缩和模型剪枝Model Prune示例

    神经网络和卷积神经网络的模型剪枝Model Prune 1,神经网络和卷积神经网络模型剪枝方法. 2,可指定剪枝率进行定向剪枝,并输出剪枝后参数统计和finetune. 3,支持MLP, Lenet, ...

最新文章

  1. 电气专业的你,2022届求职进展如何?
  2. cramer定理_Lundberg-Cramer定理
  3. linux更换网卡不识别_详解Linux双网卡绑定脚本的方法示例
  4. 使用Sass预定义一些常用的样式,非常方便(转)
  5. asp.net 页面static变量问题
  6. 关于重构之Switch的处理【二】
  7. mybatis3源码1-初始化
  8. 基于kubeflow+LSTM完成时间序列数据预测
  9. centos 修改root密码_Vultr 修改 Root 密码的方法
  10. 【无标题】简单的培根密码解密
  11. Python 爬虫超详细讲解(零基础入门,老年人都看的懂)
  12. 解决VMware 虚拟机中的网络连接出现”受限制或无连接“问题的方法
  13. 基于阿里云LinkWAN实现设备上云(1) LinkWAN平台简析
  14. 2021年中国PLG模式的SaaS公司新增的有哪些代表?
  15. 一篇文章带你了解——巨量引擎平台广告审核规则
  16. 二零零七年五一节自驾游记(十)--------0501若尔盖花湖II
  17. 判断质数和合数的java_质数与合数知识点总结(质数和合数的知识点)
  18. 2017 ACM Arabella Collegiate Programming Contest A. Sherlock Bones GYM101350A
  19. 手机上将png转pdf_如何在Linux上将多个jpg图像合并为pdf?
  20. GO 语言常用工具类-通用方法集合

热门文章

  1. 普元中间件Primeton AppServer6.5安装(Windows)
  2. oracle11g在linux7的静默安装脚本
  3. (十进制快速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
  4. html标记语言格式,标记语言——打印样式
  5. android开发方法数,Android方法数methods超过65536详解
  6. ajax富客户端存在的意义,基于AJAX的网上银行富客户端研究与设计
  7. JAVA生成高强度密码(包含随机数字+随机英文大小写)
  8. vivado使用笔记(1)--防止信号被综合优化dont touch
  9. 怎么计算一个月有多少天
  10. 浅谈“决策引擎”在身份管理的应用