不错,去看看中文图书全场满【99】元赠畅销书。。。

软件开发过程之:RUP(统一软件开发过程)

一、RUP概述

RUP 即统一软件开发过程(Rational Unified Process),是一种软件工程方法。RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。它最早由Rational Software公司开发,Rational Software公司后来被IBM并购,成为IBM之下的一个部门,因此又称IBM-Rational Unified Process。RUP描述了如何有效地利用商业的可靠的方法开发和部署软件,是一种重量级过程,特别适用于大型软件团队开发大型项目。

二、RUP的生命周期

RUP软件开发生命周期是一个二维的软件开发模型,有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。

RUP生命周期
  1. 业务建模
    业务建模(Business Modeling)工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
  2. 需求
    需求(Requirement)工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。
  3. 分析和设计
    分析和设计(Analysis & Design)工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的设计包(Package)和设计子系统(Subsystem),而描述则体现了类的对象如何协同工作实现用例的功能。设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。体系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模型的质量。
  4. 实现
    实现(Implementation)工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
  5. 测试
    测试(Test)工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、功能性和系统性能来进行。
  6. 部署
    部署(Deployment)工作流的目的是成功的生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。在有些情况下,还可能包括计划和进行beta测试版、移植现有的软件和数据以及正式验收。
  7. 配置和变更管理
    配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。
  8. 项目管理
    软件项目管理(Project Management)平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。
  9. 环境
    环境(Environment)工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。

RUP把软件开发生命周期又划分划分为多个循环(cycle),每个cycle生成产品的一个新的版本,每个cycle依次由4个连续的阶段(phase)组成,每个阶段完成确定的任务。这4个阶段如下:

  1. 初始(inception)阶段:定义最终产品视图和业务模型,并确定系统范围。
  2. 细化(elaboration)阶段:设计及确定系统的体系结构,制定工作计划及资源要求。
  3. 构造(construction)阶段:构造产品并继续演进需求、体系结构、计划直至产品提交。
  4. 移交(transition)阶段:把产品提交给用户使用。

每一个阶段都由一个或多个连续的迭代(iteration)组成。迭代并不是重复地做相同的事,而是针对不同用例的细化和实现。每一个迭代都是一个完整的开发过程,它需要项目经理根据当前迭代所处的阶段以及上次迭代的结果,适当地对核心工作流中的行为进行裁剪。
在每个阶段结束前有一个里程碑(milestone)评估该阶段的工作。如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续做该阶段的工作。

三、RUP中的核心概念

  • 角色(Role)——who的问题:角色描述某个人或一个小组的行为与职责。RUP预先定义了很多角色,例如体系结构师(architect)、设计人员(designer)、实现人员(implementer)、测试员(tester)和配置管理人员(configurationmanager)等,并对每一个角色的工作和职责都做了详尽的说明。
  • 活动(activity)——how的问题:活动是一个有明确目的的独立工作单元。
  • 制品(artifact)——what的问题:制品是活动生成、创建或修改的一段信息。也有些书把artifact翻译为产品、工件等,和制品的意思差不多。
  • 工作流(workflow)——when的问题:工作流描述了一个有意义的连续的活动序列,每个工作流产生一些有价值的产品,并显示了角色之间的关系。

四、RUP的特点

  • 用例驱动:RUP中的开发活动是用例驱动的,即需求分析、设计、实现和测试等活动都是用例驱动的。
  • 以体系结构为中心:RUP中的开发活动是围绕体系结构展开的。至于软件的体系结构,目前尚没有一个统一的定义,不同的人对于软件的体系结构也往往有不同的认识。
  • 迭代与增量:RUP强调要采用迭代和增量的方式来开发软件,把整个项目开发分为多个迭代过程。在每次迭代中,只考虑系统的一部分需求,进行分析、设计、实现、测试和部署等过程,每次迭代是在已完成部分的基础上进行的,每次增加一些新的功能实现,以此进行下去,直至最后项目的完成。

在RUP中,通常采用“4+1”视图模型来描述软件系统的体系结构。在“4+1”视图模型中,分析人员和测试人员关心的是系统的行为,因此会侧重于用例视图;最终用户关心的是系统的功能,因此会侧重于逻辑视图;程序员关心的是系统的配置、装配等问题,因此会侧重于实现视图;系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于进程视图;系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于部署视图。

软件开发采用迭代和增量的方式有以下好处:

  • (1)在软件开发的早期就可以对关键的、影响大的风险进行处理。
  • (2)可以提出一个软件体系结构来指导开发。
  • (3)可以更好地处理不可避免的需求变更。
  • (4)可以较早地得到一个可运行的系统,鼓舞开发团队的士气,增强项目成功的信心。
  • (5)为开发人员提供一个能更有效工作的开发过程。

五、RUP的裁剪

RUP是一个通用的过程模板,包含了很多开发指南、制品、开发过程所涉及到的角色说明。由于它非常庞大,没有一个项目会使用RUP中的所有东西,所以对具体的开发机构和项目,使用RUP时还要进行裁剪,也就是要对RUP进行配置。RUP就像一个元过程,通过对RUP进行裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的具体实例。RUP裁剪可以分为以下几步:
1) 确定本项目需要哪些工作流。RUP的9个核心工作流并不总是需要的,可以取舍。
2) 确定每个工作流需要哪些制品。
3) 确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原则,决定每个阶段要哪些工作流,每个工作流执行到什么程度,制品有哪些,每个制品完成到什么程度。
4) 确定每个阶段内的迭代计划。规划RUP的4个阶段中每次迭代开发的内容。
5) 规划工作流内部结构。工作流涉及角色、活动及制品,他的复杂程度与项目规模即角色多少有关。最后规划工作流的内部结构,通常用活动图的形式给出。(裁剪的难点)

评论一下...

电子邮件地址不会被公开。 必填项已用*标注