
2.2 使用Rational Rose建模
Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具,用于可视化建模和公司级水平软件应用的组件构造。
2.2.1 Rational Rose概述
Rational Rose包括UML、OOSE和OMT。其中UML由Rational公司的3位世界级面向对象技术专家Grady Booch、Ivar Jacobson和James Rumbaugh通过对早期面向对象研究和设计方法的进一步扩展而得来,为可视化建模软件奠定了坚实的理论基础。
1.Rational Rose简介
Rational Rose是一个完全的、具有能满足所有建模环境(Web开发、数据建模、Visual Studio和C++)灵活性需求的一套解决方案。Rational Rose允许开发人员、项目经理、系统工程师和分析人员在软件开发周期内将需求和系统的体系架构转换成代码,对需求和系统的体系架构进行可视化,以易于理解。在软件开发周期内使用同一种建模工具可以确保更快更好地创建满足客户需求的可扩展、灵活且可靠的应用系统。
在Rational Rose中,可以使用拖放符号的方法,将有用的元素、目标、消息/关系设计成各种类,并通过类来创建一个应用的模型框架。在创建模型的过程中,Rational Rose会进行记录并选择C++、Visual Basic、Java、Oracle、CORBA或者数据定义语言(Data Definition Language)来产生代码。
2.Rational Rose特征
Rational Rose的两个受欢迎的特征是它提供反复式发展和来回旅程工程的能力。Rational Rose允许设计师利用反复发展(有时也叫进化式发展),因而在各个进程中新的应用能够被创建,把一个反复的输出变成下一个反复的输入。然后,当开发者开始理解组件之间是如何相互作用并在设计中进行调整时,Rational Rose能够通过回溯和更新模型的其余部分来保证代码的一致性,从而展现出被称为“来回旅程工程”的能力。Rational Rose是可扩展的,可以使用可下载附加项和第三方应用软件,它支持COM/DCOM (ActiveX)、JavaBeans和Corba组件标准。
3.Rational Rose功能
Rational Rose是基于UML的可视化建模工具。UML是一种语言、一种表示方法、一种交流沟通的工具,特别适用于软件密集型系统的表示。
目前版本的Rational Rose可以实现下列功能:
□ 对业务进行建模(工作流)。
□ 建立对象模型(表达信息系统内有哪些对象,它们之间是如何协作完成系统功能的)。
□ 对数据库进行建模,并可以在对象模型和数据模型之间进行正、逆向工程,相互同步。
□ 建立构件模型(表达信息系统的物理组成,如有什么文件、进程、线程、如何分布等)。
□ 生成目标语言的框架代码,如VB、Java、Delphi等。
除此之外,Rational Rose并不是单纯的绘图工具,它专门支持UML建模,具有很强的校验功能;并且还支持多种语言的双向项目。Rational Rose早期不具备对数据库端建模的功能,但当前版本已经加入了数据库建模功能,也就是Rational Rose中的“Data Modeler”工具。利用它可将对象模型转换成数据模型,也可以将现有的数据模型转换成对象模型,从而实现两者间的同步。
具体来说,Data Modeler可以实现下列功能:
□ 将对象模型转换成数据模型,即将类映射到数据库的表,构成传统的E-R图(Data Modeler | Transform to Data Model)。
□ 将数据模型转换成对象模型(Data Modeler | Transform to Object Model)。
□ 利用数据模型生成数据库DDL,也可以直接连接到数据库里,对数据库产生结果(Data Modeler | Forward Engineer)。
□ 从现有数据库或DDL文件里生成数据模型(Data Modeler | Reverse Engineer)。
□ 将数据模型同DDL文件或现有数据库进行比较(Data Modeler | Compare to…)。
注意
一个类能被转换为一个数据库表,它的persistence属性必须是transient。
4.Rational Rose特点
作为一种建模工具,Rational Rose易于使用,支持使用多种构件和多种语言的复杂系统建模,并且可以利用双向项目支持实现迭代开发,而团队管理功能则可以支持大型、复杂的项目和大型且队员分散在各地的开发团队。
Rational Rose在建模方面具有下面6个特点。
1)保证模型和代码高度一致
Rational Rose可以实现真正意义上的正向、逆向和双向工程;在正向工程中,Rational Rose可以为建模生成相应的代码;在逆向工程中,Rational Rose可以从原来的软件系统中导出系统模型;在双向工程中,Rational Rose可以真正实现模型和代码之间的循环工程,从而保证模型与代码的高度一致性,并通过保护开关使得在双向工程中不会丢失或覆盖已经开放的任何代码。
2)支持多种语言
Rational Rose本身可以支持C++、Visual C++、Java、Smalltalk、Ada、Visual Basic和PowerBuilder,除此之外还可以为CORBA应用产生接口定义语言(IDL)和为数据库应用产生数据库描述语言(DDL)。
3)为团队开发提供强有力的支持
Rational Rose提供了两种团队开发方式,一种是采用SCM(软件配置管理)的团队开发方式;另一种是不采用SCM的团队开发方式。这两种开发方式为用户提供了极大的灵活性,用户可以根据开发模式、团队人员数目和资金情况来选择开发方式。
Rational Rose与ClearCase和SourceSafe(微软公司产品)等SCM工具实现了内部集成,在遵循微软版本控制系统的标准API-SCC(源代码控制)时,便可以将API的任何版本控制系统集成到Rational Rose中作为配置管理工具。
4)支持模型的Internet发布
Rational Rose的Internet Web Publisher能够创建一个基于Web的Rational Rose模型的HTML版本,使得其他人员能够通过标准的浏览器或IE来浏览该模型。
5)生成使用简单且定制灵活的文档
Rational Rose本身提供了直接产生模型文档功能,用户可以利用Rational文档生成工具SoDA提供的模型文档模板,轻松自如地自动生成OOA和OOD阶段所需要的各种重要文档。
值得注意的是,无论是Rational Rose自身还是SoDA所产生的文档均为Word文档,并且在Rational Rose中可以直接启动SoDA,而SoDA可以无缝集成Word。
6)支持关系数据库的建模
Rose增加了数据库建模功能,可以为ANSI、Oracle、SQL Server、Sybase和Watcom等支持标准DDL的数据库自动生成数据描述语言。
除上述特点之外,Rational Rose还可以与微软Visual Studio系列工具中的GUI进行完美结合,在为建模带来方便的同时也获得了大量用户的青睐,目前Rational Rose已成为大多数开发人员的首选建模工具。
Rational Rose是市场上第一个提供支持基于UML的数据建模和Web建模的工具,在开发过程中对各种语义、模块、对象以及流程、状态等描述,能够从各个方面和角度来分析和设计,使软件的开发蓝图更加清晰,内部结构更加明朗;但Rational Rose对数据库的迭代开发并不是很理想。RationalRose现在已经退出市场,不过仍有一些公司在使用,因而IBM推出了Rational Software Architect来替代Rational Rose。
2.2.2 Rational Rose工作环境
启动Rational Rose进入到主界面,Rational Rose的主界面由“浏览器窗口”“文档窗口”“工具箱”“模型图窗口”和“日志窗口”组成。

通过上图可以详细了解5种窗口的具体位置。下面详细介绍各种窗口的作用。
1.浏览器窗口
浏览器是层次结构,组成树形视图样式,用于在Rational Rose模型中迅速定位。浏览器可以显示模型中的所有元素,包括用例、关系、类和组件等。每个模型元素可能又包含其他元素。利用浏览器可以实现增加模型元素(如参与者、用例、类、组件、图等)、浏览器现有的模型元素、浏览器现有的模型元素之间的关系,移动模型元素,重命名模型元素,将模型元素添加到图中,将模型元素组成包,访问模型元素的详细规范等功能。
右击“浏览器窗口”,执行【Hide】命令即可隐藏该窗口。除此之外,还可以执行【View】|【Browser】命令,隐藏该窗口。隐藏该窗口之后,再次执行【View】|【Browser】命令,显示该窗口。
2.文档窗口
“文档窗口”用于建立、查看或更新模型元素的文档,如对浏览器中的每一个参与者写一个简要定义,只要在“文档窗口”中输入这个定义即可。将文档加入到类中时,从“文档窗口”输入的所有内容都将显示为代码的注释。而当在“浏览器窗口”或“模型图窗口”中选择不同的模型元素时,“文档窗口”会自动更新显示所选元素的文档。
3.工具箱
工具箱中包括适用于当前模型图的工具。工具箱中的工具并不是一成不变的,每个模型图都有各自对应的工具箱。例如,下图从左到右依次为协作图、顺序图、状态图和用例图模型的工具箱。

另外,Rational Rose还提供了定制工具箱功能。右击工具箱空白区域,执行【Customize】命令,可在弹出的【自定义工具栏】对话框中自定义工具箱中的工具。

4.模型图窗口
“模型图窗口”主要用于显示和编辑一个或几个UML框图,在该窗口中可以打开任意一个模型,并利用左边的工具箱对模型图进行浏览和修改。
当用户在“模型图窗口”中修改模型图中的元素时,Rational Rose会自动更新浏览器。同样,通过“浏览器窗口”修改模型图中的元素时,Rational Rose也会自动更新相应的图,从而保证模型的一致性。
5.日志窗口
“日志窗口”主要用于查看错误信息和报告各个命令的结果,在动作记录区中记录了用户对模型所做的所有重要动作。
2.2.3 Rational Rose中的视图
在了解Rational Rose中的视图之前,需要先了解一下模型、视图和图的概念。其中,“模型”是包含软件模式信息的元素,“视图”是模型中信息的可视化表达方法,而“图”则是表示用户特定设计思想的可视元素的集合。
Rational Rose模型中包含了用例视图(Use Case View)、逻辑视图(Logical View)、组件视图(Component View)和部署视图(Deployment View)4种视图,每种视图针对不同的对象,具有不同的作用。
1.用例视图
用例视图包含了系统中的所有参与者、用例和用例图,以及一些时序图和协作图。用例视图主要展示了系统的参与者和用例是如何相互作用的,它是系统中与现实无关的视图,只关注系统功能的高层形状,不关注系统的具体实现方法。

用例视图包含包(Package)、用例(Use Case)、参与者(Actor)、类(Class)、用例图(Use Case Diagram)、类图(Class Diagram)、顺序图(Sequence Diagram)、协作图(Collaboration Diagram)、活动图(Activity Diagram)和状态机图(Statechart Diagram)模型元素。
每个系统都会拥有一个主(Main)用例图,以及表示边界(参与者)和提供的大部分功能的元素。
2.逻辑视图
逻辑视图又称为设计视图,主要关注系统如何实现用例中提供的功能,并提供系统的详细图形和描述组件间如何关联。
逻辑视图中包含了类(Class)、类的效用(Class Utility)、用例(Use Case)、接口(Interface)、包(Package)、类图(Class Diagram)、用例图(Use Case Diagram)、顺序图(Sequence Diagram)、协作图(Collaboration Diagram)、活动图(Activity Diagram)和状态机图(Statechart Diagram)模型元素,利用这些细节元素,开发人员可以构造系统的详细信息。

系统中只有一个逻辑视图,它以图形的方式说明了关键的用例实现、子系统、包和类。
3.组件视图
组件视图显示代码模块间的关系,包含模型代码库、可执行文件、运行库和其他组件信息,组件是代码的实际模块。

组件图中包含了包(Package)、组件(Component)、组件图(Component Diagram)模型元素。
4.部署视图
部署视图显示进程和设备及其相互间的实际连接,它关注系统的实际部署,可能与系统的逻辑结构有所不同。例如,系统的逻辑结构可能为三层,但部署可能为两层。
部署图中包含了进程(Process)、处理器(Processor)和设备(Device)模型元素,除此之外,部署视图还需要处理一些容错、网络带宽、故障恢复和响应时间等其他问题。