软件统一过程(Rational Unified Process,RUP)是Rational软件公司创造的软件工程方法。RUP描述了如何有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程。RUP类似一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针、模版以及事例支持。
1.RUP的生命周期
RUP软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流,这9个核心工作流如下:
- 业务建模(Business Modeling):理解待开发系统所在的机构及商业运作,确保所有参与人员对待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
- 需求(Requirements):定义系统功能及用户界面,使客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础。
- 分析与设计(Analysis & Design):把需求分析的结果转化为分析与设计模型。
- 实现(Implementation):把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统。
- 测试(Test):检查各子系统之间的交互、集成,验证所有需求是否均被正确实现,对发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
- 部署(Deployment):打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。
- 配置与变更管理(Configuration & Channel Management):跟踪并维护系统开发过程中所产生的所有制品的完整性和一致性。
- 项目管理(Project Management):为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
- 环境(Environment):为软件开发机构提供软件开发环境,即提供过程管理和工具支持。
RUP把软件开发生命周期划分为多个循环(Cycle),每个循环生成产品的一个新的版本,每个循环依次由4个连续的阶段(Phase)组成,每个阶段完成确定的任务。这4个阶段如下:
- 初始(inception)阶段:定义最终产品视图和业务模型,并确定系统范围。
- 细化(elabration)阶段:设计及确定系统的体现结构,制订工作计划及资源要求。
- 构造(construction)阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
- 移交(transition)阶段 :把产品提交给用户使用。
每一个阶段都有一个或多个连续的迭代(Iteration)组成。迭代并不是重复地做相同的事,而是针对不同用例的细化和实现。每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对核心工作流(Discipline)中的行为进行裁剪。
2.RUP中的核心概念
RUP中定义了如下一些核心概念,理解这些概念对于理解RUP很有帮助。
- 角色(Role):Who的问题。角色描述某个人或一个小组的行为与职责。RUP预先定义了很多角色,如体系结构师(Architect)、设计人员(Designer)、实现人员(Implementor)、测试员(tester)和配置管理人员(Configuration Manager)等,并对每一个角色的工作和职责都做了详尽的说明。
- 活动(Activity):How的问题。活动是一个有明确目的的独立工作单元。
- 制品(Artifact):What的问题。制品是活动生成、创建或修改的一段信息、产品、工件等。
- 工作流(Workflow):When的问题。工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。
还有一些其他概念,如工具教程(Tool Mentor)、检查点(Checkpoints)、模版(Template)和报告(Report)等。
3.RUP的特点
1)用例驱动
RUP中的开发活动是用例驱动的,即需求分析、设计、实现和测试等活动都是用例驱动的。
2)以体系结构为中心
RUP中的开发活动是围绕体系结构展开的。软件体系结构的设计和代码设计无关,也不依赖于具体的程序设计语言。软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构层次的设计问题包括系统的总体组织和全局控制、通信协议、同步、数据存取、给设计元素的组织、物理分布、系统的伸缩性和性能等。
3)迭代与增量
RUP强调采用迭代和增量的方式来开发软件,把整个项目开发分为多个迭代过程。在迭代中,只考虑系统的一部分需求,进行分析、设计、实现、测试和部署等过程;每次迭代是在已完成部分的基础上进行的,每次增加一些新的功能实现,以此进行下去,直至最后项目的完成。