`
bsr1983
  • 浏览: 1100756 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

第五章 面向对象方法——RUP

 
阅读更多

一种软件开发方法学至少由3部分组成,一是用于表达基本信息的术语;二是用于组织基本信息的表达格式;三是在不同抽象层之间进行“映射”的过程指导。

统一软件开发过程(Unitied Software Development Process)是对象管理组织(Object Management GroupOMG)所推荐的一个有关过程的标准,它由UML语言的开发者们提出,其中权衡了三十余年的软件开发实践,吸取了数百个用户多年的实际经验以及Rational公司多年的工作成果,因此统一软件开发过程往往写为Rational Unified Process,简称RUP

5.1 RUP 的特点

RUP的突出特点是,它是一种以用况(Use Case)为驱动的、以体系结构为中心的迭代、增量式开发。

1.以用况为驱动

2.以体系结构为中心

以体系结构为中心是指在系统的生存周期中,开发的任何阶段(RUP规定了4个阶段,即初始阶段、细化阶段、构造阶段和移交阶段)都要给出相关模型视角下有关体系结构的描述,作为构思、构造、管理和改善系统的主要制品。

3.迭代、增量式开发

迭代、增量式开发是指通过开发活动的迭代,不断地产生相应的增量。在RUP中,规定了4个开发阶段:初始阶段(the Inception Phase)、精化阶段(the Elaboration Phase)、构造阶段(the Construction Phase)和移交阶段(the Transition Phase)。

两次相邻迭代所得到的发布版本之差,称为一个增量,因此增量式系统中一个较小的、可管理的部分(一个或几个构造块)。

RUP的迭代、增量式开发是演化模型的一个变体,即规定了“大的”迭代数目——4个阶段,并规定了每次迭代的目标。

初始阶段的基本目标是:获得与特定用况和平台无关的系统体系结构轮廓,以此建立产品功能范围;编制初始的业务实例,从业务角度指出该项目的价值,减少项目主要的错误风险。

精化阶段的基本目标是:通过捕获并描述系统的大部分需求(一些关键用况),建立系统体系结构基线的第一个版本,主要包括用况模型和分析模型,减少次要的错误风险;到该阶段末,就能够估算成本、进度,斌跟你过详细地规划构造阶段。

构造阶段的基本目标是:通过演化,形成最终的系统体系结构基线(包括系统的各种模型和各模型视角下的体系结构描述),开发完整的系统,确保产品可以开始向客户交付,即具有初始操作能力。

移交阶段的基本目标是:确保有一个实在的产品发布给用户群。期间,培训用户如何使用该软件。

5.2 核心工作流

RUP的每次迭代中都要经历一个核心工作流,即需求获取、分析、设计、实现和测试。

5.2.1 需求获取

RUP采用Use Case技术来获取需求。其目标是:使用UML中的用况、参与者以及依赖等术语来抽象客观实际问题,形成系统的需求获取模型—— 一种特定的系统/产品模型,并产生该模型视角下的体系结构描述。

1.列出候选需求

特征是一个新的项(Item)及其简要描述(Shrinks)。

2.理解系统语境

RUP中,领域模型一般是以类图予以表达的,用于捕获系统语境中的一些重要领域对象类,其中领域对象表达系统工作环境中存在的事物或发生的事件。一般来说,领域类以3种形态出现。

业务对象:表示那些由业务操纵(Manipulate)的事物(Thing),如订单、账目和合同。

实在对象(Real-world Objects)和概念:如教室、运动场地。

事件(Events):如上课铃响、讨论开始等。

RUP中,为了捕获业务处理和其中的业务对象,通过以下两个层次来抽象一个业务:

(1)业务用况模型。业务用况模型是以用况图予以表达的。其中包含一些“业务用况”和一些“业务参与者”,每一个业务用况对应一个业务处理,每一个业务参与者对应客户。

(2)业务对象模型。为了精化业务用况模型中的每一个业务用况,RUP引入了3个术语,用于表达参与业务的业务对象:工作人员(Workers)、业务实体(Business Entities)和工作单元(Work Units)。其中,工作人员用于表达参与业务处理的各类人员;业务实体用于表达在一个业务用况中所使用的某一事物,如一张发票;工作单元是对最终用户而言可形成一个认知整体的实体集合。

业务对象模型可以通过交互图和活动图予以表达。

3.捕获系统功能需求

该步的目标是,创建系统的用况模型,用以表达客户认可的需求——系统必须满足的条件和能力,作为客户和开发人员之间的一种共识。

用况模型是系统的一种概念模型,是对系统功能的抽象,包括系统参与者、系统用况以及它们之间的关系。其中,“以用况表达的系统”给出的是用况模型的顶层包。

UML中,用况是系统向它的参与者提供结果(值)的功能块,表达参与者使用系统的方式,因此一个用况可用于规约系统可执行的、与参与者进行交互的一个动作序列,包括其中一些可选的动作序列,并且用况还有自己的属性。

5.2.2 需求分析

RUP的需求分析目标是:在系统用况模型的基础上,创建系统分析模型以及在该分析模型视角下的体系结构描述。其中,所创建系统分析模型也是系统的一种概念模型,解决系统用况模型中存在的二义性和不一致性等问题,并以一种系统化的形式准确地表达用户的需求。

为了支持系统分析,RUP引入了以下术语:分析类、分析包和用况细化,并通过这些术语以及描述它们之间的特定关系的术语,定义了一个抽象层。

1.基本术语

(1)分析类。在RUP中,分析类(Analysis Class)是类的一种衍型,很少有操作和特征标记,而用责任来定义其行为,并且其属性和关系也是概念性的。

分析类分为边界类、实体类和控制类3种。

1)边界类(Boundary Classes)。边界类用于规约系统与其参与者之间的交互,该交互一般涉及向用户/外部系统发出请求和从他们那里接受信息。

2)实体类(Entity Classes)。实体类用于规约那些需要长期驻留在系统中的模型化对象以及与行为相关的某些现象,如人的信息以及实际的一个事件。

3)控制类(Control Classes)。控制类用于规约基本动作和控制流的处理与协调,涉及向其他对象(如边界类对象、实体类对象)委派工作。换言之,可用控制类来模型化系统的动态性,即可表达协同、定序、事务以及对其他对象的控制。

(2)用况细化(Use Case Realization)。用况细化是一个协作。针对一个用况,其行为可用多个分析类之间的相互作用来细化,并记为用况细化[分析]

(3)分析包(Analysis Package)。分析包是一种控制信息组织复杂性的机制,提供了分析制品的一种组织手段,形成了一些可管理的部分。

2.分析模型的表达

RUP中,一个系统的分析模型是由一个“分析系统”定义的,该分析系统包含一种具有层次结构的包,每一个包中可能包含一些分析类和用况细化[分析];并且一些分析类和用况细化[分析]还可单独地出现在分析模型中,以凸显它们在系统体系结构方面的作用。

3.分析的主要活动

创建系统的分析模型,一般应进行体系结构分析、用况分析、类的分析以及包的分析4项活动。

处理分析包之间共性的一般方法:抽取一些包中的共享分析类,而后把这些共享类放到一个包中,并让其他包依赖该类或依赖该类所在的包。

RUP中服务是指功能上紧密相关的、可被多个用况使用的一组动作。服务的主要特征是:服务是不能分割的,系统或完整地提供,或不提供;并且服务是针对客户而言的,而用况是针对用户而言的,即当细化一个用况时,可能需要多个服务,即一个用况需要多个不同服务中的动作。

4.小结

5.2.3 设计

一般地说,软件设计是定义满足需求规约所需要的软件结构。因此,RUP的设计目标是,定义满足系统/产品分析模型所规约需求的软件结构。

1.设计层的术语

(1)设计类(Design Class),一个设计类是对系统实现中一个类或类似构造的一个无缝抽象。设计类的主要特征:操作、属性、关系、方法、实现需求、是否为主动类。

(2)用况细化[设计]。用况细化[设计]是设计模型中的一个协作,其中使用设计类及其对象,描述一个特定用况是如何予以细化的,是如何执行的。

(3)设计子系统。设计子系统可以包含设计类、用况细化、接口,以及其他子系统,通过对其操作来显示其功能。

(4)接口(Interface)。接口用于规约由设计类和设计子系统提供的操作。

2.设计模型、部署模型以及相关视角下的体系结构描述。

3.设计的主要活动

4.RUP设计小结

5.2.4 RUP的实现和测试

1.RUP的实现

RUP实现的目标是:基于设计类和子系统生成构件;对构件进行单元测试,进行集成和连接;把可执行的构件映射到部署模型。

2.RUP的测试

RUP的测试包括内部测试、中间测试和最终测试。

5.3 本章小结

RUP是一种软件开发过程框架,基于面向对象符号体系给出了有关软件开发过程组织及实施的指导。该框架体现了3个突出特征,即以用况驱动、体系结构为中心以及迭代、增量式开发。

RUPUML是一对“姐妹”,它们构成了一种特定的软件开发方法学。其中,UML作为一种可视化建模语言,给出了表达事物和事物之间关系的基本术语,给出了多种模型的表达工具;而RUP利用这些术语定义了需求获取层、系统分析层、设计层、实现层,并给出了实现各层模型之间映射的基本活动以及相关的指导。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics