该篇文章是UML知识的扩充。
什么是序列图
源文链接:https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-sequence-diagram/
UML
序列图是详细说明如何执行操作的交互图。它们捕获协作上下文中对象之间的交互。序列图是时间焦点,它们通过使用图表的垂直轴来表示时间,什么消息被发送以及何时发送,从而直观地显示交互的顺序。
序列图捕获:
- 在实现用例或操作(实例图或通用图)的协作中发送的交互。
- 系统用户与系统之间、系统与其他系统之间或子系统之间的高级交互(有时称为系统序列图)
一、序列图的目的
- 对系统中活动对象之间的高级交互进行建模
- 对实现用例的协作中的对象实例之间的交互进行建模
- 对实现操作的协作中的对象之间的交互进行建模
- 对通用交互(显示交互的所有可能路径)或交互的特定实例(仅显示交互的一个路径)建模
二、序列图概览
序列图显示元素随着时间的推移交互,它们根据对象(水平)和时间(垂直)组织:
对象尺寸
- 横轴显示交互中涉及的元素
- 按照惯例,操作中涉及的对象式按照它们参与消息序列的时间从左到右列出的。但是,横轴上的元素可能以任意顺序出现
时间维度
- 垂直轴代表页面下方的时间进程(或进度)
注意:序列图中的事件完全是关于排序,而不是持续时间。交互图中的垂直空间与交互的持续时间无关。
三、序列图示例
3.1 酒店系统
序列图是一个交互图,详细说明了操作是如何执行的——发送什么消息以及何时发送。序列图是按时间组织的。随着您向下浏览页面,时间会逐渐增加。操作中涉及的对象按照它们参与消息序列的时间从左到右列出。
下面是进行酒店预订的序列图。启动消息序列的对象是一个预约窗口。
注意:类和对象图是静态模型视图。交互图是动态的。它们描述了对象如何协作。
四、序列图符号
4.1 演员(角色)符号
- 与主体交互的实体所扮演的一种角色(例如:通过交换信息和数据)
- 在主体之外(即,在某种意义上,参与者的实例不是其对应主体的实例的一部分)。
- 代表人类用户、外部硬件或其他主体所扮演的角色。
注意:
- 参与者不一定代表特定的物理实体,而是某个实体的特定角色
- 一个人可以扮演几个不同的演员(角色),相反,一个给定的角色可能由多个不同的人扮演。
4.2 生命线符号
- 生命线代表交互中的个人参与者。
4.3 生命周期符号
- 生命线上的细矩形表示元素执行操作的时间段。
- 矩形的顶部和底部分别与启动和完成时间对齐
4.4 请求信息符号
- 消息定义了交互生命线之间的特定通信。
- 调用消息是一种表示目标生命线操作调用的消息。
4.5 返回信息符号
- 消息定义了交互生命线之间的特定通信。
- 返回消息是一种消息,表示将信息传递回对应的先前消息的调用者。
4.6 自我信息符号
- 消息定义了交互生命线之间的特定通信。
- 自我消息是一种消息,代表同一生命线消息的调用。
4.7 递归信息符号
- 消息定义了交互生命线之间的特定通信。
- 递归消息是一种表示同一生命线消息的调用的消息。它的目标指向调用消息的激活之上的激活。
4.8 创建消息符号
- 消息定义了交互生命线之间的特定通信。
- 创建消息是一种表示(目标)生命线实例化的消息。
4.9 销毁消息符号
- 消息定义了交互生命线之间的特定通信。
- 销毁消息是一种表示销毁目标生命线生命周期的请求的消息。
4.10 持续时间消息符号
- 消息定义了交互生命线之间的特定通信。
- 持续时间消息显示消息调用的两个时间点之间的距离。
4.11 笔记符号
注释(注释)提供了将各种注释附加到元素的能力。注释不带有语义力量,但可能包含对建模者有用的信息。
4.12 信息和控制焦点
- 事件是交互中发生某事的任何点。
- 控制焦点:也称为执行发生,一次执行发生
- 它在生命线上显示为又高又细的矩形
- 它表示元素执行操作的时间段。矩形的顶部和底部分别与开始时间和完成时间对齐。
五、序列片段
UML2.0
引入了序列(或交互)片段。序列片段使创建和维护准确的序列图变得更加容易。- 序列片段表示为一个框,称为组合片段,它将部分交互包含在序列图中。
- 片段运算符(在左上角)指示片段的类型。
- 片段类型:ref、assert、loop、break、alt、opt、neg
操作 | 片段类型 |
---|---|
alt | 替代多个片段:只有条件为真的片段才会执行。 |
opt | 可选:片段仅在提供的条件为真时执行。相当于只有一条方向的 alt。 |
par | 并行:每个片段并行运行。 |
loop | 循环:片段可能执行多次,守卫指示迭代的基础。 |
region | 临界区:片段一次只能有一个线程执行。 |
neg | 否定:片段显示无效交互。 |
ref | 参考:指在另一个图表上定义的交互。绘制框架以覆盖交互中涉及的生命线。您可以定义参数和返回值。 |
sd | 序列图:用于包围整个序列图。 |
注意:
- 可以组合帧以捕获例如循环或分支。
- 组合片段关键字:alt、opt、break、par、seq、strict、neg、critical、ignore、conside、assert和loop。
- 约束通常用于显示消息的时序约束。它们可以应用于一条消息的时间或消息之间的间隔。
5.1 组合片段示例
5.2 用于建模用例场景的序列图
用户需求被捕获为细化为场景的用例。用例是外部参与者和系统之间交互的集合。在UML
中,一个用例是:
“系统(或实体)可以执行的一系列动作的规范,包括变体,与系统的参与者交互。”
场景是通过用例的一条路径或流程,它描述了在系统的一个特定执行期间发生的一系列事件,通常由序列图表示。
5.3 序列图 - 代码之前的模型
序列图可能有点接近代码级别,那么为什么不直接编写该算法而不是将其绘制为序列图呢?
- 一个好的序列图还是有点高于真实代码的水平
- 序列图是语言中立的
- 非编码人员可以做序列图
- 作为一个团队更容易做序列图
- 可用于测试和/或UX 线框图
-------- The End
Thanks For Reading --------
相关文章