RationalRose UML建模.docx
《RationalRose UML建模.docx》由会员分享,可在线阅读,更多相关《RationalRose UML建模.docx(40页珍藏版)》请在冰豆网上搜索。
RationalRoseUML建模
RationalRose简介
Rose模型(包括所有框图、对象和其他模型元素)都保存在一个扩展名为.mdl的文件中。
RationalRose中用例视图和逻辑视图的区别用例视图是从系统外部来看系统,逻辑视图是描述系统的内部结构。
两者之间的关系是实现关系,即,逻辑视图所描述的系统实现用例视图所描述的功能。
举个最简单的例子吧:
对于很多系统都有的用户登录功能
在用例视图中只描述用户在什么样的界面登录(是登录对话框,还是指纹鉴别器,还是身份识别卡,也许都可以),如何登录(是输入口令,还是将手指放在指纹阅读器上,还是将身份识别卡在读卡器上划过),系统有什么响应(登录成功后是显示正确提示,还是有悦耳的声音)。
但不会描述系统内部如何去验证用户。
而在逻辑视图中则是描述系统如何验证用户,可能有一个登录界面类,有一个用户认证控制类,及用户信息存储类,以及这些类如何相互运作以完成用户认证,总之要将用例视图中提到的功能全部正确的实现。
1.环境简介
1.1RationalRose可视化环境组成
Rose界面的五大部分是浏览器、文档工具、工具栏、框图窗口和日志。
见图1-1。
图1-1:
Rose界面
●浏览器:
用于在模型中迅速漫游。
●文档工具:
用于查看或更新模型元素的文档。
●工具栏:
用于迅速访问常用命令。
●框图窗口:
用于显示和编辑一个或几个UML框图。
●日志:
用于查看错误信息和报告各个命令的结果。
1.2浏览器和视图
浏览器是层次结构,用于在Rose模型中迅速漫游。
在浏览器中显示了模型中增加的一切,如参与者、用例、类、组件等等。
Rose浏览器见图1-2。
浏览器中包含四个视图:
UseCase视图、Logical视图、Component视图和Deployment视图。
点击每个视图的右键,选择new就可以看到这个视图所包含的一些模型元素。
图1-2:
Rose浏览器
1.3框图窗口
在图1-3所示的框图窗口中,我们可以浏览模型中的一个或几个UML框图。
改变框图中的元素时,Rose自动更新浏览器。
同样用浏览器改变元素时,Rose自动更新相应框图。
这样,Rose就可以保证模型的一致性。
图1-3:
框图窗口
2.UML各类框图的建立
2.1建立用例图usecasediagram
从用例图中我们可以看到系统干什么,与谁交互。
用例是系统提供的功能,参与者是系统与谁交互,参与者可以是人、系统或其他实体。
一个系统可以创建一个或多个用例图。
●创建用例图(图2-1-1)
在浏览器内的UseCase视图中,双击Main,让新的用例图显示在框图窗口中。
也可以新建一个包(右击UseCase视图,选择new→package,并命名),然后右击这个新建包的,选择new→usecasediagram。
对系统总的用例一般画在UseCase视图中的Main里,如果一个系统可以创建多个用例图,则可以用包的形式来组织。
图2-1-1:
创建用例图
●创建参与者(图2-1-2)
(1)在工具栏中选择“Actor”,光标的形状变成加号。
(2)在用例图中要放置参与者符号的地方单击鼠标左键,键入新参与者的名称,如“客户”。
若要简要的说明参与者,可以执行以下步骤:
(1)在用例图或浏览器中双击参与者符号,打开对话框,而且已将原型(stereotype)设置定义为“Actor”。
(2)打开“General”选项卡,在documentation字段中写入该参与者的简要说明。
(3)单击OK按钮,即可接受输入的简要说明并关闭对话框。
图2-1-2:
创建参与者
●创建用例(图2-1-3)
(1)在工具栏中选择“UseCase”,光标的形状变成加号。
(2)在用例图中要放置用例符号的地方单击鼠标左键,键入新用例的名称,如“存款”。
若要简要的说明用例,可以执行以下步骤:
(1)在用例图或浏览器中双击用例符号,打开对话框,接着打开“General”选项卡。
(2)在documentation字段中写入该用例的简要说明。
(3)单击OK按钮,即可接受输入的简要说明并关闭对话框。
图2-1-3:
创建用例
●记录参与者和用例之间的关系(图2-1-4)
(1)从工具栏中选择关联关系箭头。
(2)将光标定位在用例图中的参与者上,单击鼠标左键并将光标移动到用例符号上,然后释放鼠标左键。
若要简要的说明关系,可以执行以下步骤:
(1)在用例图中双击关联关系符号,打开对话框。
(2)在默认情况下,将显示对话框中的“General”选项卡。
(3)在documentation字段中写入简要说明。
(4)单击OK按钮,即可接受输入的简要说明并关闭对话框。
图2-1-4:
参与者和用例的关系
●增加泛化关系(图2-1-5)
(1)从工具栏中选择泛化关系箭头。
(2)从子用例拖向父用例,也可从子参与者拖向父参与者。
简要说明关系执行的步骤同上类似。
图2-1-5:
增加泛化关系
★练习:
画ATM(自动柜员机)系统总的用例图
理解:
对于银行的客户来说,可以通过ATM机启动几个用例:
存款、取款、查阅结余、付款、转帐和改变PIN(密码)。
银行官员也可以启动改变PIN这个用例。
参与者可能是一个系统,这里信用系统就是一个参与者,因为它是在ATM系统之外的。
箭头从用例到参与者表示用例产生一些参与者要使用的信息。
这里付款用例向信用系统提供信用卡付款信息。
2.2建立活动图activitydiagram
活动图显示了从活动到活动的流。
活动图可以在分析系统业务时用来演示业务流,也可以在收集系统需求的时候显示一个用例中的事件流。
活动图显示了系统中某个业务或者某个用例中,要经历哪些活动,这些活动按什么顺序发生。
●创建活动图(图2-2-1)
(1)用于分析系统业务:
在浏览器中右击UseCase视图,选择new→activitydiagram。
(2)用于显示用例中的事件流:
在浏览器中选中某个用例,然后右击这个用例,选择new→activitydiagram。
图2-2-1:
创建活动图
●增加泳道(图2-2-2)
泳道是框图里的竖段,包含特定人员或组织要进行的所有活动。
可以把框图分为多个泳道,每个泳道对应每个人员或组织。
在工具栏选择swimlane按钮,然后单击框图增加泳道,最后用人员或组织给泳道命名。
图2-2-2:
增加泳道
●增加活动并设置活动的顺序(图2-2-3)
(1)在工具栏中选择Activity按钮,单击活动图增加活动,命名活动。
(2)在工具栏中选择Transition按钮,把箭头从一个活动拖向另一个活动。
图2-2-3:
增加活动
●增加同步(图2-2-4)
(1)选择synchronization工具栏按钮,单击框图来增加同步棒。
(2)画出从活动到同步棒的交接箭头,表示在这个活动之后开始并行处理。
(3)画出从同步棒到可以并行发生的活动之间的交接箭头。
(4)创建另一同步棒,表示并行处理结束。
(5)画出从同步活动到最后同步棒之间的交接箭头,表示完成所有这些活动之后,停止并行处理。
图2-2-4:
增加同步
●增加决策点(图2-2-5)
决策点表示可以采取两个或多个不同的路径。
从决策到活动的交接箭头要给出保证条件,控制在决策之后采取什么路径。
保证条件应该是互斥的。
(1)选择decision工具栏按钮,单击框图增加决策点。
(2)拖动从决策到决策之后可能发生的活动之间的交接,双击交接,打开“detail”选项卡,在GuardCondition字段中写入保证条件。
图2-2-5:
增加决策点
★练习:
画ATM系统中“客户插入卡”的活动图
理解:
客户插入信用卡之后,可以看到ATM系统运行了三个并发的活动:
验证卡、验证PIN(密码)和验证余额。
这三个验证都结束之后,ATM系统根据这三个验证的结果来执行下一步的活动。
如果卡正常、密码正确且通过余额验证,则ATM系统接下来询问客户有哪些要求也就是要执行什么操作。
如果验证卡、验证PIN(密码)和验证余额这三个验证有任何一个通不过的话,ATM系统就把相应的出错信息在ATM屏幕上显示给客户。
2.3建立类图classdiagram
类图显示系统之中类和类之间的交互。
●创建类(图2-3-1)
在RationalRose中可以通过几种途径来创建类。
最简单的方法是利用模型的Logic视图中的类图标和绘图工具,在图中创建一个类。
或者,在浏览器中选择一个包并使用快捷菜单的new→class。
一旦创建了一个类,就可以通过双击打开它的对话框并在Documentation字段中添加文本来对这个类进行说明。
图2-3-1:
创建类
●创建方法(图2-3-2)
(1)选择浏览器中或类图上的类。
(2)使用快捷菜单的new→Operation
(3)输入方法的名字,可在Documentation字段中为该方法输入描述其目的的简要说明。
图2-3-2:
创建方法和属性
●创建属性(图2-3-2)
(1)选择浏览器中或类图上的类。
(2)使用快捷菜单的new→Attribute。
(3)输入属性的名字,可在Documentation字段中为该属性输入描述其目的的简要说明。
●创建类图(图2-3-3)
右击浏览器内的Logical视图,选择new→classdiagram。
把浏览器内的类拉到类图中即可。
图2-3-3:
创建类图
●创建类之间的关系
(1)类之间的关系在工具栏中显示。
(2)对于关联关系来说,双击关联关系,就可以在弹出的对话框中对关联的名称和角色进行编辑(图2-3-4)。
(3)编辑关联关系的多重性:
右单击所要编辑的关联的一端,从弹出的菜单中选择Multiplicity,然后选择所要的基数(图2-3-5)。
图2-3-4:
创建类之间关联的名称和角色
图2-3-5:
关联的多重性编辑
★练习:
画ATM系统中取款这个用例的类图
理解:
类图显示了取款这个用例中各个类之间的关系,由四个类完成:
读卡机、账目、ATM屏幕和取钱机。
类图中每个类都是用方框表示的,分成三个部分。
第一部分是类名;第二部分是类包含的属性,属性是类和相关的一些信息,如账目类包含了三个属性:
账号、PIN(密码)和结余;最后一部分包含类的方法,方法是类提供的一些功能,例如帐目类包含了四个方法:
打开、取钱、扣钱和验钱数。
类之间的连线表示了类之间的通信关系。
例如,账目类连接了ATM屏幕,因为两者之间要直接相互通信;取钱机和读卡机不相连,因为两者之间不进行通信。
有些属性和方法的左边有一个小锁的图标,表示这个属性和方法是private的(UML中用’-’表示),该属性和方法只在本类中可访问。
没有小锁的,表示public(UML中用’+’表示),即该属性和方法在所有类中可访问。
若是一个钥匙图标,表示protected(UML中用’#’表示),即属性和方法在该类及其子类中可访问。
2.4建立交互图interactiondiagram
2.4.1序列图sequencediagram
序列图显示用例中的功能流程。
●创建序列图(图2-4-1)
在浏览器内的Logic视图中单击鼠标右键,选择new→sequencediagram就新建了一张序列图。
也可以在浏览器中usecase视图中选择某个用例,然后右击这个用例,选择new→sequencediagram。
图2-4-1:
创建序列图
●在序列图中放置参与者和对象(图2-4-2)
在序列图中的主要元素之一就是对象,相似的对象可以被抽象为一个类。
序列图中的每个对象代表了某个类的某一实例。
(1)把用例图中的该用例涉及的所有参与者拖到sequence图中。
(2)选择工具栏中的object按钮,单击框图增加对象。
可以选择创建已有类的对象,也可以在浏览器中新建一个类,再创建新的类的对象。
双击对象,在弹出的对话框中的“class”里确定该对象所属的类。
(3)对象命名:
对象可以命名也可没名字。
双击对象,在弹出的对话框中的“name”里给对象取名。
图2-4-2:
放置参与者和对象
●说明对象之间的消息(图2-4-3)
(1)选择message工具栏按钮。
(2)单击启动消息的参与者或对象,把消息拖到目标对象和参与者。
(3)命名消息。
双击消息,在对话框中“General”里的“name”中输入消息名称。
图2-4-3:
对象之间的消息
★练习:
画某客户Joe取20美元的序列图
理解:
序列图显示了用例中的功能流程。
我们对取款这个用例分析,它有很多可能的程序,如想取钱而没钱,想取钱而PIN错等等,正常的情况是取到了钱,下面的序列图就对某客户Joe取20美元,分析它的序列图。
序列图的顶部一般先放置的是取款这个用例涉及的参与者,然后放置系统完成取款用例所需的对象,每个箭头表示参与者和对象或对象之间为了完成特定功能而要传递的消息。
取款这个用例从客户把卡插入读卡机开始,然后读卡机读卡号,初始化ATM屏幕,并打开Joe的账目对象。
屏幕提示输入PIN,Joe输入PIN(1234),然后屏幕验证PIN与账目对象,发出相符的信息。
屏幕向Joe提供选项,Joe选择取钱,然后屏幕提示Joe输入金额,它选择20美元。
然后屏幕从账目中取钱,启动一系列账目对象要完成的过程。
首先,验证Joe账目中至少有20美元;然后,它从中扣掉20美元,再让取钱机提供20美元的现金。
Joe的账目还让取钱机提供收据,最后它让读卡机退卡。
2.4.2协作图collaborationdiagram
协作图的创建,以及在协作图中放置参与者和对象和序列图类似。
只不过对象之间的链接有所不同。
●增加对象链接(图2-4-4)
(1)选择ObjectLink工具栏按钮。
(2)单击要链接的参与者或对象。
(3)将对象链接拖动到要链接的参与者或对象。
图2-4-4:
增加对象链接
●加进消息(图2-4-5)
(1)选择LinkMessage或ReverseLinkMessage工具栏按钮。
(2)单击要放消息的对象链接。
(3)双击消息,可以在弹出的对话框里为消息命名
图2-4-5:
加进消息
●自反链接(图2-4-6)
(1)选择LinktoSelf工具栏按钮。
(2)单击要链接的对象,会增加一个消息的箭头。
(3)双击消息,命名自反链接。
图2-4-6:
建立自反链接
★练习:
画某客户Joe取20美元的协作图
理解:
协作图显示的信息和序列图是相同的,只是协作图用不同的方式显示而已。
序列图显示的是对象和参与者随时间变化的交互,而协作图则不参照时间而显示对象与参与者的交互。
例如,Joe取20美元的协作图中我们可以看到,读卡机和Joe的账目两个对象之间的交互:
读卡机指示Joe的账目打开,Joe的账目让读卡机退卡。
直接相互通信的对象之间有一条直线,例如ATM屏幕和读卡机直接相互通信,则其间画一条直线。
没有画直线的对象之间不直接通信。
2.4.3序列图和协作图之间的转换
在序列图中按F5键就可以创建相应的协作图;同样,在协作图中按F5键就可以创建相应的序列图。
序列图和协作图是同构的,也就是说两张图之间的转换没有任何信息的损失。
2.5建立状态图statechartdiagram
状态图显示了对象的动作行为,显示对象可能存在的各种状态,对象创建时的状态,对象删除时的状态,对象如何从一种状态转移到另一种状态,对象在不同状态中干什么。
●创建状态图(图2-5-1)
(1)在浏览器中右击类。
(2)选择new→statechartdiagram,对该类创建一个状态图,并命名该图。
图2-5-1:
创建状态图
●在图中增加状态,初始和终止状态(图2-5-2)
(1)选择工具栏的state按钮,单击框图增加一个状态,双击状态命名。
(2)选择工具栏的startstate和endstate,单击框图增加初始状态和终止状态。
初始状态是对象首次实例化时的状态,状态图中只有一个初始状态。
终止状态表示对象在内存中被删除之前的状态,状态图中有0个、1个或多个终止状态。
图2-5-2:
增加状态
●状态之间增加交接
(1)选择statetransition工具栏按钮。
(2)从一种状态拖到另一种状态。
(3)双击交接弹出对话框,可以在“General”中增加事件(Event)(图2-5-3),在“Detail”中增加保证条件(GuardCondition)(图2-5-4)等交接的细节。
事件用来在交接中从一个对象发送给另一个对象,保证条件放在中括号里,控制是否发生交接。
图2-5-3:
增加事件
图2-5-4:
增加保证条件
●在状态中增加活动(图2-5-5)
(1)右击状态并选择openspecification。
(2)选择Action标签,右击空白处并选择Insert。
(3)双击新活动(清单中有“Entry/”)打开活动规范,在“name”中输入活动细节。
图2-5-5:
在状态中增加活动
★练习:
账目类的状态图
理解:
银行账目可能有几种不同的状态,可以打开、关闭或透支。
账目在不同状态下的功能是不同的,账目可以从一种状态变到另一种状态。
例如,账目打开而客户请求关闭账目时,账目转入关闭状态。
客户请求是事件,事件导致账目从一个状态过渡到另一个状态。
如果账目打开而客户要取钱,则账目可能转入透支状态。
这发生在账目结余小于0时,框图中显示为[结余<0]。
方括号中的条件称为保证条件,控制状态的过渡能不能发生。
对象处在特定状态时可能发生某种事件。
例如,账目透支时,要通知客户。
*2.6建立构件图componentdiagram
构件图显示模型的物理视图,也显示系统中的软件构件及其相互关系。
模型中的每个类映射到源代码构件。
一旦创建构件,就加进构件图中,然后画出构件之间的相关性。
构件间的相关性包括编译相关性和运行相关性。
●创建构件图(图2-6-1)
(1)右单击浏览器中的Component视图。
(2)选择New→ComponentDiagram,并命名新的框图。
图2-6-1:
创建构件图
●把构件加入框图(图2-6-2)
(1)选择Component工具栏按钮,单击框图增加构件,并命名构件。
(2)右单击构件,选择OpenSpecification,在“stereotype”中设置构件版型。
图2-6-2:
设置构件版型
★练习:
ATM系统客户的构件图
理解:
例如我们用C++建立系统,每个类有自己的头文件和体文件,因此图中每个类映射自己的构件,例如ATM屏幕类映射两个ATM屏幕构件。
这两个ATM屏幕构件表示ATM屏幕类的头和体。
阴影构件称为包体,表示C++中ATM屏幕类的体文件(.cpp),构件版型是packagebody。
无阴影的构件称为包规范,这个包规范表示C++类的头文件(.H),构件版型是packagespecification。
构件ATM.exe是个任务规范,表示处理线程,是一个可执行程序。
*2.7建立实施图deploymentdiagram
实施图显示网络的物理布局,系统中涉及的处理器、设备、连接和过程。
处理器是网络中处理功能所在的机器,包括服务器和工作站,不包括打印机扫描仪之类的设备。
处理器用来运行进程(执行代码)。
一个项目只有一个实施图。
●创建实施图(图2-7-1)
(1)双击Deployment视图。
(2)选择Processor工具栏按钮,单击框图增加处理器,并命名处理器。
(3)在Deployment视图中右击处理器并选择New→Process,命名进程。
(4)在框图中右击处理器,对“ShowProcesses”打勾,可以在框图中显示该处理器的进程。
图2-7-1:
创建实施图
●把设备加入到框图中(图2-7-2)
(1)选择Device工具栏按钮。
(2)单击框图增加设备,并命名。
图2-7-2:
加入设备
●把连接加进框图(图2-7-3)
(1)选择Connection工具栏按钮。
(2)单击要连接的一个处理器或设备,拖动到要连接的另一个处理器或设备。
(3)命名连接。
图2-7-3:
加入连接
★练习:
ATM系统的实施图
理解:
ATM系统的实施图显示了系统的主要布局。
ATM客户机可执行文件在不同地点的多个ATM上运行。
ATM客户机通过专用网与地区ATM服务器通信。
ATM服务器可执行文件在地区ATM服务器上执行。
地区ATM服务器又通过局域网与运行Oracle的银行数据库服务器通信。
最后,打印机与地区ATM服务器连接。
ATM系统采用了三层结构,分别针对数据库、地区ATM服务器和客户机。