RUP中的Iteration pattern主要包括: Incremental Lifecycle, Evolutionary Lifecycle, Incremental Delivery Lifecycle , "Grand Design" Lifecycle和 Hybrid Strategies
首先是Incremental Lifecycle,它是我们平时较多采用的方式,使用这种开发策略,我们首先要确定用户需求及系统需求,然后通过构建一系列的build来完成下面的开发工作。在这一系列的build中,后面的build在前面的基础上加上新的功能或着提升性能或软件的能力。
这种策略采用比较短的先启迭代定义好范围、构想、业务等的内容。采用一个精化迭代来定义需求并建立架构。在构建阶段采用多个迭代来实现用例以及对架构的充实。最后在产品化阶段通过几个迭代将产品移植到用户环境实现产品移交。参见下图:
这种开发方式要求开发团队对问题域很熟悉,要清楚的了解可能的风险,项目团队也应当是比较有经验的团队。为什么这样,原因很简单,从上面的示意图上也可以看出,在先启和精化阶段的迭代少,因此团队并没有很充足的时间来熟悉问题域并对架构进行精化并同时来熟悉技术。也就是说先期工作是工作量投入较少的。大部分的工作集中在构建阶段。
从实际情况来看对于很多项目型的公司这种开发方式是使用较多的。尤其是那些专注于某个行业的,比如金融、电子政务等,由于有行业积累,因此很容易理解用户需求,也比较清楚问题域,同时团队人员也往往较为熟悉相关的业务和技术,因此在初始阶段就不需要经过太多的迭代;另一方面,对于很多强势客户,他们非常希望能尽早的看到原型看到可执行的系统,这种策略也顺应了客户的要求。但是我也见到过不成功的采用这种策略的项目,项目团队出于客户、领导、自身等各方面的压力为了更早的进入细节而采用了Incremental Lifecycle,却忽略了团队人员的技能情况以及那些看似熟悉却有着革命性变化的问题域。最终项目不得不延期并且架构也是弱不禁风。