UML软件建模实验指导书

更新时间:2024-03-10 02:38:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

UML软件建模 实 验 指 导 书

计 算 机 工 程 学 院

目 录

实验一 UML用例图和类图 ........................................................................................................... 3 实验二 UML序列图和协作图 ..................................................................................................... 29 实验三 UML活动图的设计和实现 ............................................................................................. 42 实验四 UML构件图和部署图 ..................................................................................................... 53

实验一 UML用例图和类图

一、 二、

实验题目

学校的网上选课系统的用例图和类图

实验目的

1、 能够根据系统的功能分析系统的用例组成,正确确定用例图中的角色。 2、 能够分析系统的用例、活动者以及它们之间的关系。

3、 根据对系统的分析,准确确定相应的类,确定类的属性和操作,正确分析属性和操

作的可继承性

4、 使用Rose软件能正确画出用例图,并说明每一个用例的事件流。正确使用Rose软件

定义类和类的关系和画出完整的类图。

三、

实验要求

1、 根据需求文档确定每一个用例的名称、参与执行者(活动者)、前置条件、主事件流、

辅事件流和后置事件流。

2、 能从一类单一的对象中抽象出类的定义,并依据实际要求,设计类的属性和操作。 3、 能对现实世界中的对象存在各种各样的关系,分析出这些关系,主要有:继承关系;

类之间的关联。并能在类图中反映这些关系。 四、 五、

实验内容

学校的网上选课系统的用例图和类图的设计和实现

用例图

1、 用例图设计实例

介绍学校的网上选课系统的用例图的设计和实现 2、 需求

学校的网上选课系统主要包括如下功能:管理员通过系统管理界面进入,建立本学期要开的各种课程、将课程信息保存在数据库中并可以对课程进行改动和删除。学生通过客户机浏览器,根据学号和密码进入选课界面,在这里学生可以进行三种操作:查询已选课程、选课以及付费。同样,通过业务层,这些操作结果存入数据库中。 3、 分析

本系统涉及的用户包括管理员(Registrar)和学生(student),他们是用例图中的活动者,他们的主要特征相似,都具有姓名和学号等信息,所以可以抽象出“基”活动者People,而Registrar和 Student则从People统一派生。数据库管理系统是另外一个活动者。 4、 事件流

下面是系统中出现的一些事件流。

添加课程事件流:

(1)管理员选择进入管理界面,用例开始。 (2)系统提示输入管理员密码 (3)管理员输入密码。 (4)系统验证密码。 A1:密码错误

(5)进入管理界面,系统显示目前所建立的全部课程信息 (6)管理员选择添加课程。 (7)系统提示输入新课程信息 (8)管理员输入信息。 (9)系统验证是否和已有课程 A2:有冲突

(10)系统添加新课程,提示课程添加成功。 (11)系统重新进入管理主界面,显示所有课程。 (12)用例结束。 其他事件流: A1:密码错误

(1)系统提示再次输入。 (2)用户确认。

(3)三次错误,拒绝再次访问。 (4)否则进入添加课程事件流第5步。 A2:有冲突

(1)系统提示冲突,显示冲突课程信, (2)用户重新输入。 (3)继续验证直到无冲突。 (4)进入添加课程事件流第10步。

删除课程事件流和修改课程事件流与此类似。 选课事件流:

(1)学生进入选课登录界面,用例开始。 (2)系统提示输入学号和密码。 (3)学生输入学号和密码。 (4)系统验证。 Al:验证失败 (5)进人选课主界面。 (6)学生点击选课。 (7)系统显示所有课程信息。 (8)学生选择课程。 (9)系统验证课程是否可选。

A2:不可选

(10)系统提示课程选择成功,提示学生交费。 (11) 用例结束。 错误流: A1:验证失败

(1)系统提示验证失败,提示重新输入。 (2)三次失败,拒绝访问。 (3)成功,转选课事件流第5步。 A2:课程不可选

(1)系统提示课程不可选及原因。 (2)学生重新选课。 (3)重新验证直至成功。 (4)转选课事件流第10步。

因为付费方式多样,所以在此将不讨论付费用例。查询事件流比较简单,这里也不详细描述。

根据以上的分析,可以绘制出如图1所示的系统用例图。

图1 系统用例图

在Rose2003中设计选课系统的用例图,具体步骤如下:

(1) 点击浏览器中的use case View中的Main,弹出用例图窗口如图3。此时,与用例图窗口对应的工具栏如图2所示。

图2 工具栏

图3用例图窗口

(2) 将光标置于工具栏的Actor图标上,按下左键并将光标拖曳到用例图窗口上,放开左键,用例图窗口内出现一个活动的图标(见图4),其名字为“NewClass”。

图4 绘制用例图之1

(3)修改元素的名字有如下两种方法:

①在用例图窗口中双击NewClas s图标,弹出如图5所示的窗口。然后再选择“General”选项卡,将Name修改为“People'?,最后按下“确认”按钮。

②如图4所示,在用例图窗口中将光标置于“NewClass”处,直接将其修改为“People”。

图5 绘制用例图之2

(3) 采用同样的方法,在用例图中添加Registrar和Student图标,点击用例窗口工具栏中的图标“generalization”,在用例图窗口中,将光标从Student 移动到People,在Student与People之间添加概括(generalization)关系(见图6)。

图6 绘制用例图之3

(4)同样在Registrar和People之间添加概括关系。

(5)点击工具栏中Use Case的图标,将光标移到用例图窗口,窗口内显示用例的椭圆图标,采用和(3)同样的方法,将图标名称改成“SelectCourse”。 添加Select Course用例,点击工具栏中的Undirectional Relation图标,将光标从Student指向Select Course,在Student和Select Course之间添加关系(见图7)。

图7 绘制用例图之4

(6)重复以上步骤,完成所示的用例图。

图8 用例图 (10)然后再指定活动者和用例的属性。在浏览器中选择活动者People,按下鼠标右键,在弹出的菜单中选择“Open Specification”,弹出图9所示的对话框。

图9 绘制用例图之5

(11)从图9中可以看到People的版型(Stereotype)是Actor(以后还将介绍这个画面)。 (12)双击Select Course用例,弹出Use Case Specification对话框(见图10)。

图10 绘制用例图之6

(13)在Documentation文本框中可以书写该用例的事件流(见图11)

图11 绘制用例图之7

(14)完成以上步骤,可以看到Rose在浏览器中自动标出了各种关系。图12中使用椭圆将它们标注出来。

图12 绘制用例图之8

六、 类图

选课系统的类图设计和实现 1 类的创建

本实验先分析选课系统中的类,然后作出它们的类图。 1.1选课系统中的类

分析系统中的所有序列图,除了角色之外,有以下名词: (1)课程。 (2)界面。 (3)控制对象。

这3个名词可以抽象出3个类:课程类、界面类和控制对象类。 首先看课程类(Course)。课程类应该有以下属性: (1)课程名称(name) (2)开课教室(classroom) (3)课程号(courseID) (4)授课教师(teacher) (5)选课的学生(students)

(6)开课起始时间(firstlessondate) (7)允许选课的学生人数(maxstudents) (8)设置课程名称(setname) (9)设置开课教室(setclassroom) (10)设置课程号(setcourselD) (11)设置授课教师信息(setteacher) (12)设置开课起始时间(setfirstlessondate) (13)设置允许选课的学生人数(setmaxstudents) (14)查询课程名称(getname) (15)查询开课教室(getclassroom) (16)查询课程号(getcourselD) (17)查询授课教师信息(getteacher) (18)查询开课起始时间(getfirstlessondate) (19)查询允许选课的学生人数(getmaxstudents)

关于界面类和控制类,因为涉及到后续的内容,所以本实验暂时不考虑它们。 根据以上的分析,可以绘制出如图2所示的类图。

图2 选课系统的完整类图

1.2类图的创建

在下面介绍在Rose中创建Course类的过程。 (1)选择浏览器中的“Logical View”,按F鼠标右键,在弹出的菜单中选择“New”,再在下一级菜单中选择“Class”,创建一个新的类,然后将这个类的名字改成“Course”,结果如图13所示。

图13 绘制类图之1

(2)添加属性。在浏览器中选择类“course”,按下鼠标右键,在弹出的菜单中选择“New”,再选择“Attribute”,则一个新的属性被添加,将属性名字改成“Name”,如果如图14所示。

图14 绘制类图之2

(3)选择name ,按下鼠标右键,选择“open Specification”,则弹出如图15示的“ Class Attribution Specification”对话框。在这个对话框中有两个选项卡,一个用来设置属性的固有特性,比如类型(Type)、版型(Stereotype)、初始值(Initial)、存取控制(Export Control)等,一个用来进一步指定属性是静态(Static)的还是继承(Derived)的等。

图15 绘制类图之3

(4)图16所示为设置属性的类型(Type)示意图。同样可以设置初始值(Initial)和存取控制(Export Control)等。

图16 绘制类图之4

(5)图17给出进一步设置属性的示意图。图中将“Containment”设置为“By Value”

属性的“Containment”特征表示属性如何存放在类中。By value表示属性放在类中,By reference表示属性放在类外,类指向这个属性。Unspecified表示还没有指定控制类型,应在生成代码之前指定By value或By reference。

图17 绘制类图之5

(6)如果要删除属性,右键选择属性,在弹出的菜单中选择“Delete”即可。

(7)添加操作。在浏览器中选择类“Course”,按下鼠标右键,在弹出的菜单中选择

“New”,再在F一级菜单中选择“Operation“,则添加一个新的操作。图18是将添加操作的名字改为“GetName”的示意图。

(8)选择GetName,按下鼠标右键,选择“Open Specification”,在弹出的对话框中可以 设置操作的固有特性。如图19所示。

(9)在Specification对话框中,操作或者属性都有存取控制的选项,操作的存取控制的选项默认值是公有的,属性的存取控制的选项默认值是私有的。不同的存取控制采用不同的标记表示(如图20所示)。本图只是说明不同的控制标记,后面的图将按照实际要求设计。 (10)重复以上步骤,完成Course类的设计。图21是设计结果图

图18 绘制类图?之6

图19 绘制类图之7

图20绘制类图之8

图21绘制类图之9

类能实现对象的封装,是面向对象的重要特征。通过第一部分的学习,应该能够了解类、

对象、属性、操作的概念,可以从一类单一的对象中抽象出类的定义,并依据实际要求,设计类的属性和操作。 2 类的继承

在选课系统中,涉及到的用户包括管理员(Registrar)和学生(Student),其主要特征相似,所以可以建立统一基类People,而Registrar和Student则由People派生。 2.1在角色或类之问添加继承关系很简单,下面给出实现过程。 (1) 双击浏览器中Logical View:的Main图标,弹出类图窗口,从Use Case View 下将People、Registrar和Student拖到窗口中。图22

图22 绘制类图之10

(2)选择类图工具栏的“Generalization”图标,在类图窗中,按下鼠标左键,将光标从角色Student移动到People,如图22所示,在二者之间出现一个表示继承关系的箭头标志。同理添加Registrar与People之间的继承关系。(若用例图中已画则会自动生成)

(3)如图23所示,给People增加一私有属性name,这时Registrar和Student都没有设置属性。在类图窗口中双击Student的图标,弹出“Class Specification”对话框,点击Attributes选项卡,注意这时Show inherite被选择,而Attributes列表中没有任何属性。从图中可以看到,父类中的私有属性没有被继承。

图23 绘制类图之11

(4) 将People的name属性设置成保护属性,操作同(3),可以看到Show inherite被选择时,Attributes列表中有一个属性name(见图24),父类中的保护属性被子类继承。

图24 绘制类图之12

(5)将People的name属性设置成公有属性,操作同(3),可以看到Show inherite Attributes列表中有一个属性name(见图13),父类中的公有属性被子类继承。

图25 绘制类图之13

继承是面向对象的重要特征之一,通过继承,可以创建事务的层次分类。可以首先定义 一个具有广泛意义的类,然后从它进行派生,添加一些具有特定特征的类。 当一个类是另外一个类的特殊情形时,可以考虑引入继承关系。 父类的属性和操作,只有当存取控制是公有和保护型时,才能被继承。私有属性和操作不能被子类继承。 3. 类的关联

可以使用下列的指导方针列出暂时性的关联关系: (1)动词与介词词组。

(2)两个或两个以上的类有相依赖的关系,就可能有关联。 (3)隐含的关系。 (4)一般的常识。

然后依据以下的规则去除假性的关联:

(1)如果有一类别被去除,则与之相关的关联也应去除。

(2)现在不考虑与外界领域的关联或是实现时才会产生的关联。 (3)关联是说明结构的属性而不是在说明事件。 3.1选课系统的关联关系分析 在选课系统中设计了以下类: 1)界面FormObiect.

2)控制对象ControlObject。 3)课程Course。 设计了以下角色: 1)学生Student。 2)管理员Registrar。

3)学生和管理员的父类People。 4)数据库Database。

这些类和角色之间的关系如下:

1)角色Student和Registrar从People派生。

2)学生、管理员在与系统交互时,都有一个界面与之对应。 3)一个界面可能和课程相关(O-多门)。

4)控制对象负责课程的处理,处理结果在界面上显示。 5)控制对象完成对数据库的操作。 6)界面请求控制对象的服务。

依据以上分析,画出简略的类关系图。进一步分析如下: (1)一个用户界面对象和O个或多个学生相关。 (2)一个用户界面对象和0个或多个管理员相关。 (3)一个用户界面对象和O个或多个课程信息相关。 (4)一个控制对象和0个或多个课程信息相关。 (5)一个用户界面对象和一个控制对象相关。 (6)一个控制对象和一个用户界面对象相关。

更加详细的类图如图26所示,类的属性和操作请参见上面。

图26 详细的类图

3.2选课系统中的类、属性和操作

总结一下选课系统中定义的类、类的属性和操作。到目前为止,选课系统中自定义的类共有7个,如表1所示。

仔细分析系统的需求和前面的设计,可以得到每个类的属性和操作。下面对它们分别予以说明。

(1) 类People定义的属性和操作如图27所示,说明见表2。

图27 绘制类图之14

(2) 类Student的属性和操作如图27所示,说明见表3。

图27 绘制类图之15

因为student是从People继承的“Class Specification”对话框中,选择“Show inherite”,属性和操作显示如图28所示,从中可以看到它从People中继承的属性和操作。

图 28 绘制类图之16

(3)类Registrar的属性和操作如图29所示,说明见表4。

图29 绘制类图之17

因为Registrar是从People继承的“Class Specification”对话框中,选择“Show inherite”,属性和操作显示如图30所示,从中可以看到它从People中继承的属性和操作。

图30 绘制类图之18

(4)类DataBase 的属性和操作如图31所示,说明见表5。

3. Select Course

创建Select Course序列图的具体步骤如下:

(1) 在浏览器中右键点出“Use Case View”,在弹出的菜单中选择“New”,再在下一级菜单中“Sequence Diagram”,则Use Case View中显示一个新创建的序列图的图标,名字是New Diagram,如图2所示,将该图的名字改成Select Course。

图2 创建序列图

(2) 在浏览器中选择一个序列图时,序列图窗口工具变成如图3所示的形式。

图3 工具栏

(3)在浏览器中选择角色Student,将其从浏览器中拖到序列图中(见图4),图窗口中显示角色:Student和泳道:Student,:Student对象下有虚线条。

图4 向序列图窗口中添加角色 (4)选择Create a Object具栏按钮,光标变成十字形状,将光标移到图窗口中,按下鼠标左键,则序列图窗口中添加了一个无名对象,窗口的顶部也出现了一个无名的冰道(见图5)。

图5 添加无名对象

(5)选择新创建的对象,按下鼠标右键,在弹出的菜单中选择“Open specification”,弹出“Object Specification”对话框,选择对象的类,这是个界面对象,这里选择FormView

图6选择界面对象的类

如图7所示,将这个对象命名为Form。

(7)选择对象类且输入对象名称后,按下“OK”按键,序列图中显示已经命名的标有类的对象。

(8)用同样的方法在序列图中添加对象courses和control,添加活动者Database。添加后的结果如图8所示。

图8 添加对象

(9)注意到图8中courses、control都没有类,为了给它们添加类信息,可以双击courses 的图标,在弹出的“Object Specification”对话框的Class下拉列表中选择项。

图9操作示意图。

(10)选择后按下“OK” 按钮,弹出如图10所示的“Class Specification”对话框,然后在 Name文本框中输入“Course”。

图10建立新的类

(11)在对话框中按下“OK”按钮,返回到“Object Specification”对话框。注意到在这个对话框中,图9给出操作示意图。Course(见图11),将courses的Persistence属性设置成Persistant。

图11

12)在图11的对话框中按下“OK”按钮,返回序列图窗口(见图12)。

图12修改了的courses对象

(13)用同样的方法设置control对象的类为ControlObject,并修改数据库角色的名称为

“db”(见图13)。

图13 修改数据库角色

(14)下面在序列图中增加消息。选择工具栏中的“Object Message”图标,在序列图中将光标从stu指向Form,释放鼠标右键,则stu和Form之间添加了一个消息,标有序号1,在其后添加消息名称SelectCommand()(见图14)。

图14

(15)重复以上过程,完成整个序列图(见图15)。

图15 完整序列图

这里顺便介绍一下从序列图中删除对象的方法。用鼠标在序列图窗口选择一个对象, 在“Edit”菜单中选择“Delete from Model”,则所选择的对象被删除。 4 Add Course序列图的创建

先介绍Add Course序列图。 Add Course用例的事件流如下:

(1)管理员选择进入管理界面,用例开始。 (2)系统提示输入管理员密码。 (3)管理员输入密码。 (4)系统验证密码。 A1:密码错误

(5)进入管理界面,系统显示目前所建立的全部课程信息。 (6)管理员选择添加课程。 (7)系统提示输入新课程信息 (8)管理员输入信息。

(9)系统验证是否和已有课程冲突。 A2:有冲突

(10)系统添加新课程,提示课程添加成功。 (11)系统重新进入管理主界面,显示所有课程。 (12)用例结束。

首先,查找Add Course用例的对象。从事件流中发现涉及以下对象: (1)界面。 (2)课程。

(3)对于业务层的操作,也应该有对象进行处理。 (4)事件流中设计的角色有:管理员,数据库。

然后,分析对象、角色之间交互的消息。本用例主要有以下交互: (1)管理员进入管理界面,选择添加课程功能。 (2)界面提示用户输入课程信息。 (3)界面对象创建一个课程对象。

(4)通过控制对象来对课程信息进行合法性检查。 (5)控制对象向课程对象返回结果。

(6)控制对象向数据库查询课程相关信息。 (7)控制对象对查询结果进行判断。 (8)控制对象向数据库中插人数据。 (9)在界面上显示结果。

(10)控制对象撤销建立的课程对象。

根据以上分析,整理的Add Course序列图如图16所示。

图16 Add Course序列图

5. Select Course协作图的创建

下面介绍Select Coursef协作图的创建,具体步骤如下:

(1) 在浏览器的“Use Case View”中的用例Select Course上按下鼠标右键,在弹出的菜单中选择“New”,然后再在弹出的菜单中选择“Collaboration Diagram”,创建一个新的协作图,将协作图的名字改成Select Course(见图17)。

(2)选择协作图Select Course,协作图窗口工具栏如图18所示。

图18 工具栏

(3) Select Course协作图涉及以下对象:学生、界面、控制对象、数据库对象、课程对象。

下面操作在图中添加对象:在Use Case View中选择Student角色,将其拖动到协作图窗口;再选择工具栏图标“Object”,如图19所示,在协作图窗口中按下鼠标左键,添加一个对象

图19 添加对象

(4)选择对象并按下鼠标右键,在弹出的菜单中选择“Open Specification”,然后在弹出 的对话框中设置对象的属性,如图20所示。

图20设置对象的属性

(5)采用同样的方法添加对象control、courses和db,结果如图21所示。

图21 添加对象

(6)对象之间的交互如下:

·学生通过界面发送选课命令。 ·界面向控制对象请求课程信息。

·控制对象向数据库发送查询数据消息。 ·控制对象暂存数据库的查询结果。

·界面对象从控制对象中取得所有的课程信息。 ·在界面上显示所有的课程信息。

·界面对象发送命令要求控制对象删除课程信息。 ·学生选择课程。

·界面对象要求学生输入学号。

·界面对象向控制对象发送信息,查询该生是否可以选择选定的课程。 ·控制对象从数据库中查询关联信息。 ·控制对象判断是否可以选课。

·如果可以选课,则向数据库中添加关联信息。 ·向界面对象返回信息。

采用以下方法在对象之间添加消息: 选择“Object Link”工具栏图标,将光标移到协作图窗口,由stu指向form,建立stu到 form的连接,结果如图22所示。

图22 建立连接

(7)选择工具栏中的“Link Message”图标,点击刚才添加的连接,则添加一条消息,如图23所示。

图23添加消息

(8)从步骤(6)中得知学生发送到界面的第一条消息是“学生通过界面发送选课命令”,记作SelectCommand,下面将其设置到消息上去。在协作图窗口上选择1:,点击鼠标右键,在掸出的菜单中选择“Open Specification”,弹出图24所示的对话框,在对话框中输入消息的名字。按下“OK'?按钮,得到图25所示的形式。

图25 设置了属性的消息

(9)采用以上方法添加对象、连接和消息,设置消息的属性,最终得到如图26所示的协作图。

如图26 Select Course协作图

6.小结

本实验做了序列图和协作图,它们描述了用例的初始实现。在实际设计时,只要做成其中的一种图,然后选择图,按下“F5”键,即可生成另一种图。

在UML中,用例的实现用交互图来指定和说明。交互图通过显示对象之间的关系和对象之间处理的消息来建模系统的动态特性。有两种交互图,它们是序列图和协作图。本实验介绍了序列图和协作图的基本概念、组成以及在Rose中的实现。

实验三 UML活动图的设计和实现

一、 实验目的:

1) 熟悉活动图的创建,根据事件流,准确地勾画出活动图。 2) 能够分析系统的每一个用例的事件流、画出相应的活动图。 3) 能使用Rose软件正确画出活动图。

二、 实验要求:

掌握活动图的基本概念和组成。用活动图来描述事件的流程。描述采取何种动作、做什么(对象状态改变)、何时发生(动作序列)以及在何处发生(泳道)。

确定活动图的起始状态、终止状态、状态转移、决策、守护条件、同步棒和泳道。

三、 实验内容:

通过实际制作选课系统中的Add Course(添加课程)用例来学习设计和实现活动图。

四、 实验步骤:

1) 活动图的基本概念和的组成 2) 分析用例的事件流

3) 用Rose软件画出活动图

五、 Add Course(添加课程)用例的活动图设计和实现

利用文本描述事件流是很有用的,但如果事件流的逻辑复杂且有许多其他事件流,则文本形式可能较难阅读和理解。这时可以使用流程图来描述事件流,在UML中这种图称为活动图,它是事件流的另一种建模方式。 因为活动图显示的信息与文本事件流相同,所以可在业务模型中用活动图描述业务过程的工作流。本实验介绍如何创建活动图。 1.活动图的基本概念和的组成

在用例模型中,活动图用来捕捉用例的活动,使用框图的方式显示动作及其结果。活动图着重描述操作(0peratlon)以及用例实例或对象中的活动。 活动图是一种描述工作流的方式,它用来描述采取何种动作、做什么(对象状态改变)、何时发生(动作序列)以及在何处发生(泳道)。活动图可以用作下述目的: 1)描述一个操作执行过程中所完成的工作(动作),这是活动图最常见的用途。 2)描述对象内部的工作。

3)显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。 4)显示用例的实例如何执行动作以及如何改变对象状态。

5)说明一次商务活动中的人(角色)、工作流组织和对象是如何工作的。

活动图由起始状态(start state)、终止状态(end state)、状态转移(state transition)、决策(decision)、守护条件、同步棒(synchronization bar)和泳道(swimlane)组成。 起始状态显式地表示活动图上一个工作流程的开始,用实心圆点来表示(见图1)。

图1 活动图示例

一个活动图中,只有一个起始状态。终止状态表示了一个活动图的最后和终结状态,一个活动图中可以有0个或多个终止状态,终止状态用实心圆点外加一个小圆圈来表示(见图1)。 活动图中的动作用一个圆角四边形表示,其内部的文本串用来说明采取的动作,动作之间的转移用箭头来表示,称为转移,用带有箭头的实线表示。箭头上可能还带有守护条件、发送短句和动作表达式,守护条件用来约束转移,守护条件为真时转移才可以开始。用菱形符号来表示决策点,决策符号可以有一个或多个进入转移,两个或更多的带有守护条件的发出转移。可以将一个转移分解成两个或更多的转移,从而导致并发的动作。所有的并行转移在合并之前必须被执行。一条粗黑线表示将转移分解成多个分支,同样用粗黑线来表示分支的合并,粗黑线称为同步棒(见图2)。

图2 活动图示例

泳道分割活动图,有助于更好地理解执行活动的场所。 下面采用活动图来描述选课系统中的Add Course用例的工作流 2.实例

本实验主要是通过实际制作选课系统中的Add Course(添加课程)用例来学习设计和制作活动图。 2.1分析

在用例图中分析过,Add Course用例的事件流为: (1)管理员选择进入管理界面,用例开始。 (2)系统提示输入管理员密码。 (3)管理员输入密码。

(4)系统验证密码。 A1:密码错误

(5)进入管理界面,系统显示目前所建立的全部课程信息。 (6)管理员选择添加课程。 (7)系统提示输入新课程信息。 (8)管理员输入信息。

(9)系统验证是否和已有课程冲突。 A2:有冲突

(10)系统添加新课程,提示课程添加成功。 (11)系统重新进入管理主界面,显示所有课程。 (12)用例结束。

因为管理员密码验证过程可以抽取出来,作为通用的流程,所以这里对Add Course事件流稍 作修改,将管理员输入课程信息作为起始的活动,内容如下: (1)管理员输入信息。

(2)系统验证是否和已有课程冲突。 A2:有冲突

(3)系统添加新课程,提示课程添加成功。 (4)系统重新进入管理主界面,显示所有课程。 (5)用例结束。

图3 Add Course用例的活动图

根据以上描述并进一步细化,画出图3所示的Add Course用例的活动图。 2.2创建Add Course活动图

创建Add Course活动图的步骤如下:

(1)在浏览器中,使用鼠标右键点击Use Case View,在弹出的菜单中选择“New”→

“Activity Diagram”,则在Use Case View中添加一项“State/Activity Model” ,该项产生一个名为“NewDiagram”的活动图,将其改为“Add Course”,

图4 添加活动图

(2)使用鼠标双击活动图“Add Course”,弹出如图5所示的活动图窗口。

图5 活动窗口

(4)点击工具栏的“Swimlanc”工具,在右边活动图窗口点击鼠标左键,即可增加一个新的泳道“NewSwimlane”,同时在左边的活动图“Add Course”之下,也出现一个泳道“NewSwimlane”标识,将泳道名称修改为“用户接口”,如图6所示。

图6 增加泳道1

(7)使用同样的方法增加“业务逻辑接口”和“数据库接口”泳道,结果如图7所示。

图7 增加泳道2

(8)在工具栏中选择“Start State”图标,放置到“用户接口”泳道内,选择工具栏中的“Activity”图标,在“用户接口”泳道内增加一个新的活动。将活动的名称修改为“输入课程各项信息”。

图8 增加活动

(12)在工具栏中选择“Transition”图标,在活动图窗口中,将光标从起始状态到“输入课各项信息”,则从起始状态到“输入课程各项信息”之间添加了一条带箭头的实

这就是转移,输入课程以后,还要判断输入的课程是否合法,即需要进行课程验证。这个工作要提交到“业务逻辑接口”中进行。采用前述的方法,在“业务逻辑接口”泳道中添加“验证课程”活动,并在“输入课程各项信息”和“验证课程”之间添加转移

图9掭加“验证课程”活动和相关转移

(14)为了进行课程信息的验证,需要在业务逻辑接口中依据已有的课程信息,创建课 程对象,提交到数据库中,进行信息的验证。添加“创建课程对象”活动,依据课程对象的信息,在数据库中查找课程信息。为了完成这个功能,在“数据库接口”泳道中添加“在数据库中查询课程”活动,并在“创建课程对象”和“在数据库中查询课程”之间添加转移关系(见图10)。

图10 增加转移关系

(16)查询结果将被返回到业务逻辑接口,由业务逻辑接口判断查询结果的信息,以确认 添加的课程是否合法。被添加的课程有可能是合法的,也有可能是不合法的,所以要增加一个决策(decision)进行判断。将光标移到活动图窗口的工具栏上,选择“Decision”图标,然后将光标移动到活动图窗口的“业务逻辑接口”泳道,按下鼠标键添加一个决策,在“判断添课程是否合法”和决策之间添加转移(见图11)。

图11 增加转移

(18)如果输入的信息合法,则将在数据库中添加输入的课程信息。如果不合法,则提示重新输入课程信息。在“数据库接口”泳道中添加“在数据库中添加该课程”活动。在决策标记和“在数据库中添加该课程”活动之间添加转移。这个转移发生的条件是课程合法,所以,要在转移上二添加守护条件“合法”。添加守护条件的方法是:双击刚才添加的转移,在弹出的对话框中选择“Detail”选项卡,在“Guard condition”栏中畭转移条件“合法”(见图12)。

图12 添加守护条件1

图13 添加守护条件2

(20)在图所示的对话框中按下“OK”按钮,则活动图可以看到,从决策到“在数据库中添加该课程”的转移上增加了守护条件“合法”。

(21)如果课程信息不合法,则提示重新输入,重新转入“输入课程各项信息”活动。在决策和“输入课程各项信息”之间添加转移,守护条件是“不合法”(见图14)。注意到在图中标记的转移上,标有“提示重新输入”的文字,这是在“stateTransition Specification“对话框中设置“Event”项得到的。

图14 守护条件不合法

(23)如果课程信息合法,则在数据库中添加课程,然后判断添加课程是否成功。增加一个决策,如果添加课程成功,则显示添加成功信息,过程结束(见图15)。

图15 结束

(24)如果添加课程失败,则显示添加错误信息,过程结束(见图16)。到此为止,一个完整的活动图完成了。

图16 完整活动图

本文来源:https://www.bwwdw.com/article/phy8.html

Top