UML基础 解析动态UML模型图

开发 架构
UML模型图各有侧重,如用例图侧重描述用户需求,类图侧重描述系统具体实现;描述的方面都不相同,如类图描述的是系统的结构,序列图描述的是系统的行为。

本文和大家重点讨论一下UML模型图,九种UML模型图分为三大类:结构分类、动态行为和模型管理,结构分类包括用例图、类图、对象图、构件图和部署图,动态行为包括状态图、活动图、顺序图和协作图,模型管理则包含类图。本文主要介绍一下动态UML模型图。

UML模型图

UML定义了九种UML模型图:用例图(UseCaseView)、类图(ClassDiagram)、对象图(ObjectDiagram)、构件图(ComponentDiagram)、部署图(DeploymentDiagram)、状态图(StateChartDiagram)、活动图(ActivityDiagram)、序列图(SequenceDiagram)以及协作图(CollaborationDiagram)。这九种UML模型图各有侧重,如用例图侧重描述用户需求,类图侧重描述系统具体实现;描述的方面都不相同,如类图描述的是系统的结构,序列图描述的是系统的行为;抽象的层次也不同,如构件图描述系统的模块结构,抽象层次较高,类图是描述具体模块的结构,抽象层次一般,对象图描述了具体的模块实现,抽象层次较低。

在有的文献书籍中,将这九种UML模型图分为三大类:结构分类、动态行为和模型管理,结构分类包括用例图、类图、对象图、构件图和部署图,动态行为包括状态图、活动图、顺序图和协作图,模型管理则包含类图。本文则从动态和静态的角度分别介绍UML的九种UML模型图。

1.动态UML模型图

动态行为UML模型图描述了系统随时间变化的行为。动态UML模型图包括:用例图、状态图、活动图、顺序图和协作图。

1.1用例图

用例图从用户的角度来描述系统的行为和特征。用例图一般是用来进行系统的需求分析的工具。

用例图中首先要明确的概念就是用例。用例是系统的一个功能单元,描述了参与者与系统发生的一次交互行为。例如:银行的ATM自动提款机系统,用户提款就是一个用例。

用例图有以下几种模型元素:用例(UseCase)、参与者(Actor)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。用例是以一个椭圆形来表示,椭圆中心是用例的名称;参与者就是与所要建模的系统交互的外部用户、进程或其他系统,参与者是以一个人形的图标表示;关联关系描述参与者与其需要交互的用例之间的通信路径,用一条实线段表示;包含关系描述一个用例利用另一个用例完成某个过程,用一个带箭头的虚线段并在虚线段上以“《include》”作为标识来表示,箭头指向被包含的用例;扩展关系描述一个用例在原有的另一个用例的基础上,扩展了那个用例的部分功能,和包含关系类似,也是以一个带箭头的虚线段表示,不同的是虚线段上显示的是“《extend》”,箭头指向被扩展的用例;泛化关系描述用例之间的一般和特殊的关系,特殊用例是在继承了一般用例的特性的基础上添加了新的特性,泛化关系和扩展关系有相似之处,不同的是扩展关系的需要明确标明被扩展用例的扩展点,扩展用例只能扩展这些扩展点,泛化关系用一个带有空心三角箭头的实线段表示。

1.2状态图

UML模型图中状态图以状态的概念描述对象、子系统、系统在生命周期中的各种行为,简单的说就是一个状态图只描述某一个对象(可以是类、程序模块、系统)的行为。通过状态图可以知道一个对象、子系统、系统的各种状态及其收到的消息对其状态的影响。世界万物都有可以描述的状态,因此都可以通过状态图来描述他们的行为,状态图具有很强的表达能力。

状态图有以下几种常用的模型元素:状态(State)、转换(Transition)、起始状态(StartState)、终止状态(EndState)。状态描述一个对象的生命周期中某个时间段的特征,状态是用圆角的矩形表示;转换描述状态间的转移,用一个带箭头的实线段表示,还可以给转换添加标注,通过标注来描述引起状态转移的事件、条件和要执行的操作,标注的格式为:事件名[条件]/操作,标注的每个部分都可以省略;起始状态描述对象生命周期的开始阶段,用一个黑色的圆表示,有时为了表述清楚,在不产生混淆概念的情况下,可以省去起始状态;终止状态描述对象生命周期的终止阶段,用一个带圆形外框的黑色圆表示,一个状态图可以有多个终止状态,有时为了表述清楚,在不产生混淆概念的情况下,可以省去终止状态。

1.3活动图

活动图是通过一系列活动描述对象的行为,对象可以是程序、模块、子系统、系统。通过活动图,可以了解所描述对象的要进行的各种任务和过程。

UML模型图中活动图常用的模型元素包括:活动(Activity)、起始点(Start)、终止点(End)、转换(Transition)、对象(Object)、条件判断(Decision)、同步条(SynchronizationBar)、信息流和泳道(Swinlane)。活动描述的是系统要完成的一个任务或要进行的一个过程,是活动图中的一个原子活动,活动用一个圆角的矩形表示,并标上活动名;起始点描述活动图的开始状态,与状态图类似,用一个黑色的圆标识,活动图可以有多个起始点;终止点描述活动图的终止状态,与状态图类似,用一个带圆圈的黑色圆表示,活动图可以有多个终止点;转换描述活动之间的转换,也就是被描述对象的控制流,转换用带箭头的实线段表示,箭头指向转向的活动,可以在转换上用文字标识转换发生的条件;对象是活动图中参与的对象,它可以发送信号给活动或是接收活动的信号,也可以表示活动的输入/输出结果,对象的表示和对象图中的表示相同。

条件判断描述活动间转换的分支,只有一个流入的信息流,不同的条件下输出的信息流有不同的流向,条件判断用一个菱形表示;同步条描述活动之间的同步,一般有多个信息流流入,多个信息流流出,必须是流入的信息流都到达,流出的信息流才能同时流出,同步条用一条较粗的水平的或是垂直的实线段表示;信息流描述活动和对象的交互关系,对象可以作为活动的输入/输出,也可以作为一个实体,接收活动的信号或是向活动发送信号,信息流用带箭头的虚线段表示,箭头标识信息流的方向;泳道描述的是活动图中的活动的分组,通常,可以将活动按照某种标准分组,泳道在UML活动图中的表示就是在横向上将活动图划分出一个纵向的区域,同组的活动和对象都在这个区域中,区域之间用虚线分隔。

1.4顺序图

顺序图通过描述对象之间的交互来表达被描述对象的行为。顺序图重点强调对象交互的时间性顺序性。与前面介绍的UML模型图可以随意组织模型元素不同,顺序图有一定的结构,可以将顺序图看成一个二维坐标,纵向上表示的是不同的对象,横向上是顺序的时间

顺序图常用的模型元素有:对象(Object)和消息(Message)。对象是顺序图描述的对象中的一个子对象,对象的表示和对象图的类似,但是顺序图中的对象只放置在图中对象所在的纵向区域的顶端,同时有一条向下延伸的虚线,表示对象的生命线,在对象正在执行动作(如向其它对象发送消息)的区间,生命线的虚线就被一个矩形方块代替,用来表示此时对象处于激活状态,在对象生命线末尾用一个“×”标识对象生命期的结束;消息是对象间通讯的信息,可以是控制信息、数据信息等,消息可以分为简单消息、同步消息、异步消息和返回消息,简单消息标识对象间的一般消息,没有具体的细节,只描述了对象间的一次通讯,简单消息用一个带箭头的实线段表示,同步消息描述的是消息的发送方发送了消息之后,必须收到回复消息才能进行后续的动作,同步消息用带实心三角箭头的实线段表示,异步消息描述的是消息的发送方在发送了消息之后就能进行后续动作,不需要等待回复消息,返回消息描述的是从同步消息激活的动作返回到同步消息发送者的消息,返回消息用带箭头的虚线段表示。

1.5协作图

UML模型图中协作图描述在一定的语境中一组对象以及用来实现某些功能的对象之间的相互作用和对象之间的关系。协作图可以看成是在对象图的基础上,加入了对象之间的消息通讯以描述对象之间的交互。与顺序图不同,协作图重点是在空间上描述对象的交互。

协作图除了具有对象图的模型元素之外,就是加入了消息(Message),消息是对象之间的通讯,从而实现对象的交互,消息可以分为:指向源的简单消息、指向目的的简单消息、指向源的异步消息、指向目的的异步消息、指向源的同步消息、指向目的的同步消息,指向源和指向目的都是表示简单消息的流向,只是图形表示的指向不同而已,指向源的简单消息和指向目的的简单消息都用带箭头的线段表示,指向源的简单消息只指向左边边,指向目的的简单消息只指向右边,指向源的异步消息用带有下半个箭头的实线段表示,指向目的的异步消息用带有上半个箭头的实线段表示,指向源的同步消息和指向目的的同步消息用带实心三角箭头的实线段表示,指向源的同步消息只指向左边,指向目的的同步消息只指向右边。
 

【编辑推荐】

  1. 深入剖析静态UML模型图
  2. 术语汇编 UML模型图组成解析
  3. 九种UML模型图及其功能详解
  4. 解析UML中五类UML模型图
  5. 用UML模型实现大型实时监控应用软件

 

 

责任编辑:佚名 来源: hi.baidu.com
相关推荐

2010-07-05 17:28:57

UML动态模型图

2010-07-02 10:25:50

UML模型图

2010-07-12 10:25:44

UML类图

2010-07-05 09:19:35

UML动态模型图

2010-06-18 18:27:13

UML构件图

2010-06-17 15:29:52

UML活动图

2010-06-17 14:52:42

UML构件图

2010-06-11 17:34:37

UML对象图

2010-07-06 13:04:33

UML系统组件图

2010-07-09 15:04:48

UML部署图

2010-07-06 12:00:23

UML活动图

2010-06-10 09:17:40

UML用例图

2010-06-13 12:40:44

UML序列图

2010-06-11 16:38:22

UML协作图

2010-07-12 11:23:09

UML类图

2010-07-02 10:38:53

UML模型图

2010-06-13 15:43:32

UML用例图

2010-06-10 09:04:18

UML用例图

2010-06-11 10:31:19

UML部署图

2010-07-08 13:03:31

UML状态机图
点赞
收藏

51CTO技术栈公众号