2.9 Rational统一过程
Rational统一过程(RUP)是新的混成过程模型的一个很好的实例,该过程模型来自UML上的工作及相关的统一软件开发过程,它集合了所有一般过程模型的要素,并给出了在描述和设计上的好的实践,还支持原型构造和增量交付方法。
RUP过程认识到传统过程模型只是展现过程的一个视角。相比之下,RUP一般从3个视角来描述过程。
1)动态视角,给出模型中随时间所经历的各个阶段。
2)静态视角,给出所进行的过程活动。
3)实践视角,提出在过程中可以采用的良好实践的建议。
绝大多数关于RUP的描述都试图将静态视角和动态视角结合在一个图中,但这会使过程十分难以理解,所以对每一个视角给出单独的描述。
RUP是一个阶段化的模型,识别出软件过程当中的4个独立阶段。然而,与瀑布模型的各个阶段不同,RUP中的阶段是紧密与业务关联的,而不是与技术层面关联的。图2-15给出了RUP中的阶段。它们分别如下。
图2-15 Rational统一过程的各阶段
1)开端。开端阶段的目标是建立系统的一个业务案例。要识别所有与系统交互的外部实体(人和系统)并定义这些交互。然后使用这些信息评估系统对业务的贡献。如果这个贡献是微小的,那么项目就要在此阶段结束时被取消了。
2)细化。细化阶段的目标是增进对问题域的理解,建立系统的体系框架,给出项目计划并识别关键项目风险。在这个阶段完成时,就得到了系统的需求模型,可能是一组用UML描述的用例、体系结构描述和开发计划。
3)构造。构造阶段主要关心的是系统设计、编程和测试。系统的各个部分并行开发,然后集成在一起。在这个阶段完成时,就得到了一个能工作的软件系统,还有能交付给用户的相关文档。
4)转换。这是RUP的最后阶段,关注如何将系统从开发单位转移到用户单位,并使之在真实环境中工作。这是被绝大多数软件过程模型所忽视的东西,而事实上这是一个代价很高且有时问题很大的活动。在此阶段完成时,就有了一个在运行环境下能正常工作的文档完备的软件系统了。
RUP中对迭代的支持有两种方式。每一个阶段可能被迭代地执行,其结果一次次增量式地得到改善。另外,所有阶段作为一个整体也会增量式地执行,如图2-15中从转换到开端的循环箭头所示。
RUP的静态视角聚焦在开发过程中所发生的活动上。这些在RUP描述中被称为工作流。在此过程中找出了6个核心过程工作流,3个核心支持工作流。在对RUP的设计中采用了面向对象建模语言UML,所以工作流描述是围绕着相关的UML模型给出的,这些UML模型包括时序模型、对象模型等。核心工程和支持工作流的描述如表2-1所示。
表2-1 Rational统一过程中的静态工作流
分别表现动态视角和静态视角的好处在于,开发过程中的阶段是不与特定工作流相关联的。至少从原理上讲,各种RUP工作流在整个过程的所有阶段中都是可能存在的。当然,在过程的初期阶段,绝大多数工作量可能是花在如业务建模和需求这样的工作流上了,而在后期阶段中,工作量主要都花在了测试和部署上了。
RUP的实践视角描述了在系统开发中所需要的好的软件工程实践。6个基本的且最好的实践如下。
1)迭代地开发软件。根据客户需求的轻重缓急来规划系统的增量,在开发过程中先开发和交付最高优先权的系统特性。
2)对需求的管理明确地记录客户的需求并跟踪这些需求的变更。在接受之前分析系统变更所带来的影响。
3)使用基于组件的体系结构将系统体系结构组织成组件的形态。
4)可视化地建模软件使用图形UML模型表现软件的静态和动态视图。
5)检验软件质量,保证软件满足机构质量标准。
6)控制对软件的变更。使用变更管理系统、配置管理程序和工具来管理软件的变更。
RUP并不是一种适合所有开发类型的过程,比如嵌入式软件开发。但是它确实代表了一种潜在地结合了3种基本过程模型(瀑布模型、增量式交付和面向复用)的方法。RUP最为重要的创新在于把阶段和工作流相分离,以及对将软件部署到用户环境的重视。阶段是动态的而且是有目标的。工作流是静态的技术活动,且不与单个阶段相关,但可以在整个开发过程中使用以达到每个阶段的目标。