迭代模型

1.什么是迭代模型

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

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

2.迭代模型的选择使用条件

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

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

3、高风险项目。

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

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

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

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

3.迭代模型的优点

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

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

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

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

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

4.各种软件过程模型的特点[1]

不同的软件过程模型对软件开发过程有不同的理解和认识,支持不同的软件项目和开发组织。下表对比和分析了各个软件过程模型的特点及其适用的软件项目类型。

各种软件过程模型的特点

模型名称技术特点适用范围
瀑布模型简单,分阶段,阶段间存在因果关系,

各个阶段完成后都有评审,允许反馈,不支持

用户参与,要求预先确定需求

需求易于完善定义且不易变更的软件系统
快速原型模型不要求需求预先完备定义,支持用户参与,

支持需求的渐进式完善和确认,能够适应用户需求的变化

需求复杂、难以确定、动态变化的软件系统
增量模型软件产品是被增量式地一块块开发的,

允许开发活动并行和重叠

技术风险较大、用户需求较为稳定的软件系统
迭代模型不要求一次性地开发出完整的软件系统,将软件

开发视为一个逐步获取用广需求、完善软件产品的过程

需求难以确定、不断变更的软件系统
螺旋模型结合瀑布模型、快速原型模型和迭代模

型的思想,并引进了风险分析活动

需求难以获取和确定、软件开发风险较大的软件系统
RUP可改造、扩展和剪裁:可以对它进行设计、

开发、维护和发布;强调迭代开发

复杂和需求难以获取和确定的软件系统;

软件开发项目组拥有丰富的软件开发和管理经验