1RationalRose简介Rose模型(包括所有框图、对象和其他模型元素)都保存在一个扩展名为.mdl的文件中。1.环境简介1.1RationalRose可视化环境组成Rose界面的五大部分是浏览器、文档工具、工具栏、框图窗口和日志。见图1-1。图1-1:Rose界面浏览器:用于在模型中迅速漫游。文档工具:用于查看或更新模型元素的文档。工具栏:用于迅速访问常用命令。框图窗口:用于显示和编辑一个或几个UML框图。日志:用于查看错误信息和报告各个命令的结果。21.2浏览器和视图浏览器是层次结构,用于在Rose模型中迅速漫游。在浏览器中显示了模型中增加的一切,如参与者、用例、类、组件等等。Rose浏览器见图1-2。浏览器中包含四个视图:UseCase视图、Logical视图、Component视图和Deployment视图。点击每个视图的右键,选择new就可以看到这个视图所包含的一些模型元素。图1-2:Rose浏览器1.3框图窗口在图1-3所示的框图窗口中,我们可以浏览模型中的一个或几个UML框图。改变框图中的元素时,Rose自动更新浏览器。同样用浏览器改变元素时,Rose自动更新相应框图。这样,Rose就可以保证模型的一致性。图1-3:框图窗口32.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)设置4定义为“Actor”。(2)打开“General”选项卡,在documentation字段中写入该参与者的简要说明。(3)单击OK按钮,即可接受输入的简要说明并关闭对话框。图2-1-2:创建参与者创建用例(图2-1-3)(1)在工具栏中选择“UseCase”,光标的形状变成加号。(2)在用例图中要放置用例符号的地方单击鼠标左键,键入新用例的名称,如“存款”。若要简要的说明用例,可以执行以下步骤:(1)在用例图或浏览器中双击用例符号,打开对话框,接着打开“General”选项卡。(2)在documentation字段中写入该用例的简要说明。(3)单击OK按钮,即可接受输入的简要说明并关闭对话框。5图2-1-3:创建用例记录参与者和用例之间的关系(图2-1-4)(1)从工具栏中选择关联关系箭头。(2)将光标定位在用例图中的参与者上,单击鼠标左键并将光标移动到用例符号上,然后释放鼠标左键。若要简要的说明关系,可以执行以下步骤:(1)在用例图中双击关联关系符号,打开对话框。(2)在默认情况下,将显示对话框中的“General”选项卡。(3)在documentation字段中写入简要说明。(4)单击OK按钮,即可接受输入的简要说明并关闭对话框。6图2-1-4:参与者和用例的关系增加泛化关系(图2-1-5)(1)从工具栏中选择泛化关系箭头。(2)从子用例拖向父用例,也可从子参与者拖向父参与者。简要说明关系执行的步骤同上类似。7图2-1-5:增加泛化关系★练习:画ATM(自动柜员机)系统总的用例图理解:对于银行的客户来说,可以通过ATM机启动几个用例:存款、取款、查阅结余、付款、转帐和改变PIN(密码)。银行官员也可以启动改变PIN这个用例。参与者可能是一个系统,这里信用系统就是一个参与者,因为它是在ATM系统之外的。箭头从用例到参与者表示用例产生一些参与者要使用的信息。这里付款用例向信用系统提供信用卡付款信息。82.2建立活动图activitydiagram活动图显示了从活动到活动的流。活动图可以在分析系统业务时用来演示业务流,也可以在收集系统需求的时候显示一个用例中的事件流。活动图显示了系统中某个业务或者某个用例中,要经历哪些活动,这些活动按什么顺序发生。创建活动图(图2-2-1)(1)用于分析系统业务:在浏览器中右击UseCase视图,选择new→activitydiagram。(2)用于显示用例中的事件流:在浏览器中选中某个用例,然后右击这个用例,选择new→activitydiagram。图2-2-1:创建活动图增加泳道(图2-2-2)泳道是框图里的竖段,包含特定人员或组织要进行的所有活动。可以把框图分为多个泳道,每个泳道对应每个人员或组织。在工具栏选择swimlane按钮,然后单击框图增加泳道,最后用人员或组织给泳道命名。9图2-2-2:增加泳道增加活动并设置活动的顺序(图2-2-3)(1)在工具栏中选择Activity按钮,单击活动图增加活动,命名活动。(2)在工具栏中选择Transition按钮,把箭头从一个活动拖向另一个活动。10图2-2-3:增加活动增加同步(图2-2-4)(1)选择synchronization工具栏按钮,单击框图来增加同步棒。(2)画出从活动到同步棒的交接箭头,表示在这个活动之后开始并行处理。(3)画出从同步棒到可以并行发生的活动之间的交接箭头。(4)创建另一同步棒,表示并行处理结束。(5)画出从同步活动到最后同步棒之间的交接箭头,表示完成所有这些活动之后,停止并行处理。11图2-2-4:增加同步增加决策点(图2-2-5)决策点表示可以采取两个或多个不同的路径。从决策到活动的交接箭头要给出保证条件,控制在决策之后采取什么路径。保证条件应该是互斥的。(1)选择decision工具栏按钮,单击框图增加决策点。(2)拖动从决策到决策之后可能发生的活动之间的交接,双击交接,打开“detail”选项卡,在GuardCondition字段中写入保证条件。图2-2-5:增加决策点★练习:画ATM系统中“客户插入卡”的活动图12理解:客户插入信用卡之后,可以看到ATM系统运行了三个并发的活动:验证卡、验证PIN(密码)和验证余额。这三个验证都结束之后,ATM系统根据这三个验证的结果来执行下一步的活动。如果卡正常、密码正确且通过余额验证,则ATM系统接下来询问客户有哪些要求也就是要执行什么操作。如果验证卡、验证PIN(密码)和验证余额这三个验证有任何一个通不过的话,ATM系统就把相应的出错信息在ATM屏幕上显示给客户。2.3建立类图classdiagram类图显示系统之中类和类之间的交互。创建类(图2-3-1)在RationalRose中可以通过几种途径来创建类。最简单的方法是利用模型的Logic视图中的类图标和绘图工具,在图中创建一个类。或者,在浏览器中选择一个包并使用快捷菜单的new→class。一旦创建了一个类,就可以通过双击打开它的对话框并在Documentation字段中添加文本来对这个类进行说明。13图2-3-1:创建类创建方法(图2-3-2)(1)选择浏览器中或类图上的类。(2)使用快捷菜单的new→Operation(3)输入方法的名字,可在Documentation字段中为该方法输入描述其目的的简要说明。14图2-3-2:创建方法和属性创建属性(图2-3-2)(1)选择浏览器中或类图上的类。(2)使用快捷菜单的new→Attribute。(3)输入属性的名字,可在Documentation字段中为该属性输入描述其目的的简要说明。创建类图(图2-3-3)右击浏览器内的Logical视图,选择new→classdiagram。把浏览器内的类拉到类图中即可。15图2-3-3:创建类图创建类之间的关系(1)类之间的关系在工具栏中显示。(2)对于关联关系来说,双击关联关系,就可以在弹出的对话框中对关联的名称和角色进行编辑(图2-3-4)。(3)编辑关联关系的多重性:右单击所要编辑的关联的一端,从弹出的菜单中选择Multiplicity,然后选择所要的基数(图2-3-5)。16图2-3-4:创建类之间关联的名称和角色图2-3-5:关联的多重性编辑17★练习:画ATM系统中取款这个用例的类图理解:类图显示了取款这个用例中各个类之间的关系,由四个类完成:读卡机、账目、ATM屏幕和取钱机。类图中每个类都是用方框表示的,分成三个部分。第一部分是类名;第二部分是类包含的属性,属性是类和相关的一些信息,如账目类包含了三个属性:账号、PIN(密码)和结余;最后一部分包含类的方法,方法是类提供的一些功能,例如帐目类包含了四个方法:打开、取钱、扣钱和验钱数。类之间的连线表示了类之间的通信关系。例如,账目类连接了ATM屏幕,因为两者之间要直接相互通信;取钱机和读卡机不相连,因为两者之间不进行通信。有些属性和方法的左边有一个小锁的图标,表示这个属性和方法是private的(UML中用’-’表示),该属性和方法只在本类中可访问。没有小锁的,表示public(UML中用’+’表示),即该属性和方法在所有类中可访问。若是一个钥匙图标,表示protected(UML中用’#’表示),即属性和方法在该类及其子类中可访问。2.4建立交互图interactiondiagram2.4.1序列图sequencediagram序列图显示用例中的功能流程。创建序列图(图2-4-1)在浏览器内的Logic视图中单击鼠标右键,选择new→sequencediagram就新建了一张序列图。也可以在浏览器中usecase视图中选择某个用例,然后右击这个用例,选择new→sequencediagram。18图2-4-1:创建序列图在序列图中放置参与者和对象(图2-4-2)在序列图中的主要元素之一就是对象,相似的对象可以被抽象为一个类。序列图中的每个对象代表了某个类的某一实例。(1)把用例图中的该用例涉及的所有参与者拖到sequence图中。(2)选择工具栏中的object按钮,单击框图增加对象。可以选择创建已有类的对象,也可以在浏览器中新建一个类,再创建新的类的对象。双击对象,在弹出的对话框中的“class”里确定该对象所属的类。(3)对象命名:对象可以命名也可没名字。双击对象,在弹出的对话框中的“name”里给对象取名。图2-4-2:放置参与者和对象19说明对象之间的消息(图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美元,再让取钱