Rose使用示例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附录3 建模工具Rose的使用
可视化建模使用标准图形元素直观地构造系统,面向对象方法的标准图形建模语言是UML。
手工绘制UML图形是一件困难的事情,只有借助于建模工具才能提高工作效率和工作质量。
Rational Rose就是一种使用UML快速开发应用程序的建模工具之一。
它不仅支持UML9种图形,而且具有正向和逆向转出工程代码的特性,包括C++、Java、VB等语言代码。
也能支持数据模型的建立,并生成DDL脚本文件。
本附录以一个图书订单处理业务为例,介绍如何使用Rose进行面向对象分析与设计。
1.Rose基本结构
使用Rose的第一步会出现图1所示的启动窗口。
该窗口提示是创建一个新模型还是打开一个既有模型(后缀为.mdl)。
如果创建新模型,可以选择图1所显示的可用框架,然后按下OK按钮,由此创建的模型中自动装入该框架的默认包、类和组件。
或者选择Cancel 创建一个不使用任何框架的模型。
图1 启动Rose
第一步确定后,就会打开图2所示的Rose主界面。
主界面包含五大部分:导航窗口、绘图窗口、工具栏、文档窗口和日志窗口。
它们的作用分别介绍如下:
图1 Rose 窗口界面
● 导航窗口
用于在模型中迅速漫游。
导航窗口以树状结构显示了模型中的所有元素,包括参与者、用例、类、组件、图等。
如同文件一样用户可以创建包,包下还可以创建子包,从而可以将繁多的元素纳入不同的包,达到有效组织和管理的目的。
在导航窗口中有四个视图根节点:
(1) 用例视图(Use Case View ):用于管理需求分析获取的所有用例、参与者和用例图。
(2) 逻辑视图(Logical View ):分析和设计完成的所有制品放置在逻辑视图中,包括所有的类、类图、用例实现的交互图等。
(3) 组件视图(Component View ):逻辑视图中的类实现后成为软件组件,可以在组件视图中创建这些组件,并绘制组件图描述它们之间的依赖关系。
(4) 部署视图(Deployment View ):系统最终要实现物理部署,在部署视图中创建物理系统中的节点和节点的连接,并描述软件组件在物理节点中的分布。
● 绘图窗口
当在导航窗口中选中某个图双击后,就会打开一个绘图窗口并显示该图,可以使用左边的绘图工具栏进行绘图。
根据图型的不同,工具栏提供与之相应的图形符号。
● 工具栏
提供了所有UML 中的图示符号,包括用例、参与者、类、关系、注释等等。
按下任意一个图形元素,就可以在绘图窗口中绘制出来。
● 文档窗口
图形符号提供的信息量经过了抽象和压缩,提供的信息量有限,每张图或每个图形元素的详细信息可以补充在文档窗口中。
比如书写用例规约时,只要在绘图窗口中点击选中某个用例,然后在文档窗口中输入规约内容,系统自动就会保存文档内容并与该用例关联起来。
● 日志窗口:
使用Rose 工具时,有些信息会在日志窗口中显示。
比如在生成代码时可能发生的任何错误。
2.建立用例模型
展开导航窗口中的用例视图,双击Rose 自动产生的名称为main 的用例图,在绘图窗口绘图窗口 文档窗口 日志窗口
导
航
窗口
工具栏
中绘制系统用例图(图3所示)。
也可以在选择用例视图后,点击鼠标右键创建一个新的用例图(右键菜单的New→Use Case Diagram),或者建一个包(右键菜单的New→Package),在包下创建用例图。
图3 用例图
用例图完成后,应对每个用例进行详细说明,其中最重要的是书写用例规约。
可以在文档窗口中书写,也可以双击用例打开图4所示的对话框,在该对话框中对用例进行详细描述。
图4 用例详细定义对话框
3.建立领域类图
识别了业务领域中的事物后,可以在逻辑视图下构建领域类图(右键菜单的New→Class Diagram),见图5。
鼠标双击某个类,可以打开类的详细定义对话框,该对话框包括类的各种特性选择,并能够添加类的属性,如图6所示。
图5 类图
图6 类详细定义对话框
4.设计控制类和边界类
分析和设计可以使用不同的模型,比如分别保存为不同的模型文件。
也可以直接在原有分析模型上进行设计。
在设计过程中需要添加控制类和边界类,在Rose中将它们划分为不同的构造型。
通过在类的详细定义对话框对stereotype选项设置boundary、control或entity 类型值,模型中的类将以不同的图形符号表示,如图7所示。
从图7中的导航窗口可以看出,可以将类按照类型划分到不同名称的包中,从而易于查找和管理。
图7 包含实体类和界面类的设计类图
5.绘制顺序图
每个用例的实现都是通过以上设计的类共同协作来完成,可以在逻辑视图中建立一个用例实现包,在包中创建顺序图(右键菜单的New→Sequence Diagram),对每个用例的实现绘制顺序图。
顺序图的绘制方法如下:先从导航窗口中将参与用例实现的用例参与者和对象类用鼠标托放到绘图窗口中。
然后根据执行顺序添加从源对象到目标对象的消息,如果消息的接收者对该消息不能独立处理,则继续向其它的对象发送请求服务的消息。
根据消息顺序Rose自动为每个消息生成消息序号。
如图8所示。
图8 用例的顺序图
在绘制顺序图的初始阶段,所有消息可以使用便于理解的自然语言短语来描述,在细化阶段应将消息对应到类的方法。
具体方法是选择某个消息,点击鼠标右键执行“<new operation>”菜单命令,就会弹出图9所示的对话框创建类的方法,方法的详细定义如参数、返回值都在该对话框中进行设置。
通过该步骤创建的方法自动归属到接收对象所在的类,最
终会在类图中显示出来。
图9 方法的详细定义对话框
6.设计组件
逻辑设计完成后,开始进行软件的物理设计,即系统所包含的物理组件及其关系。
在组件视图下创建组件图,可以直接点击名称为Main的组件图打开绘图窗口,添加组件,如图10所示。
图10 组件图
通过双击组件,打开图11所示的对话框,从而对组件的类型和所使用的编程语言等特性进行设置。
图11 设置组件属性
每个组件都是一个或多个类的实现体,组件中包含哪些类应该在模型中进行定义,这项工作在组件的详细定义对话框的“Realizes”选项卡中完成。
在该选项卡中会列出模型中的所有类,选择某个类,点击鼠标右键弹出菜单,执行菜单中的“Assign”或“Remove Assignment”命令可以将该类分配到所在组件或从组件中移除。
一个组件中的所有类,在生成代码时被创建在一个应用程序(如VB的工程)中。
图12 将类分配到组件
7.生成代码(正向工程)
建模工作结束后,Rose可以自动生成和模型相对应的代码。
选择组件,执行图13所示的鼠标右键弹出菜单命令“Update Code”,系统提示完成相关操作。
本案例的组件所用语言为VB6.0,所以生成的工程如图14所示,其中包含了多个类模块。
图13 为组件生成代码
图14 自动生成的VB代码
当尝试把模型组件转化成代码框架时,对于有些语言环境应先检查将要生成的类有无语法错误。
如果有错误,那么生成的代码很可能无法通过编译。
8.由代码修改模型(逆向工程)
当程序员修改了代码,Rose提供由代码反向修改模型的功能。
选择组件,执行图13所示的鼠标右键弹出菜单命令“Update Model from Code”,系统提示完成相关操作。
9.建立数据模型
由于领域模型中的类通常都有持久存储的需求,使用关系型数据库解决持久存储是最常见的解决方案。
Rose提供从类模型到数据模型的直接转换功能。
具体步骤如下:
(1) 将需要持久化的类放入一个包中,如实体类包。
(2) 设置类的持久化特性和充当数据库关系表主键的属性,通过双击类打开图15所示的对话框,选中“Detail”选项卡中的“Persistent”特性,在导航窗口中展开类的属性,选择类的某个属性,如bookID,选中右键菜单中的“Data Modeler”的“Part of Object Identity”属性,这样在生成数据模型时,该属性就成为表的主关键字。
图15 设置持久类
图16 设置主键属性
(3) 在组件视图中创建数据库组件,在组件视图根节点下执行鼠标右键菜单中的“Data Modeler→New→Database”命令。
数据库组件创建好后,可以双击该组件,设置DBMS的类型,如指定Oracle、SQL Server 2000或者其它数据库管理系统(图17)。
图17 设置数据库组件属性
(4) 生成数据库模型。
选择持久类的包,执行鼠标右键菜单“Data Modeler→Transform to Data Model”命令(图18),根据所选数据库组件自动生成数据库模式(schema),在导航窗口中显示对应于持久类的所有数据库表。
双击表名可以对表进行详细设计,比如定义约束、触发器等。
图18 生成数据库模式
(5) 生成数据库DDL脚本文件。
在导航窗口中选择所生成的数据库模式,执行鼠标右键菜单中的“Data Modeler→Forward Engineer”命令(图19所示),生成如图18所示的数据库DDL脚本文件,该文件可以直接在数据库平台上运行。
图19 生成数据库DDL
图20 生成的DDL脚本。