在多数传统的生命周期中,阶段是以其中的主要活动命名的:需求分析、设计、编码、测试。传统的软件开发工作大部分强调一个序列化过程,其中一个活动需要在另一个开始之前完成。在迭代过程中,每个阶段都包括不同比例的所有活动。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。
迭代开发模型,如上图所示,水平方向为时间维度,从组织管理的角度描述整个软件开发生命周期,分四个阶段:初始、细化、构造、移交,可进一步描述为周期、阶段、迭代。核心工作流从技术角度描述迭代模型的静态组成部分,包括:业务建模、需求获取、分析与设计、实现、测试、部署。图中的阴影部分描述了不同的工作流,在不同的时间段内工作量的不同,几乎所有的工作流在所有时间段内均有工作量,只是大小不同而已。各阶段的主要任务:
- 初始化阶段:系统地阐述项目的范围,选择可行的系统构架,计划和准备业务案例。
- 细化阶段:细化构想,细化过程和基础设施,细化构架并选择构件。
- 构造阶段:资源管理、控制和过程最优化,完成构件的开发并依评价标准进行测试,依构想的验收标准评估产品的发布。
- 移交阶段:同步并使并发的构造增量集成到一致的实施基线中,与实施有关的工程活动(商业包装和生产、人员培训等),根据完整的构想和需求集的验收标准评估实施基线。
优点
与传统的瀑布模型相比较,迭代过程具有以下优点:
- 降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个迭代的花费。
- 降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。
- 加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。
- 由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代这种模式适应需求的变化会更容易些。
使用条件
- 在项目开发的早期需求可能有所变化。
- 分析设计人员对应用领域很熟悉。
- 高风险项目。
- 用户可不同程度地参与整个项目的开发过程。
- 使用面向对象的语言或统一建模语言(Unified Modeling Language,UML)。
- 使用CASE(Computer Aided Software Engineering,计算机辅助软件工程)工具,如Rose(Rose是非常受欢迎的物件软体开发工具。)。
- 具有高素质的项目管理者和软件研发团队。