UML实验指导书 级Word格式.docx
《UML实验指导书 级Word格式.docx》由会员分享,可在线阅读,更多相关《UML实验指导书 级Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
图1-1Rose界面
2.浏览器与视图
浏览器是层次结构,用于在Rose模型中迅速漫游。
在浏览器中显示了模型中增加的一切内容,如参与者、用例、类等。
图1-2为Rose浏览器。
利用浏览器,可以:
1)增加模型元素(参与者、用例、类、组件、框图)
2)浏览现有模型元素。
3)浏览现有模型元素间的关系。
4)移动模型元素
5)更名模型元素。
6)将模型元素加进框图。
7)将文件或UML链接到元素。
8)将元素组成包。
9)访问元素的详细规范。
10)打开框图
图1-2Rose浏览器
Rose浏览器中包含有4个视图:
UseCase视图、Logic视图、Component视图和Deployment视图。
利用浏览器,可以浏览每个视图中的模型元素,移动和编辑模型元素,增加新的元素。
通过在浏览器中右键单击元素,可将文件或链接到元素、访问元素的详细规范、删除元素和更名元素。
浏览器组成树状视图形式。
每个模型元素可能又包含其他元素。
默认情况下,浏览器出现在屏幕左上角,可将浏览器移到另一位置,也可隐藏浏览器。
要显示或隐藏浏览器窗口的操作如下:
右键单击选择浏览器窗口。
从弹出菜单中选择Hide,即可显示或隐藏浏览器。
或者选择View→Browser,也可显示或隐藏浏览器。
图1-3框图窗口
3.框图窗口
在图1-3所示的框图窗口中,可以浏览一个或几个UML框图。
改变框图中的元素时,Rose自动更新浏览器。
同样,用浏览器改变元素时,Rose自动更新相应框图。
这样Rose就可以保持模型的一致性。
三、实验内容
1.试用Rose的如下功能,并熟悉Rose所支持各种图的绘制方法。
1)创建模型
2)保存模型
3)导出与导入模型
4)发布模型
5)使用控制单元
6)使用模型集成器
7)使用注释
8)在Rose模型元素中增加文件与URL
9)使用包
10)增加与删除图
11)设置全局选项
12)设置字体
2.建立一个简单图书管理系统的用例图。
四、实验报告要求
1.整理实验结果。
2.描述实验步骤,给出相应操作结果截图以及结果说明。
3.实验小结。
实验2用例图设计(2学时)
1.熟悉用例图的基本组成部分。
2.掌握事件流的用途及其主要组成部分。
3.理解用例间的关系。
4.掌握在Rose中创建用例图的方法。
用例图是几个或全部参与者、用例和它们在系统中的关系的图形表示。
每个系统通常都有一个主(Main)用例图,表示系统的边界(参与者)和系统所提供的大部分功能。
也可以创建一些其它的用例图。
用例是系统使用片断的集合,描述了所有的功能需求。
它来自于客户需求的分析,这个过程称为用例分析,是整个系统开发中非常关键的过程。
用例分析有助于如下工作:
1)捕捉需求。
2)计划开发过程的循环往复。
3)验证系统。
4)动态分析从用例分析开始,它驱动整个开发过程。
如何来标记一个用例呢?
可以从以下几个方面来考虑:
1)活动者希望这个系统执行什么任务?
2)活动者在系统中会访问哪些信息(创建,存储,修修改,删除等)?
3)需要将外部的哪个变化告知系统?
4)需要将系统的哪个事件告知活动者?
5)如何维护系统?
一个用例图(usecasediagram)包括一个用例的集合,该集合定义整个系统的功能在UML中,用例图用椭圆(oval)来表示,它用来记录用户或外界环境从头到尾使用系统的一系列事件。
用户被称为“参与者”(Actor)。
参与者可以是人,也可以是另一个系统。
它与当前的系统进行交互,向系统提供输入或从系统中获得输出,用一个人形(stickman)标记表示之。
用例图显示了用例和活动者、用例之间以及参与者之间的关系(relation),关系描述了模型元素之间的语义连接。
在UML中,关系使用实线表示,实线可以有箭头,也可以没有箭头。
要建立实际的系统,还需要更多的细节,这些细节写在事件流文档中。
事件流的目的是在建档时,说明用例的逻辑流程。
在这个文档中,详细描述系统用户的工作和系统本身的工作。
事件流是独立于实现方法的。
它通常包括:
简要说明、前提条件、主事件流、其它事件流和事后条件。
一般将活动者和用例之间的关系称为通信,而用例与用例之间可以存在的关系分为:
概括(Generalization)、包含(Include)和扩展(Extend)3种。
另外,活动者和活动者之间也可以存在概括(Generalization)关系。
下面是建立用例图的基本方法。
1.生成用例图。
右击浏览器中的用例视图包,选择弹出菜单中的New→UseCaseDiagram,输入名称后,便可以双击打开它。
2.删除用例图。
在浏览器中右击要删除的图,从弹出菜单中选择Delete。
注意:
删除用例图并不会删除其中的模型元素。
(Rose中对其它模型图的操作都类似。
)
3.添加参与者。
可以在两种环境里添加新的参与者,一种是在用例图中添加,另一种是在浏览器中添加。
它们的区别在于浏览器中添加的参与者可以再加进一个或几个用例图中。
在用例图中添加参与者时,在打开用例图后直接点击图形工具条上的参与者按钮或选择Tools菜单中的Create→Actor选项,然后直接在用例图的任何位置点击,然后为添加的参与者命名。
在浏览器中添加参与者,右键单击浏览器中的用例视图包后,选择New菜单中的Actor选项,此时新参与者将出现在浏览器中,然后为该参与者命名。
如果想将该参与者加入某个用例图,只需直接将它从浏览器中拖动到图中。
(Rose中对其它模型元素的添加方法类似,以后不一一详细说明。
4.删除参与者。
对应于添加参与者的两种方法,删除参与者也有两种方法,一个是从单个用例图中删除参与者,另一个是从整个模型中删除参与者。
如果从整个模型中删除参与者,那么参与者将从浏览器和所有用例图中删除。
如果只是在某个用例图中删除参与者,那么该参与者还继续留在浏览器和其它用例图中。
从单个用例图中删除参与者,选中所要删除的参与者,按Delete键;
从模型中删除参与者,选中所要删除的参与者,按Ctrl+D或菜单Edit→DeletefromModel。
(Rose中对其它模型元素的删除方法类似,以后不一一详细说明。
5.设置参与者规范。
在模型中增加参与者后,还需要设置参与者的一些细节,如参与者的名字,构造型(参与者为Actor)等。
这些细节可以在规范窗口中设置。
要打开规范窗口,通过右击选择OpenSpecification。
指定参与者的基数:
在规范窗口中的Multiplicity中可以设置某个参与者有多少实例。
例如多个人起客户的作用,而只有一人起管理者的作用。
6.用例的添加与删除操作。
类似于参与者,不再赘述。
7.设置用例规范。
规范中可以设置用例的构造型(Stereotype),(但用例一般不需要),用例的优先级,是否抽象用例等。
也可以为用例添加相关的文档。
8.创建关联关系。
关联关系表示参与者与用例间的关系,要创建关联关系,在图的工具条上单击Association或UnidirectionalAssociation图标,如果Association图标没有在工具条上,可以在工具条上单击鼠标右键弹出快捷菜单,选择customizemenu选单,通过自定义工具栏手动把图标加上;
然后从启动信息方拖动到另一方。
9.创建泛化关系。
泛化关系表示在一个更一般的模型要素和另一个较具体的模型要素之间存在的一种关系。
用例图中参与者之间,用例之间均可存在泛化关系。
要创建泛化关系,从工具箱中选择泛化关系图标,然后从具体用例(或参与者)拖动到另一方。
10.创建扩展和包含关系。
扩展和包含关系的创建是先创建泛化关系,然后在泛化关系的规范窗口中设定相应的构造型。
扩展关系选择extends,包含关系选择include。
下面是某家教网上发布系统的用例模型和一个事件流文档的示范:
家教网上发布系统的后台管理子系统中“发布网站公告”用例的事件流如下:
1.请在Rose2003中完成该系统的用例图,并描述具体步骤。
2.以此事件流文档为例,给出用例“搜索家教信息”和用例“注册学生信息”的事件流。
3.考虑一个汽车租赁系统的需求,绘制其用例图,并给出核心用例的事件流。
实验3顺序图设计(2学时)
1.熟悉顺序图的基本功能和组成部分。
2.理解两种交互图――顺序图和协作图之间的区别。
3.掌握在Rose中创建顺序图的方法。
顺序图(SequenceDiagram)是强调消息时间顺序的交互图。
是描述系统中类和类之间的交互,它将这些交互建模成消息交换,也就是说,顺序图描述了类相互协作的完成预期行为的动态过程。
顺序图由以下部分组成:
(1)类角色(ClassRole)
(2)生命线(Lifeline)
(3)激活期(Activation)
(4)消息(Message)
顺序图强调的是按时间展开的消息传送,这在一个用例脚本的语境中对动态行为的可视化非常有效。
它与后面将要介绍的协作图相比具有两个方面的不同特征:
(1)顺序图有生命线
(2)顺序图有激活期
在图形上,顺序图是一张表,其中显示的对象沿横轴排列,从左到右分布在图的顶部;
而消息则沿纵轴按时间顺序排序。
创建顺序图时,以能够使图尽量简洁为依据布局。
下面是在Rose中建立顺序图的基本方法。
1.顺序图操作
要生成顺序图,右击浏览器中的需要存放顺序图的包,选择弹出菜单中的New→SequenceDiagram,输入名称后,便可以双击打开它。
要删除顺序图,在浏览器中右击要删除的图,从弹出菜单中选择Delete。
2.顺序图的模型要素
顺序图中包含参与者,对象,对象生命线,控制焦点和消息。
参与者是整个顺序图的启动者,要添加参与者可直接将参与者从浏览器中拖动到模型图里适当的位置放开。
对象存放在图的上方,用矩形表示;
对象向下方垂直伸展的虚线称为该对象的生命线,表示该对象存在的时间长度;
在生命线上的窄矩形条称为控制焦点,控制焦点表示该对象正在执行某个操作,窄矩形的长度表示操作的持续时间;
一个对象到另一个对象的消息用跨越对象生命线的一条消息线表示出来,包括反身消息。
要将消息加入顺序图,只需单击工具条中的消息按钮后,将鼠标从发送消息的对象或参与者的生命线拖动到接受消息的对象或参与者的生命线;
如果要加入反身消息,只需单击工具条中的反身消息按钮后,单击收发消息的对象生命线。
3.设置对象规范
对于顺序图中的每个对象都可以映射类,在对象规范的Class一栏中选择该对象的类。
可以用模型中现有的类,或对该对象生成新类。
在Persistent一栏中可以设置对象的持久性。
Persistent:
对象保存到数据库或者其他形式的永久存储体中;
Static:
对象保存在内存中直到程序中止;
Transient:
对象只在短时间内保存在内存中。
如果将对象的类持久性设置为Persistent,则可以设置对象的持久性为以上三者之一;
如果将对象的类持久性设置为Transient,则可以设置对象的持久性为Transient或Static。
4.设置消息规范
消息规范窗口中,在Name一栏里可以为消息命名。
如果已经将接受消息的对象映射到类,则这个类的操作出现在Name的下拉列表中。
可以将接受对象的某个操作指定给消息。
指定操作后,消息名变为所指定的操作名。
规范窗口的Detail标签下,可以设置消息的同步类型。
默认为简单(Simple)类型。
1.画出ATM系统“取款成功”的顺序图,表示出如下过程:
某人将卡插入读卡机,读卡机读卡,初始化屏幕;
屏幕提示输入用户密码,该用户输入其密码,屏幕向账户对象验证密码,发出相符合的消息;
屏幕向该用户提供选项,该用户选择取钱,并在屏幕的提示下输入提取金额;
ATM机验证用户账户金额,验证通过后在其账户中扣除相应金额并提供现金;
屏幕提示是否打印凭条,用户选择是,打印机打印凭条;
屏幕提供选项,用户选择退卡,系统退卡。
2.根据实验2中对汽车租赁系统的分析,建立其中几个关键的顺序图。
实验4协作图设计(2学时)
1.熟悉协作图的基本功能和组成部分。
2.理解顺序图和协作图之间的区别。
3.掌握在Rose中创建协作图的方法。
协作图作为另一种交互图而言,强调的是参加交互的对象的组织。
协作图只对相互间有交互作用的对象和这些对象间的关系建模,而忽略了其他没有交互的对象和关联。
它可以被视为对象图的扩展。
协作图不仅可以表示对象间的关联,而且可以表现对象间的信息传递。
协作图是由:
类角色、关联角色和消息流组成。
顺序图和协作图都可以用于对系统动态方面的建模,而协作图更强调参加交互的各对象的组织。
协作图相对于顺序图来言,有两个方面不同的特征:
(1)协作图有路径
(2)协作图有顺序号
协作图强调发送和接受消息的对象之间的结构组织的交互图,显示对象、对象之间的链接以及对象之间的消息。
在图形上,协作图是顶点和弧的结合。
下图是与上节所示的时序图相对应的协作图。
虽然时序图和协作图都显示了交互,但是时序图的焦点在时间上,而协作图的焦点在空间上。
下面是在Rose中建立协作图的基本方法。
1.协作图操作
要生成协作图,右击浏览器中的要存放协作图的包,选择弹出菜单中的New→CollaborationDiagram,输入名称后,便可以双击打开它。
要删除协作图,在浏览器中右击要删除的图,从弹出菜单中选择Delete。
2.协作图的模型要素
协作图中主要的模型要素是参与者,对象,消息,链接。
其中只有链接是协作图中特有的元素。
链接是关联的实例,当一个类与另一个类之间有关联时,这两个类的实例之间就有链接,一个对象就能向另一个对象发送消息。
所以链接是对象间发送消息的路径。
在协作图中链接用直线来绘制。
要建立链接关系,单击工具条上的链接按钮,从一个对象拖动到另一个对象即可。
要建立消息,单击工具条上的消息按钮,然后单击所建立的链接,便在链接所在的对象间建立了消息。
3.消息编号
消息编号用来表示一个消息的时间顺序,通过消息的顺序编号可以更清楚地看出各消息之间的时间顺序以及相互之间的关系。
Rose中默认时序图中不显示消息编号,协作图显示消息编号。
时序图中,消息根据对象生命线从上往下从1开始进行编号;
协作图中,消息根据建立的顺序从1开始进行编号。
删除消息时,Rose自动将其余消息重新编号。
要打开或关闭消息编号:
选择Tools>
Options;
选择Diagram标签;
复选或取消CollaborationNumbering或者SequenceNumbering。
4.时序图与协作图的转换
通常要对特定情形生成时序图或协作图。
如果没有Rose之类的模型工具,则同时生成两种特别费时间,而两者保存同样的信息。
在Rose中,时序图与协作图间的转换特别容易。
要从时序图转换为协作图,只需打开时序图,然后选择Browse→CreatecollaborationDiagram或按F5;
要从协作图转换为时序图,只需打开协作图,然后选择Browse→CreatesequenceDiagram或按F5。
1.画出ATM系统“取款成功”的协作图,表示出如下过程:
2.分析网上图书销售系统的需求,在Rose中建立网上图书销售系统的若干协作图。
实验5类图设计(2学时)
1.理解类的基本概念。
2.熟悉在系统中寻找类的方法。
3.了解类与类之间的关系有哪些。
4.掌握在Rose中创建类图的方法。
●类的基本概念
通常对系统建模将会涉及到如何识别业务系统中的事物。
这些事物构成了整个业务系统。
在UML中,将所有的这些事物都被建模为类。
类(class)是对一组具有相同属性、操作、关系和语义的对象的描述。
类是对事物的抽象。
它不是个体对象,而描述一些对象完整集合。
在UML中为类提供了图形表示。
这种可视化的抽象表示,使得我们对类的描述脱离了具体编程语言,而只需要强调抽象的主要部分。
类主要是由:
名称、属性和操作构成。
●寻找类
从用例视图中寻找类,是从用例的事件流开始,查看事件流中的名词以获得类。
在事件流中,名词可以分为四种类型:
角色、类、类属性和表达式。
也可以检查顺序图和协作图中的对象,通过对象的共性来寻找类。
另外,顺序图和协作图中的每个对象都要映射到相应的类。
必须指出,有的类是无法通过以上方法找到的。
通常类可以分为3种类型:
实体类(entity)、边界类(boundary)和控制类(control)。
实体类是对系统中需要存储的信息和其信息的行为建立模型。
实体类具有永久的特性,这类似于数据库中的表一样用于保存系统的业务信息。
边界类(boundary)位于系统与外界的交接处,它在一个或多个角色和系统之间建立相互作用的模型。
要寻找和定义边界类,可以检查用例图。
每个参与者(Actor)和用例交互至少要有一个边界类。
边界类使参与者能与系统交互。
控制类是负责协调其他类的工作,它建立了一个或几个用例的行为模型。
它整理系统的行为并描述一个系统的动态特性,处理主要的任务和控制流。
每个用例通常都有一个控制类、控制用例中的事件顺序。
也存在多个用例共享同一个控制类。
可以通过以下的方法寻找类:
(1)从事件流中寻找名词或名词词组(或交互图中的对象),将性质相同的归类成为一类,或性质内容值正负相反的归类成为一类。
(2)去除不恰当的与含糊的类别,去除应是归类为属性的项目。
(3)给这些类取个合适的名字,在现实系统实现时,可以参照真实系统相关的命名规约。
类包装了信息和行为,将这些信息称为属性。
又如何确定类的属性呢?
(1)注意在需求中的名词如用户名密码等,或者是存在许多特定可列举数,如红、黄和绿。
属性不会影响架构。
(2)可以通过查阅用例文档或需求文档资料来获得属性,事件流中的名词有一些是属性。
如果已经定义好数据库结构,则表中的字段就是属性。
至于类的方法,在创建顺序图和协作图时,已经完成了寻找类的操作的主要过程。
●类之间的关系
关系(Relationship)是指事物之间的联系。
在面向对象的建模中,有3种最重要的关系是依赖、泛化、关联和实现。
在图形上,把关系画成一条线,用不同的线区别关系的种类。
依赖(dependency)是一种使用关系,它说明了一个事物声明说明的变化可能影响到使用它的另一个事物,但反之未必。
服务的使用者以某种方式依赖于服务的提供者。
在UML中定义了4类基本依赖类型。
分别是使用(usage)依赖、抽象(abstraction)依赖、授权(permission)依赖和绑定(binding)依赖。
泛化(generalization)是一般事物(称为父类或超类)和较特殊事物(称为子类或孩子类)之间的关系。
泛化有两个用途:
第一个用途是用来定义下列情况:
当一个变量(如参数或过程变量)被声明承载某个给定类的值时,可使用类的实例,这被称作可替换性原则。
该原则表明后代的一个实例可以用于任何祖先被声明的地方。
另一个用途是在共享父类所定义的成员的前提下允许它增加自身定义的描述,这被称作继承。
关联是一种结构关系,它详述了一个事物的对象与另一个事物的对象相互联系。
在UML中,把关联画为连接相同或不同的类的一条实线。
当要表示结构关系时,就使用关联。
实现(realization)是类元(类)之间的语义关系,关系中的一个类元(类)描述了另一个类元(接口)实现的契约。
实现关系中的一个类只具有行为的定义,而具体的结构和行为,则是由另一个类来给出。
实现与泛化关系都可以将一般描述与具体描述联系起来。
泛化是将同一语义层上的两个元素连接起来(如,在同一抽象层),并且通常在同一模型内。
实现关系将在不同语义层内的元素连接起来(如,一个分析类和一个设计类;
一个接口与一个类),通常两种元素建立在不同的模型内。
●类图
类图是逻辑视图的重要组成部分,用于对系统的静态结构建模,涉及到具体的实现细节。
一个系统通常要生成几个类图。
有些显示类及其关系的子集,有些显示类的子集,包括属性和操作,还有一些显示类包及包之间的关系。
缺省情况下,有一个主类图,放在逻辑视图下。
这个类图显示模型中的类包。
每个包中有另一主类图,包含这个包中的所有类。
Rose中,双击类图中的包自动打开其主类图。
类图是项目小组的良好设计工具,有助于开发人员在编码之前显示和计划系统结构,保证系统一开始就设计合理。
下图是课程注册系统的类图的一部分,显示了其中一些实体类间的关系。
下面是在Rose中建立类图的方法。
1.类图操作
要生成类图,右击浏览器中的需要存放类图的包,选择弹出菜单中的New→ClassDiagram,输入名称后,便可以双击打开它。
要删除类图,在浏览器中右击要删除的图,从弹出菜单中选择Delete。
2.设置类的规范
在类规范窗口中,可以设置类的相关信息,例如:
构造型(