简单读懂UML图(三)
一、概述
本篇博客主要介绍动态模型:展现系统的内部行为。 包括序列图、活动图、状态图。
二、分类
1.序列图
(1)基本概念
它描述了执行系统功能的各个角色之间相互传递消息的顺序关系,也就是对象之间的交互。
(2)成员介绍
1)角色
系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。
2)对象
对象就是指类的实例,在序列图中对象有三种状态:激活、运行(存在)和销毁。
3)生命线
生命线(Lifeline)是一条垂直的虚线,用来表示序列图中的对象在一段时间内的存在。
4)激活
激活是对象操作的执行,它表示一个对象直接或通过从属操作完成操作的过程。在UML图中通过一个窄长的矩形来表示,矩形的高度表示对象存在的过程。
5)消息
消息(Messages)是对象间的一种通信机制。如图,消息由发送对象向另一个或其他几个接收对象发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作。在UML中消息分为5类:递归调用、普通操作、返回消息、异步调用的消息、过程调用的消息。
6)分支与从属流
在UML中存在两种方式可以来修改序列图中消息的控制流,分别是:分支和从属流。
分支是指从同一点发出的多个消息并指向不同的对象,根据条件是否互斥,可以有条件和并行两种结构。从属流指的是从同一点发出多个消息指向同一个对象的不同生命线。
7)举例
上图所示有八个阶段,总体为纵向查看,灰色的虚线即为生命线,棕色的长方形代表激活,长度为存在的过程,在激活上有其对应的操作。
2.状态图
(1)基本概念
状态图(Statechart Diagram)是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的事件做出反应。一般选择软件系统中核心的实体进行分析。
(2)成员介绍
1)状态
指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。状态由圆角举行表示。
特殊的,初态用实心圆点表示,终态用圆形内嵌圆点表示。
2)转移
转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态(Target State)
事件标记(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。
警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。
结果(Effect):对象状态转移后的结果。
3)动作
动作是一个可执行的原子操作,也就是说动作是不可中断的,其执行时间是可忽略不计的。
上图中Entry、Exit即为动作
4)自身转移
状态可以有返回自身状态的转移,称之为自身转移
5)组合状态
嵌套在另外一个状态中的状态称之为子状态,一个含有子状态的状态被称作组合状态. 如下图,【Check PIN】是组合状态,【Enter PIN】是子状态。
6)进入节点
如下图所示,由于一些原因并不会执行初始),而是直接通过一个节点进入状态【Ready】,则此节点称之为进入节点
7)历史状态
历史状态是一个伪状态(Pseudostate),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是再次从组合状态的初态开始。
在上图的状态图中,正常的状态顺序是:【Washing】- >【Rinsing】->【Spinning】。
如果是从状态【Rinsing】突然停电(Power Cut)退出,,洗衣机停止工作进入状态【Power Off】,当电力恢复时直接进入状态【Running】。
8)并发区域
状态图可以分为区域,而区域又包括退出或者当前执行的子状态。说明组合状态在某一时刻可以同时达到多个子状态。
上图同时进入Applying Front Brakes和Applying Rear Brakes两种状态。
9)举例
上图描述了公交车类的一个状态。
3.动态图
(1)基本概念
是阐明了业务用例实现的工作流程。
(2)成员介绍
1)活动状态与动作状态
主要区别为是否可分。活动状态可分解为其他的子活动或动作状态,而动作状态是原子的,是构造活动图的最小单位。
也就是说,活动状态是有过程的,而动作状态是原子的,瞬时的。两者都用平滑的圆角矩形表示。
2)动作状态约束
用来约束状态动作
3)动作流
动作之间的转换,用带箭头的直线表示,箭头的方向指向转入的方向。
4)开始节点
与状态图相同
5)终止节点
有两种,除了与状态图相同的内部黑色实心圆点+圆圈组合外,还有子流程的结束节点:圆圈+内部十字叉
6)对象
矩形方框表示。
7)数据存储对象
矩形方框表示,内含关键字
8)对象流
对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或动作对对象的影响。
9)分支与合并
一般出现在选择分支。满足不同条件时进行不同的转换。
10)分叉与汇合
分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。
水平风向:
垂直风向:
11)时间信号
12)发送信号
13)接收信号
14)泳道
泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。
在图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的动态图中,每个活动只能明确地属于一个泳道。
泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。
15)举例
程序管理与测试管理为两个泳道,他们共同描述了裁判认证系统的这个活动的工作流程。