0%

什么是序列图

该篇文章是UML知识的扩充。

什么是序列图

源文链接:https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-sequence-diagram/

UML序列图是详细说明如何执行操作的交互图。它们捕获协作上下文中对象之间的交互。序列图是时间焦点,它们通过使用图表的垂直轴来表示时间,什么消息被发送以及何时发送,从而直观地显示交互的顺序。

序列图捕获:

  • 在实现用例或操作(实例图或通用图)的协作中发送的交互。
  • 系统用户与系统之间、系统与其他系统之间或子系统之间的高级交互(有时称为系统序列图)

img

一、序列图的目的

  • 对系统中活动对象之间的高级交互进行建模
  • 对实现用例的协作中的对象实例之间的交互进行建模
  • 对实现操作的协作中的对象之间的交互进行建模
  • 对通用交互(显示交互的所有可能路径)或交互的特定实例(仅显示交互的一个路径)建模

二、序列图概览

序列图显示元素随着时间的推移交互,它们根据对象(水平)和时间(垂直)组织:

对象尺寸

  • 横轴显示交互中涉及的元素
  • 按照惯例,操作中涉及的对象式按照它们参与消息序列的时间从左到右列出的。但是,横轴上的元素可能以任意顺序出现

时间维度

  • 垂直轴代表页面下方的时间进程(或进度)

注意:序列图中的事件完全是关于排序,而不是持续时间。交互图中的垂直空间与交互的持续时间无关。

三、序列图示例

3.1 酒店系统

序列图是一个交互图,详细说明了操作是如何执行的——发送什么消息以及何时发送。序列图是按时间组织的。随着您向下浏览页面,时间会逐渐增加。操作中涉及的对象按照它们参与消息序列的时间从左到右列出。

下面是进行酒店预订的序列图。启动消息序列的对象是一个预约窗口。

img

注意:类和对象图是静态模型视图。交互图是动态的。它们描述了对象如何协作。

四、序列图符号

4.1 演员(角色)符号

img

  • 与主体交互的实体所扮演的一种角色(例如:通过交换信息和数据)
  • 在主体之外(即,在某种意义上,参与者的实例不是其对应主体的实例的一部分)。
  • 代表人类用户、外部硬件或其他主体所扮演的角色。

注意:

  • 参与者不一定代表特定的物理实体,而是某个实体的特定角色
  • 一个人可以扮演几个不同的演员(角色),相反,一个给定的角色可能由多个不同的人扮演。

4.2 生命线符号

img

  • 生命线代表交互中的个人参与者。

4.3 生命周期符号

img

  • 生命线上的细矩形表示元素执行操作的时间段。
  • 矩形的顶部和底部分别与启动和完成时间对齐

4.4 请求信息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 调用消息是一种表示目标生命线操作调用的消息。

4.5 返回信息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 返回消息是一种消息,表示将信息传递回对应的先前消息的调用者。

4.6 自我信息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 自我消息是一种消息,代表同一生命线消息的调用。

4.7 递归信息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 递归消息是一种表示同一生命线消息的调用的消息。它的目标指向调用消息的激活之上的激活。

4.8 创建消息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 创建消息是一种表示(目标)生命线实例化的消息。

4.9 销毁消息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 销毁消息是一种表示销毁目标生命线生命周期的请求的消息。

4.10 持续时间消息符号

img

  • 消息定义了交互生命线之间的特定通信。
  • 持续时间消息显示消息调用的两个时间点之间的距离。

4.11 笔记符号

img

注释(注释)提供了将各种注释附加到元素的能力。注释不带有语义力量,但可能包含对建模者有用的信息。

4.12 信息和控制焦点

  • 事件是交互中发生某事的任何点。
  • 控制焦点:也称为执行发生,一次执行发生
  • 它在生命线上显示为又高又细的矩形
  • 它表示元素执行操作的时间段。矩形的顶部和底部分别与开始时间和完成时间对齐。

img

五、序列片段

  • UML2.0引入了序列(或交互)片段。序列片段使创建和维护准确的序列图变得更加容易。
  • 序列片段表示为一个框,称为组合片段,它将部分交互包含在序列图中。
  • 片段运算符(在左上角)指示片段的类型。
  • 片段类型:ref、assert、loop、break、alt、opt、neg

img

操作 片段类型
alt 替代多个片段:只有条件为真的片段才会执行。
opt 可选:片段仅在提供的条件为真时执行。相当于只有一条方向的 alt。
par 并行:每个片段并行运行。
loop 循环:片段可能执行多次,守卫指示迭代的基础。
region 临界区:片段一次只能有一个线程执行。
neg 否定:片段显示无效交互。
ref 参考:指在另一个图表上定义的交互。绘制框架以覆盖交互中涉及的生命线。您可以定义参数和返回值。
sd 序列图:用于包围整个序列图。

注意:

  • 可以组合帧以捕获例如循环或分支。
  • 组合片段关键字:alt、opt、break、par、seq、strict、neg、critical、ignore、conside、assert和loop。
  • 约束通常用于显示消息的时序约束。它们可以应用于一条消息的时间或消息之间的间隔。

5.1 组合片段示例

img

5.2 用于建模用例场景的序列图

用户需求被捕获为细化为场景的用例。用例是外部参与者和系统之间交互的集合。在UML中,一个用例是:

“系统(或实体)可以执行的一系列动作的规范,包括变体,与系统的参与者交互。”

场景是通过用例的一条路径或流程,它描述了在系统的一个特定执行期间发生的一系列事件,通常由序列图表示。

img

5.3 序列图 - 代码之前的模型

序列图可能有点接近代码级别,那么为什么不直接编写该算法而不是将其绘制为序列图呢?

  • 一个好的序列图还是有点高于真实代码的水平
  • 序列图是语言中立的
  • 非编码人员可以做序列图
  • 作为一个团队更容易做序列图
  • 可用于测试和/或UX 线框图
-------- The End Thanks For Reading --------