UML时序图(Sequence Diagram)

本文深入解析时序图的构成元素,包括角色、对象、生命线等,并通过实例演示时序图的绘制步骤与技巧,适合初学者入门。


什么是时序图

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

让我们来看一看visio2016对时序图的的解释。

在这里插入图片描述

时序图的元素

我们在画时序图时会涉及7种元素:角色(Actor)、对象(Object)、生命线(LifeLine)、控制焦点(Activation)、消息(Message)、自关联消息、组合片段。其中前6种是比较常用和重要的元素,剩余的一种组合片段元素不是很常用,但是比较复杂。我们先介绍前6种元素,在单独介绍组合片段元素。

角色(Actor)

系统角色,可以是人或者其他系统,子系统。以一个小人图标表示。

对象(Object)

对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:

   1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。
   2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
   3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。

生命线(LifeLine)

时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线)。以一条垂直的虚线表。

控制焦点(Activation)

控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。

消息(Message)

表现代表对象之间发送的信息。消息分为三种类型。

  • 同步消息(Synchronous Message)
    消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。以一条实线+实心箭头表示。
  • 异步消息(Asynchronous Message)
    消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。
  • 返回消息(Return Message)
    返回消息表示从过程调用返回。以小于号+虚线表示。

自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。

认识时序图六种元素

我们来使用Visio2016来画一个用户打开微信扫描二维码支付流程时序图,通过这个时序图来认识刚刚介绍的6种时序图元素。

在这里插入图片描述

时序图解释:

1,用户输入手机密码
2,打开手机
3,打开微信扫一扫
4,返回微信扫一扫界面
5.1 扫描商家收款码
5.2 商家生成收款二维码
5.3 返回收款二维码
5.4 识别商家收款码
6,提示用户输入微信支付密码
7.1 输入微信支付密码
7.2 微信验证用户输入密码正确
7.3 向商家汇款

7.4 汇款成功
8,提示用户支付成功

组合片段

组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:

在这里插入图片描述

常用组合片段举例

抉择(Alt)

抉择在任何场合下只发生一个序列。 可以在每个片段中设置一个临界来指示该片段可以运行的条件。else 的临界指示其他任何临界都不为 True 时应运行的片段。如果所有临界都为 False 并且没有 else,则不执行任何片段。Alt片段组合可以理解为if…else if…else条件语句。

我们还拿微信支付的时序图举例,如果7.3向商家汇款的成功或失败流程需要在时序图中体现出来,可以这么使用Alt片段组合。

在这里插入图片描述

选项(Opt)

包含一个可能发生或不发生的序列。Opt相当于if…语句。

在这里插入图片描述

循环(Loop)

片段重复一定次数,可以在临界中指示片段重复的条件。Loop相当于for语句。

在这里插入图片描述

并行(Par)

并行处理,片段中的事件可以并行交错。Par相当于多线程。
在这里插入图片描述

时序图的绘制工具

画时序图的工具有很多,但是个人只用过微软visio工具,感觉很好用,可以满足需要。

时序图的绘制步骤

时序图的绘制步骤可以总结为:

1,划清边界,识别交互语境

所谓划清边界是是指要确定好绘制时序图的范围。在微信支付例子中省略列商家打开微信、输入收款金额等交互消息,这些不是我们需要体现的,我们主要体现的是用户的扫码支付流程。

所谓识别交互语境就是要知道自己绘制时序图的前提和背景。在微信支付的例子中用户登录了微信、开通了支付功能是前提,背景是用户需要扫描付款买东西。

2,梳理时序图中的角色和对象都有哪些

微信支付的例子中角色只有一个,即用户。对象有华为手机:手机、安卓版微信:微信、:商家。

3,对象之间有哪些交互消息

对象之间交互的消息详见以上时序图。

时序图的绘制技巧:

1,从初始消息开始画,依次画出随后消息,并给每个消息分配序号,方便理解。

2,角色和对象用名词,消息用动词。

3,角色放在时序图的开始位置,对象重要程度或使用频率从左到右排列。这就要根据时间的流程考虑了,是一个比较主观的事情。

在这里插入图片描述

4,控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。

  • 正确示范

在这里插入图片描述

  • 错误示范

在这里插入图片描述

练习事例

用户登录系统时序图

在这里插入图片描述

绘制时序图的方法和工具可以根据需求选择适合的方式。以下是几种常见的方法和工具推荐: ### 方法一:使用在线工具 WaveDrom 是一个免费开源的在线数字时序图渲染引擎,它允许用户通过 JavaScript、HTML5 和 SVG 技术将时序图的 WaveJSON 描述转换成 SVG 矢量图形。WaveDrom 编辑器可以在浏览器中运行,也可以安装在系统上,非常适合需要快速绘制和预览时序图的场景。使用 WaveDrom 的链接为 [WaveDrom](https://wavedrom.com/) [^1]。 ### 方法二:使用 PlantUML PlantUML 提供了一种基于文本的绘图方式,用户可以通过编写简单的文本命令来创建复杂的 UML 图表,包括时序图。以下是一个简单的时序图示例: ```plantuml participant Alice participant Bob Alice -> Bob: Hello Bob, how are you? Bob --> Alice: I'm good, thanks! ``` 这段代码可以在 PlantUML 的环境中运行,生成相应的时序图 [^2]。 ### 方法三:使用 StarUML StarUML 是一个功能强大的 UML 工具,支持多种类型的 UML 图表绘制,包括时序图和用例图。StarUML 提供了直观的图形界面,使得用户可以轻松地创建、编辑和保存 UML 图表。对于初学者来说,StarUML 是一个非常好的选择 [^3]。 ### 方法四:使用其他工具 除了上述工具外,还有许多其他工具可以帮助绘制时序图,例如 Microsoft Visio、Lucidchart 等。这些工具通常提供丰富的模板和拖放功能,适合需要高级功能和协作的团队使用。 ### 示例代码 #### WaveDrom 示例 WaveDrom 使用 JSON 格式来描述时序图,以下是一个简单的 WaveDrom 代码示例: ```json { "signal": [ { "name": "CLK", "wave": "p....." }, { "name": "DATA", "wave": "x.3.4x", "data": ["A", "B", "C", "D"] }, { "name": "X", "wave": "0.1.0." } ] } ``` 将上述代码粘贴到 WaveDrom 编辑器中,即可生成对应的时序图 [^4]。 #### PlantUML 示例 以下是另一个 PlantUML 时序图的示例代码: ```plantuml participant "User" as U participant "System" as S U -> S: Request S --> U: Response ``` ### 相关问题 1. 如何使用 WaveDrom 创建复杂的时序图? 2. PlantUML 支持哪些类型的 UML 图表? 3. StarUML 有哪些高级功能? 4. 如何在 Microsoft Visio 中绘制时序图? 5. 有哪些免费的在线时序图绘制工具? 希望以上信息能帮助您更好地理解和绘制时序图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值