一、UML序列图的定义
UML是一种描述上下文不同对象之间,通信、操作、执行细节的序列图。它以时间为基础,并在纵轴上标注发送、接收信息的结点与内容,从而直观地显示对象交互的顺序。
UML序列图可用于表达:
① 实际生活中,不同对象在进行具体用例或操作时的交互;
② 逻辑分析上,用户与系统、系统与系统之间的通信行为。
二、UML序列图的相关概念
2.1 对象
参与交互的元素,如用户、系统、物体等。习惯上,将不同对象,按参与交互的先后顺序,从左至右列举在UML序列图的水平方向上。
2.2 时间
信息交互、操作发生的时间顺序。在垂直方向,按先后,从上往下表示。
注意: UML的时间只关注于交互的次序,而非持续时间。故垂直空间的长短,与通信的持续时间无关。
2.3 序列个体
1.参与者(Actor):
在UML主体之外,不属于对象,不直接参与系统内的信息交互,一般以开启或引起中断等行为,触发某个事件,进而影响序列的流程,如:人类用户、外部硬件;
2. 生命线(Lifeline):
由对象、参与者延伸出的一条时间线,代表个体在交互过程中的状态。不参与通讯时,呈挂起态(长虚线表示);
3. 激活(Activations):
生命线上的细长矩形,表示该时间段,生命线所属的个体正在通讯或执行某项操作;
4. 发送信息(Call Message):
发送端主动向另一对象传递信息的过程;
5. 返回信息(Return Message):
数据交互中,接收端对来自发送端的信息进行反馈的过程;
6. 自我信息(Self Message):
发送端向同对象、同激活段的其它元素传递信息的过程;
7. 递归信息(Recursive Message):
发送端向同对象、同激活段、同一元素传递信息的过程;
注意: 区别于自我信息,递归信息是自身发送,自身接收。例如:自言自语时,耳朵(接收端)能听到嘴巴(发送端)的声音。虽然二者同属一个人(同对象),同时运作(同激活),但因为是不同的器官(不同元素),所以这个过程属于自我信息;
8. 创造信息(Create Message):
交互中途,由成员对象向系统引进一个新的对象的过程;
注意: 新引进的对象,必须是交互开始时,不存在于系统中。
9. 销毁信息(Destroy Message):
交互中途或结束时,把某个成员对象,从系统中剔除的过程;
10. 持续信息(Duration Message):
表示信息的发送、接收时刻,存在一个持续、较大时间差的状态;
11. 注释(Note):
向序列图补充备注或说明,增强可读性。
2.4 序列片段
为了提高UML的准确性与可维护性,UML 2.0 引进序列片段的概念,用以表示复数个体组成的选择、分支、循环等逻辑结构。
序列片段,由片段运算符(Fragment Operator) 和片段主体(Fragment Box) 构成:
① 片段运算符(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),表示片段内各语句的相互作用,按运算符的不同,内容可以是分支操作、循环体等。
序列片段示例(资金派发系统),如下:
2.5 序列图示例
序列图整体示例(酒店系统),如下:
三、UML序列图的其它示例
1.创建和删除对象
2.医院病床分配
3.预订座位
4.银行报价
5.下订单