时序图详解
时序图(Sequence Diagram)是统一建模语言(UML)中的交互图,主要用于描述系统中对象之间消息传递的顺序和时间关系。它有助于可视化地表示多个对象在一段时间内如何通过发送和接收消息进行交互。
以下是一些关于时序图的关键概念:
对象:
对象由对象名、类名(可选)和一个下划线分隔的消息类型列表组成。
对象通常用矩形表示,并位于时序图的顶部或中间部分。
如果对象位于顶部,说明在交互开始时对象就已经存在了;如果在中间,则表示在交互过程中被创建的。
生命线:
每个对象都有一个垂直的生命线,表示该对象存在的时间跨度。
生命线是从对象框向下延伸的一条虚线,直到整个交互过程结束。
激活期:
当对象正在执行某个操作时,生命线上会有一个矩形框来表示激活期。
激活期用于展示对象在何时处理消息。
消息:
消息是对象之间的交互,用来表示一个对象请求另一个对象的操作。
消息通常以箭头表示,从发送者指向接收者。
箭头上有消息名称、参数(可选)和其他相关细节(如返回值、异常等)。
并发性:
并发行为可以通过并发片段(例如:并行组合片段、选择片段和循环片段)来表示。
并发片段以带有特定标记的矩形框表示,并可以包含多个子序列。
时间轴:
时序图具有水平时间轴,左侧表示较早的时间,右侧表示较晚的时间。
各个事件按照它们发生的相对时间在时间轴上排列。
说明一:信息
(同步)消息:以一条实线和实心箭头表示。
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
返回消息:以小于号和虚线表示。
返回消息表示从过程调用返回。
异步消息:以一条实线和大于号表示。
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
自关联消息@:以一个半闭合的长方形+下方实心剪头表示。
表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。
说明二:片段
选择片段,或称条件分支,可根据不同的条件,执行不同的交互,类似于if-else语句
循环片段,表明该片段会被重复执行,类似于while或for语句
并向片段
片段总结
片段的功能,除了上面介绍的选择、循环和并向、还有许多其它类型,这里详细列举一下,作为参考:
片段类型 | 名称 | 说明 |
---|---|---|
Alt | 选择 | 在一组行为中根据特定的条件选择某个交互 |
Loop | 循环 | 交互片段会被重复执行 |
Par | 并行 | 支持交互片段的并发执行 |
Opt | 选项 | 表示一个可选的行为 |
Break | 中断 | 提供了和编程语言中的break类拟的机制 |
Seq | 弱顺序 | 有两个或更多操作数片段,如果消息涉及的生命线不同,会并行交错 |
Strict | 强顺序 | 有两个或更多操作数片段,这些片段必须按给定顺序发生 |
默认情况下,序列图表明可能发生的一系列消息。在运行的系统中,可能会出现您未选择显示在关系图上的其他消息。
以下片段类型可用于更改此释义:
片段类型 | 名称 | 说明 |
---|---|---|
Consider | 考虑 | 明确标志了应该被处理的消息 |
Assert | 断言 | 标志了在交互片段中作为事件唯一的合法继续者的操作数 |
Neg | 否定 | 用来标志不应该发生的交互 |
Ignore | 忽略 | 明确定义了交互片段不应该响应的消息 |
说明三:时序图将交互关系表示为一个二维图
纵向是时间轴,时间沿竖线向下延伸;横向轴代表了在协作中各独立对象的类元角色。
类元角色用生命线表示。当对象存在时,角色用一条虚线表示;当对象的过程处于激活状态时,生命线是一个垂直矩形。
消息用从一个对象的生命线到另一个对象生命线的箭头表示。
箭头以时间顺序在图中从上到下排列。
时序图的使用场景非常广泛,包括软件开发、业务流程分析、通信协议设计等等。这些图表帮助开发者和利益相关者更好地理解系统的动态行为和工作流。常见的绘制时序图的工具包括微软Visio、PlantUML、 draw.io 和其他专门的UML建模工具。