UML时序图(序列图)

article/2025/9/1 14:12:49

什么是时序图

时序图(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,控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。

正确示范
在这里插入图片描述
错误示范
在这里插入图片描述
最后的技巧就是多联系绘制时序图,熟能生巧,自然而然就会画了。

练习事例

用户登录系统时序图
在这里插入图片描述

推荐使用软件

在这里插入图片描述
在这里插入图片描述

参考资料

https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E5%9B%BE/3659178?fr=aladdin

http://baijiahao.baidu.com/s?id=1561926824533534&wfr=spider&for=pc

本文转载至:https://blog.csdn.net/fly_zxy/article/details/80911942?utm_source=copy


http://chatgpt.dhexx.cn/article/dluwdqsy.shtml

相关文章

架构设计必备:时序图说明及画法

用途 时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息…

使用EA工具画(时序图)

选择放置序列图的位置 放置序列图的位置跟一般的图形不大一样,并不是放置在特定的"包(package)"中。通常,序列图的表达对象如何合作,进而来完成某一个用例的任务的,因此,序列图似乎要放在用例当中才合理。 …

时序图和流程图的区别

时序图是交互图的一种。 时序图和交互图都描述了软件的动态特征,是软件处理业务逻辑能力的体现。 流程图面向业务逻辑,不涉及软件内部的组件和结构,不涉及业务逻辑处理的参与者,只考虑业务处理的步骤及流程。 时序图&#xff0…

【资料】如何看懂时序图?

我们都知道在学校是通过铃声来控制所有班级的上下课时间,那个单片机是通过什么样的办法进行取指令,执行指令和其它操作的呢?在这里引入了一个时序的概念: 一、时钟电路 单片机时钟电路有三种方式: 1、单片机内部有一个…

[UML工具]分享一个WEB在线画时序图的工具

(1)在线时序图工具websequencediagrams,效果图如下,支持多种样式,如手绘效果等。 地址:http://www.websequencediagrams.com/ (2) StarUml 添加时序等图(开源免费&#…

《软件工具》分享2款好用的时序图工具

在分享工具之前,需要说明下什么是时序图,时序图是指MCU等执行指令时发出的控制信号的时间序列。这些控制信号在时间上的相互关系就是时序图,也就是时序图是一系列具有时间顺序的脉冲信号图。 值得注意的是,网上很多资料都将UML序…

什么是时序图

什么是时序图 时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。 让我们来看一看visio2016对时序图的的解释。 时序图的元素 我们在画时序图时会涉及7种元素&#xff1a…

软件推荐:画时序图的小工具Timegen

很多芯片手册里面都有介绍操作的时序,画个时序图之类的虽然东西不是很多,但是如果没有合适的软件还真是挺麻烦,今天推荐一个只有几兆大小的小软件TimeGen,操作也很简单,我用的是3.1的版本,需要的童鞋自己百…

【超好用】时序图画图工具TimeGen 3.2安装和使用教程

环 境:windows 10 64位 文章目录 一、安装(1)安装timegen-pro-3.2文件(2)替换TimeGen3.exe文件二、使用教程(1)tg_draw操作(2)tg_setup操作(3)tg_…

常用的画流程图/时序图工具简介

流程图部分。 一、Graphviz 先下载并安装Graphviz。 然后在sublime下安装插件。 这样,就支持Graphviz的dot语言语法了。 在subime下,添加一个dot语言的编译系统dotCompile.sublime-build { "cmd": ["D:\\Graphviz2.38\\bin\\d…

时序图在线工具

在线工具:在线时序图 PS 开源的各类流程图 https://app.diagrams.net/

分享一款绘制时序图的实用小工具

转自 | 果果小师弟 今天分享一款实用小工具:WaveDrom,它是一个免费开源的在线数字时序图渲染引擎。它可以使用JavaScript, HTML5和SVG来将时序图的WaveJSON描述转成SVG矢量图形,从而进行显示。WaveDrom可以嵌入到任何网页中。WaveDrom编辑器可…

快速学习时序图:时序图简介、画法及实例

一、 什么是时序图? 时序图(Sequence Diagram),亦称为序列图、循序图或顺序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。 时序图是一个二维图,横轴表示对象&a…

PlantUML:一款让你爽到起飞的高效代码绘制时序图工具

背景 对于工作中遇到一些复杂的业务逻辑场景,需要借助图形工具去准确的表达,会更高效的理解和梳理复杂的逻辑,同时在跟领导和同事汇报时也更能清晰、准确、快速的表达想法以及方案。比如梳理源码常用的时序图以及流程图等,之前在…

java时序图工具_开发必备的小工具,你用过几个?

今天就简单介绍一下平时用到的一些小工具.首先我平时是用IDEA开发的,所以下面的介绍都是和IDEA相关的.本文主要介绍我平时在哪些场景使用,使用了哪些功能,至于IDEA怎么安装插件和插件有哪些额外的功能,这些你把插件名字对着搜索引擎一搜就很多了. 1.SequenceDiagram 这个工具是…

信号波形时序图常用工具推荐

Refer: 下载:画时序图的四大神器_可编程器件-面包板社区 (eet-china.com) 软件工程师,习惯使用StarUML画Timing Diagram, 硬件工程师建议使用一下软件。 1、AndyTiming 免费的,这个有一个知乎的博文可以参考 https://zhuanlan.zhihu.com/p…

Java 静态代码块详解

文章目录 一、普通初始化块:二、静态代码块:三、多种代码块间的执行顺序 首先得知道什么是初始化块:就是类中得一段用大括号 {} 括起来得独立的代码空间。 而初始化块分成了 普通初始化块和 静态的初始化块(也称为 静态代码块&…

java 代码块:静态代码块和非静态代码块

main方法是程序的入口,加入没有main方法程序无法启动,但是main方法不是第一个执行的。 我认为:在这个类加载时,编译器会找到main方法,从这里开始运行,但是当你把这个类加载的时候,静态代码块就…

java中代码块之静态代码块和非静态代码块

一、代码块: 语法:使用{}包裹的,可以在{}中写代码。 修饰符:static 或者不修饰。 static修饰的为静态代码代码块。 格式: //静态代码块,随着类的加载児执行static{System.out.println("这是静态代码块…

Java~~静态代码块

1. 可以使用static关键字来定义“静态代码块”: (1)语法格式: static{ java语句; } (2)静态代码块在类加载时执行,并且只执行一次。 (3)静态代码块在一个类…