时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
组成元素
在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,最后的一种 组合片段 不是很常用,且比较复杂。
角色(Actor)
系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。
对象(Object)
对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
- 对象名和类名。例如:华为手机:手机 、loginServiceObject:LoginService;
- 只显示类名,不显示对象,即为一个匿名类。例如::手机 、:LoginSservice;
- 只显示对象名,不显示类名。例如:华为手机: 、loginServiceObject: 。
生命线(LifeLine)
时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。控制焦点(Activation)
又称激活期,起始点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。消息(Message)
表现代表对象之间发送的信息。消息分为三种类型。
- 同步消息(Synchronous Message)
以一条实线+实心箭头表示。消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。 - 异步消息(Asynchronous Message)
以一条实线+大于号表示。消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。 - 返回消息(Return Message)
以小于号+虚线表示。返回消息表示从过程调用返回。自关联消息
表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。组合片段
组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:
类型 | 名称 | 说明 |
---|---|---|
Opt | 选项 | 包含一个可能发生或可能不发生的序列。可以在临界中指定序列发生的条件。 |
Alt | 抉择 | 包含一个片段列表,这些片段包含备选消息序列。 在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。 |
Loop | 循环 | 片段重复一定次数。可以在临界中指示片段重复的条件。 Loop 组合片段具有”Min”和”Max”厦性,它们指示片段可以重复的最小和最大次数,默认值是无限制。 |
Break | 中断 | 如果执行此片段,则放弃序列的其余部分。可以使用临界来指示发生中断的条件。 |
Par | 并行 | 井行处理。片段中的事件可以交错。 |
Critical | 关键 | 用在Par 或 seq 片段中。指示此片段中的消息不得与其他消息交错。 |
Seq | 弱顺序 | 有两个或更多操作数片段。 涉及同一生命线的消息必须以片段的顺序发生。如果消息沙及的生命线不同,来自不同片段的消息可能会井行交错。 |
Strict | 强顺序 | 有两个或更多操作数片段。这些片段必须投给定顺序发生。 |
Consider | 考虑 | 指定此片段描述的消息列表。其他消息可发生在运行的系统中,但对此猫述来说意义不大。在”Messages”属性中键入该列表。 |
Ignore | 忽略 | 此片段未描达的消息列表。这些消息可发生在运行的系统中,但对此描述来说意义不大。在”Messages”属性中键入该列表。 |
Assert | 断言 | 操作数片段指定唯一有效的序列。通常用在 Consider 或 Ignore 片段中。 |
Neg | 否定 | 此片段中显示的序列不得发生。通常用在 consider或Ignore片段中。 |
时序图的画法
时序图的绘制方法简单总结为以下3步:
- 划清边界,识别交互语境。即界定好自己所要画的时序图的范围,了解所要画的时序图的前提和背景。
比如“学生信息管理”就是所要绘制的时序图的交互内容,就不需要往上延伸到学生注册并认证身份,不需要用户登录,也不需要往下延伸到查询课表、资料下载等无关的内容上。
- 梳理角色和对象。在“学生信息管理时序图”中,角色有学生/教务用户,对象有教务主界面、学生信息界面、管理学生信息界面、数据库。
注意:角色和对象都是名词,动词不可以作为角色和对象。
- 添加消息。从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明每个消息的特性,如参数等