一、UML序列图的定义

UML是一种描述上下文不同对象之间,通信、操作、执行细节的序列图。它以时间为基础,并在纵轴上标注发送、接收信息的结点与内容,从而直观地显示对象交互的顺序。

UML序列图可用于表达:
① 实际生活中,不同对象在进行具体用例或操作时的交互;
② 逻辑分析上,用户与系统、系统与系统之间的通信行为。

时间序列 embedding_图论

二、UML序列图的相关概念

2.1 对象

参与交互的元素,如用户、系统、物体等。习惯上,将不同对象,按参与交互的先后顺序,从左至右列举在UML序列图的水平方向上。

2.2 时间

信息交互、操作发生的时间顺序。在垂直方向,按先后,从上往下表示。
注意: UML的时间只关注于交互的次序,而非持续时间。故垂直空间的长短,与通信的持续时间无关。

2.3 序列个体

1.参与者(Actor):
在UML主体之外,不属于对象,不直接参与系统内的信息交互,一般以开启或引起中断等行为,触发某个事件,进而影响序列的流程,如:人类用户、外部硬件;

时间序列 embedding_图论_02


2. 生命线(Lifeline):

由对象、参与者延伸出的一条时间线,代表个体在交互过程中的状态。不参与通讯时,呈挂起态(长虚线表示);

时间序列 embedding_序列图_03


3. 激活(Activations):

生命线上的细长矩形,表示该时间段,生命线所属的个体正在通讯或执行某项操作;

时间序列 embedding_图论_04


4. 发送信息(Call Message):

发送端主动向另一对象传递信息的过程;

时间序列 embedding_序列图_05


5. 返回信息(Return Message):

数据交互中,接收端对来自发送端的信息进行反馈的过程;

时间序列 embedding_时间序列 embedding_06


6. 自我信息(Self Message):

发送端向同对象、同激活段的其它元素传递信息的过程;

时间序列 embedding_程序人生_07


7. 递归信息(Recursive Message):

发送端向同对象、同激活段、同一元素传递信息的过程;

注意: 区别于自我信息,递归信息是自身发送,自身接收。例如:自言自语时,耳朵(接收端)能听到嘴巴(发送端)的声音。虽然二者同属一个人(同对象),同时运作(同激活),但因为是不同的器官(不同元素),所以这个过程属于自我信息;

时间序列 embedding_经验分享_08


8. 创造信息(Create Message):

交互中途,由成员对象向系统引进一个新的对象的过程;

注意: 新引进的对象,必须是交互开始时,不存在于系统中。

时间序列 embedding_图论_09


9. 销毁信息(Destroy Message):

交互中途或结束时,把某个成员对象,从系统中剔除的过程;

时间序列 embedding_图论_10


10. 持续信息(Duration Message):

表示信息的发送、接收时刻,存在一个持续、较大时间差的状态;

时间序列 embedding_经验分享_11


11. 注释(Note):

向序列图补充备注或说明,增强可读性。

时间序列 embedding_图论_12

2.4 序列片段

为了提高UML的准确性与可维护性,UML 2.0 引进序列片段的概念,用以表示复数个体组成的选择、分支、循环等逻辑结构。

序列片段,由片段运算符(Fragment Operator)片段主体(Fragment Box) 构成:

时间序列 embedding_经验分享_13


片段运算符(Fragment Operator),表示序列片段的运算类型,有:alt、opt、par、loop、region、neg、ref、 sd等;

运算符

运算类型

alt

相当于 switch 或 if-else if-else,执行条件为“真”的对应片段主体

opt

相当于单个 if,只有条件为“真”时,才执行对应片段主体

loop

相当于 while、loop、for,循环运行片段主体

par

片段主体内的每个分支并行运行

region

片段主体每次只能由一个线程调用、执行

neg

片段主体所执行的交互无效

ref

类似于子函数,定义另一序列图上的交互,使用者可以自定义参数和返回值

sd

Sequence Diagram,主体一般包围整个序列图,表示系统本身

片段主体(Fragment Box),表示片段内各语句的相互作用,按运算符的不同,内容可以是分支操作、循环体等。

序列片段示例(资金派发系统),如下:

时间序列 embedding_图论_14

2.5 序列图示例

序列图整体示例(酒店系统),如下:

时间序列 embedding_时间序列 embedding_15

三、UML序列图的其它示例

1.创建和删除对象

时间序列 embedding_经验分享_16


2.医院病床分配

时间序列 embedding_经验分享_17


3.预订座位

时间序列 embedding_时间序列 embedding_18


4.银行报价

时间序列 embedding_经验分享_19


5.下订单

时间序列 embedding_程序人生_20