UML及其工具实验指导书
实验一 熟悉UML开发工具Microsoft Visio 2007
【实验目的】
熟悉UML开发工具Microsoft Visio 2007。 【实验要求】
1. 熟悉Visio的UML建模绘图界面。 2. 通过绘制类图学习Visio的使用方法。 3. 通过绘制对象图学习Visio的使用方法。 4. 通过绘制顺序图学习Visio的使用方法。 【实验步骤】
一.熟悉Visio的UML建模绘图界面 1.进入Visio的UML建模绘图界面 通过“开始”|“程序”,运行Microsoft Office Visio 2007,出现Microsoft Visio界面。在左侧的“类别”区域中单击“软件”,然后在右侧的“模板”中单击“UML模型图”,则进入Visio的UML建模绘图界面。
2.熟悉UML建模绘图界面
在Visio的UML建模绘图界面中,最大的白色区域就是绘图区。左上方的“形状”窗口就是Visio的UML元素调板,它由很多的标签页组成。每个标签页提供了一个特定的UML图标。左下方的“模型资源管理器”就是Visio的字典,字典就是所创建的所有元素及其属性的记录的集合。当Visio打开并准备开始UML绘图的时候,“UML静态结构”标签页就会激活,我们就可以创建类图和对象图了。
二.绘制类图
下面我们使用Visio来绘制一个如图1所示的行星系统的类模型。
图1 一个行星系统的类图
1.从“UML静态结构”标签页中选择“类”图标并把它拖放到绘图区中。双击绘图区
1
中的类图标,出现“UML类属性”窗口。在“名称”字段中输入“PlanetarySystem”来重新命名这个类。单击“确定”按钮回到绘图界面。我们可以通过控制工具栏中“缩放”按钮的显示比例,使界面中的类图标显示合适的大小。采用同样的方法添加Planet类。在“模型资源管理器”中反映出了增加的新类。
2.下面我们为Planet类添加两个属性和一个操作,并把它设置为一个抽象类。
在Planet类上双击打开“UML 类属性”对话框。选中“IsAbstract”复选框,然后,从左边的“类别”区域选择“特性”,在右边的对话框中打开“特性”表。单击“新建”按钮,则在 “特性”表中添加了一行,在“特性”表项中输入diameter。采用同样的方式加入 distanceFromStar属性。
然后从“类别”区域选择“操作”,打开“操作”表,单击“新建”按钮,则在 “操作”表中添加了一行,在“操作”表项中输入“receiveLight”。单击“确定”按钮,赋予抽象类Planet相应的属性和操作。
3.注意每个属性左边的减号和每个操作左边的加号,它们表示可见性。为了使图显得比较简单,我们可以在图中去掉它们。只需要在Planet类上右击,打开弹出式菜单,选择“形状显示选项”,打开“UML 形状显示选项”对话框。去掉“可见性”复选框,单击“确定”按钮,则Planet类的属性和操作前面不再显示可见性。
4.我们把其他的类拖拽到大图中,然后添加组成关系。
首先是组成关系。从“UML静态结构”标签页中把“聚合”图标拖拽到绘图区,实心菱形一端连接到PlanetarySystem,另一端(尾端)连接到Star。
在图中,我们可以看到组成关系的每一段都有多重关系、可见性和缺省名。为了在图中去掉缺省名和可见性,在组成关系上右击,在弹出菜单中选择“形状显示选项”。这次,在“UML 形状显示选项”对话框中,去掉“第一个端名”、“第二个端名”和“端的可见性”选项,单击“确定”按钮。
现在我们来关注一下Star类的多重关系。双击组成关系图标,打开“UML关联属性”对话框。在“关联端”表格中,选择“结束2”一行“多重性”列的单元格。单击这个单元格中的下拉列表框,显示出“结束2”的可能多重性关系的一个列表。选择“1”并单击“确定”按钮,我们将在图中得到所选多重性的表示。
采用同样的方式拖拽“聚合”图标,先把菱形箭头的一端连在“PlanetarySystem”,然后再把尾端连接到Planet类,并进行多重性等相关设置。
5.向图中添加继承关系。
从“UML静态结构”标签页中将“泛化”符号拖拽到绘图区,把三角形的一端连接到Planet,尾端连接到HabitablePlanet。重复拖拽一个“泛化”符号,把三角形的一端连接到Planet,尾段连接到NonHabitablePlanet。完成这些操作后,绘图区中就是完整的类图。
三.绘制对象图
下面我们使用Visio绘制一个如图2所示的Earth和Sun的对象模型。
图2 Earth和Sun的对象图
1.在“模型资源管理器”中“顶层包”的文件夹上右击,从弹出菜单中选择“新建”|“静态结构图”,则创建并打开了一个新的静态结构图。从“形状”的“UML 静态结构”标签页中选择“对象”图标,拖拽到绘图区。
2
2.在对象图标上双击打开“UML对象属性”对话框。在“名称”字段中输入“theSun”替代缺省名字。我们还需要表明theSum是Star类的一个实例,为此,选择“类”字段并单击下拉列表。从类列表中选择“顶层包::Star”,然后单击“确定”按钮。
3.用相同的一系列步骤创建HabitablePlanet类的一个earth对象。双击打开“UML对象属性”对话框。从“类别”区域选择“特性值”打开“Attribute Values”表。在这张表中,我们可以填入diameter和distanceFromTheStar属性的值,这两个属性是HabitablePlanet继承自Planet的。在“值”列赋值,单击“确定”按钮。
4.在对象之间添加连接。
从“UML 静态结构”标签页中拖动“链接”符号到绘图区,将其两端分别和对象连接起来。完成这个步骤后,“结束1”和“结束2”的名字就出现了,在连接上右击,并通过“形状显示选项”可以从图中移除它们。
四.绘制顺序图
下面我们使用Visio绘制一个如图3所示的示意theSun和Earth之间的一个交互的顺序图(简化的图形,只有一条消息)。
图3 示意theSun和earth之间的一个交互的顺序图
1.在“模型资源管理器”的“顶层包”图标上右击,从弹出菜单上选择“新建”|“序列图”,则打开一个新的绘图区。
2.从“UML序列”标签中,拖拽一个“对象生命线”图标并把它放入到绘图区。双击图标打开“UML 分类器角色属性”对话框,在“名称”区域命名对象以后,在“分类器”区域从你创建的类列表中选定对象所属的类,单击“确定”按钮。
3.右击新添加的对象生命线,单击“UML形状显示选项”,通过选择“分类器名称”复选框可以显示类名。
4.通过一系列类似的步骤,创建另一个表示Earth的对象生命线图标。 5.创建从sun对象到earth对象的消息。
从“UML 序列图”中选择 “消息”图标,并把它拖拽到绘图区,把它的尾部连接到sun对象的生命线,把它的头部连接到earth对象的生命线。
要改变消息的缺省标记,双击消息图标打开“UML 消息属性”对话框。 由于只有一个可能的操作,名字和来自earth对象的消息所请求的操作都已经被选好了。单击“确定”按钮,则把操作放到消息之上。
6.从“UML序列”标签中,拖拽一个“激活条”图标完成顺序图。 【思考问题】
1.对于本实验中创建的类图和对象图能在两个不同的绘图文件中分别创建吗?类图和顺序图呢?为什么?
3
2.本实验中创建的顺序图是在“顶层包”下新建的序列图中创建的,请问顺序图能在静态结构图中创建吗?为什么?
实验二 用例图设计
【实验目的】
掌握在Visio下用例图的设计。 【实验要求】
1. 针对网上选课系统掌握识别参与者和用例的方法。 2. 学习通过Visio绘制用例图的方法。 3. 掌握如何对每个用例进行用例描述。 【实验步骤】
一.网上选课系统需求分析
某学校的网上选课系统主要包括如下功能:
1. 管理员通过系统管理界面进入,建立本学期要开的各种课程,将课程信息保存在数据库
中并可以对课程进行改动和删除。
2. 学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行三种操作:
查询已选课程、选课以及付费。同样,通过业务层,这些操作结果存入数据库中。 二.在Visio中设置全局属性 1. 添加四个模型
单击Visio界面上菜单栏中的“UML”菜单,选择其下拉菜单中的“模型”,则打开了“UML模型”窗口。单击“新建”按钮,在“模型”表项中输入模型的名字。依次添加4个模型:用例模型、分析模型、设计模型和实现模型。
下面简要介绍一下四个模型的功能。
(1) 用例模型:用例贯穿于建模的整个过程,因为软件和顶层包的价值就在于实现用例,
从而为用户提供期望的功能。用例细化可使用活动图、顺序图等。
(2) 分析模型:识别分析类,利用分析类实现用例,是用例模型中用例细化活动的延伸。
主要使用顺序图和协作图实现用例。
(3) 设计模型:将分析模型转化为解决方案。分析类转化为一个或多个设计类、接口、
类(和接口)的操作、类的特性都被完整的定义。根据解决问题的需要,可能会引入一些包,这些包提供了诸如数据库访问、异常处理、分布式通信等基础服务。
通常有两种途径获得设计类:
1)将分析类转化一个或多个设计类; 2)通过引入基础服务获得设计类。
用设计类实现用例:使用顺序图和协作图。
设计系统原型:通过它验证解决方案的正确性,并为实现者提供指南。
(4) 实现模型:将设计模型转化可执行代码的过程。关键的活动有:代码编写、测试、
部署。使用构件图来描述系统的静态实现视图,使用部署图来描述系统的动态实现视图。
2. 将UML系统改名为SelectCourseSystem
在“模型资源管理器”窗口下,右击顶层节点,选择“属性”命令。在“UML子系统属性”对话框的“名称”文本框中输入新的名称“SelectCourseSystem”。在“文档”文本框中可以输入一些说明消息。
4
3. 设置模型的数据类型 在默认情况下,UML中可以使用的数据类型有4个包。本例中将目标语言绑定为C++,所以仅保留C++数据类型包。
单击Visio界面上菜单栏中的“UML”菜单,选择其下拉菜单中的“选项”,则打开了“UML选项”窗口。在 “UML文档”选项卡中选择C++数据类型。
三.实现用例模型 1. 识别参与者
本系统涉及的用户包括管理员Registrar和学生Student,他们是用例图的参与者,他们的主要特征相似,都具有姓名和学号等信息,所以可以抽象出“基”参与者人People,而Registrar和Student则从People统一派生。数据库管理系统Database是另外一个参与者。
2. 识别用例
识别、详述用例是用例建模过程中最重要的活动。顺着参与者出发,通过考虑参与者和系统的交互,可以识别出主要用例。
(1)与Students参与者相关的用例有哪些? (2)与Registrar参与者相关的用例有哪些? (3)哪些用例与Database参与者相关?
3. 绘制参与者以及参与者之间的关系
(1)在“模型资源管理器”中,右击“用例模型”下的“顶层包”,选择“新建”|“主角”
命令,出现“UML主角属性”对话框。将主角命名为“Registrar”,然后在“文档”栏中输入一些描述管理员主角职责的文字。其中的完整路径显示了主角在UML模型中所处的位置。单击“确定”按钮,则在“用例模型”的“顶层包”下新增了一个名为“Registrar”的主角。
重复上面操作,在用例模型的顶层包中添加上所有主角。
(2)下面绘图角色之间的关系。
双击“用例模型”“顶层包”下的“静态结构图”,这时会在绘图画板中打开。分别将Registrar角色、Student角色、People角色拖放到绘图画板,然后将“UML静态结构”标签页中的“泛化”图标拖放到绘图画板,并用它来连接两个角色。 4. 绘制用例以及用例之间的泛化关系
(1)在“模型资源管理器”中,右击“用例模型”下的“顶层包”,选择“新建”|“用例”
命令,出现“UML用例属性”对话框。在“名称”框中输入一个你所找到用例名,单击“确定”按钮。
重复上面操作,在用例模型的顶层包中添加上所有用例。
(2)用例之间如果存在泛化关系,则拖拽“UML静态结构”标签页中的“泛化”图标到静
态结构图中,来连接两个用例。 5. 绘制用例图
(1)在“模型资源管理器”中,右击“用例模型”下的“顶层包”,选择“新建”|“用例
图”,这时会新建一个名为“用例-1”的空白用例图,右击新建的空白用例图节点,选择“重命名”,可对用例图重新命名。
(2)在“形状”中的“UML用例”标签页中,将“系统边界”形状拖放到用例图中,双击
系统边界形状,可进行重新命名。
(3)在“模型资源管理器”中“用例模型”下,选中“Registrar”、“Student”和“Database”
主角,拖放到用例图的系统边界之外。将“用例模型”下创建的用例拖放到用例图的“系统边界”内。
(4)绘制参与者与用例之间的关联。
5