UML时序图详解(手把手教你画时序图)–mikechen

每次梳理流程,跟开发沟通,我都会借助它来描述。

绘制时序图,将一个个对象和其交互动作列出来,可以直观反映出,每个对象对其他对象、或其自身做的交互动作。

让我们看到业务内部的运作、系统之间的互动,从而搞清楚业务规则、系统逻辑。

如下图所示:

客户用ATM取款的时序图

这么好的工具,赶紧学一下吧。

时序图的常用元素很简单,分别有:对象(角色)、生命线、会话、消息(简单消息、返回消息)。

时序图的常用元素

通常用矩形表示,画在时序图的顶部,对象名写在矩形内。

网上有的会把对象和角色分开来,我理解这些都是对象。只不过,在图形上,角色与用例图的参与者一样,用火柴人表示,比较好理解。

因为,UML是在面向对象思想的指导下,来描述软件产品的分析与设计。面向对象,则将现实世界的人事物,看成一个个独立的个体,称之为「对象」。

它们又可以根据不同的需要,以不同的角度,被归纳在一起,这就是开发人员常说的「类」。

比如,西瓜、苹果、梨是不同的对象,它们可以归为一类——水果;苹果手机、华为手机、小米手机,可以归为手机。

对象的命名,一般格式为:对象名:类名,如「李四:客户」。

按照语法,冒号和类名是必需的,对象名是可选的。具体地说,「李四:客户」表示李四是客户的实例,即具体到某个客户的名字。

实践中,并不需要具体到实例,对象名可以不写。我的做法是,直接写一类对象的名称,如某某系统、某某部门。

会话,也叫激活框,它代表在对象生命线上某个阶段执行的操作,以一个偏窄的矩形表示。

每一次会话,表示一次相对完整的交互过程。不过,怎样算一次会话,实践中有点难区分,需要多练习体会。

我常按照操作的完整度来画,有时甚至不画,有些专业的UML工具还能自动生成会话。

消息,表示对象之间发送的信息或做的事情。消息,有的分为三种:同步消息、异步消息、返回消息。

从产品层面,并不需要规定技术的实现方式,是同步还是异步,这交给开发人员设计,会更为合理。

因此,我基本只用两种消息来表达:简单消息、返回消息。

1)简单消息

简单消息,用箭头实线,表示一个对象,向另一个对象发的信息,或做的事情。它不强调消息的类型,只表示交互,足以满足大部分情况。

2)返回消息

返回消息,用箭头虚线,表示一个对象,收到另一个对象的信息后,再向其返回的信息,或做的事情。

消息线上方的文字,则是注明传递的消息或执行的动作,一般用动宾短语。

这些对象间的交互消息,画在两个对象的生命线之间。对象自身做的事情,则画在自己的生命线上。

这时,就需要用到组合框(frame)来表示常见的特殊情况,如分支、循环、并行等。

遇到这些特殊情况时,就可以把相应的交互流程放入这个框中。

时序图三种常用的特殊结构

下面,还是以之前的「手机话费充值APP」为例(案例详见《用例图这样画,3步让你做需求分析有理有据》),来了解时序图如何用。

常用的画图工具,有Visio、ProcessOn,现在很多在线文档也支持UML,如腾讯文档、飞书云文档。

时序图的画法也很简单,一句话就能说完,可是要灵活掌握,还得多加练习。

再简单点,就是定目标、找对象、列消息三步走。

画时序图,与活动图一样,要指定某个用例,或目标展开。这些动态视图,是用来描述在静态视图(如用例图)定义的结构下对象的行为。

本质上,它们都是在描述谁如何参与完成业务目标。

明确了用例或目标,才能保证绘制的流程,边界清晰,过程完整,不会越画越乱。

比如,我们用时序图来分析案例中「充值话费」用例的实现过程。这时,就别把「支付金额」用例的交互也画进去,把它们画在一起,会增加阅读难度,不利于沟通表达。

案例中「充值APP」的系统用例图

因此,先将它们列出来,每一竖列,表示一个对象或角色,每个对象有一条生命线。

为方便阅读,可将流程中最先发起消息的对象放在最左边;再将交互多的对象摆在附近,别隔太多对象,这样画出来的图会更清晰简洁。

找到了对象,就可以列出对象间的交互消息。为了方便你回顾「充值话费」用例的实现过程,咱们先上之前已经得出的活动图。

充值APP「充值话费」用例活动图

工作中,我们把流程弄明白后,就可以边理边画,将对象间的交互,从最先发起的消息,一个个从上往下依次列出。

充值APP「充值话费」用例对象交互时序图

在UML中,时序图的消息是没有序号的。使用中,我发现为每个消息加上序号,比较方便描述与阅读,一直习惯这么用。

「充值话费」用例的流程中,刚好有一个并行流程,即上图的第16至20步。

管理后台在返回支付结果时,还需同步向手机运营商发起充值请求,这是常见的并行流程。

因此,将其画在组合框中,表示这里面上下两部分交互是同时进行的,不分先后。

从这里不难看出,分支一多,时序图会比较难画,也不好理解。

确实,时序图不太适合表达多分支的复杂流程。因此,我们用时序图更多是描述主干流程,复杂的分支可单独抽取出来画,也可以用文字说明。

看到上面的泳道活动图和时序图,你可能会想,它们俩还挺像的,工作中究竟用哪个呢?

它们都用于描述不同对象之间的动作。不过,泳道活动图,更侧重于表达谁做了什么事;而时序图,除了强调流程中交互的消息和顺序,还表达谁对谁做了什么事。

还可以多尝试两种都画,通过不同视角来观察同一个流程,会让我们的理解更加全面、深刻。

实践中,时序图,常用于表达系统的接口请求与反馈消息,更偏向技术实现。

作为产品经理,我们可以从产品视角、操作层面,用它来表达业务流程、产品流程。

这样,开发人员也很好理解,便于他们进行系统设计。

信息量还是不少,我给你总结下。

用好时序图,能帮我们,搞清楚业务规则、系统逻辑,提高工作效率。

THE END
1.uml顺序图是什么?怎么画uml顺序图顺序图也叫时序图、序列图,指用uml符号绘制的图示,是一种uml交互图,表示用例中对象的行为顺序,用于描述参与者对象之间如何以一系列顺序的动作关系进行交互的,强调消息在对象之间发送和接收情况.https://www.liuchengtu.com/tutorial/umlshunxutu.html
2.用代码画时序图!YYDS用代码画时序图!YYDS 简介:最近通过代码来看看这个图,给大家看图、UML ,感觉很给大家分享。大家平时用他们出的图呢,是用什么样的图,都用画图来画的,我们用画图来画图 呢draw.io?processOn今天给大家介绍一款想要的作品,用的画图,配合IDE使用PlantUML!https://developer.aliyun.com/article/1009111
3.时序图该怎么画?流程图模板er图怎么画,实体关系图,实体属性图 知了早画2015.5.28 知了5.14画 知了5.2画 补画CAD线业务流程图 该密码 12.时序图 知了早画:2015.5.29 知了早画:2015.5.22 时序图技能 时序图 UML 教程 作者其他创作 大纲/内容 同步消息 :userDao 2:ifSameName(String name) 对象 :userAction 异步消息 系...https://www.processon.com/view/6103b09c1efad46a20b0c800
4.Markdown高级技巧typora画流程图时序图(顺序图)甘特图...复制以下代码使用 typora 的源码模式粘贴到编辑器中查看效果: 1、横向流程图源码格式: ```mermaid graph LR A[方形] -->B(圆角) B -...https://www.jianshu.com/p/fbbcfee66535
5.分析下面的顺序图,并指出哪种说法是正确的()B.应收账款 C.未分配利润 D.存货 点击查看答案进入小程序搜题 开合螺母与燕尾导轨配合的松紧程度,主要是由楔铁来调整的。( ) 点击查看答案进入小程序搜题 在UML的顺序图中,如果同步消息有返回消息,必须明确的表示出来,而异步消息的返回消息可以不画。() A.正确B.错误 点击查看答案进入小程序搜题赞...https://m.ppkao.com/wangke/daan/58a37c16561644a5a858c95a4d678e25
1....画出一个顺序图!最全解释(期末速成)顺序图怎么画所以,画顺序图实际上就是套模板,你可以看到之后所有例题,基本都能对应我这套模板。 先整个界面,界面上操作无外乎打开界面、查看信息,填写信息,单击确认,直接抄上去。 再来个控制类,一般命名就是什么什么处理、什么什么控制,这个什么什么其实就是你系统要完成的操作,比如说借书系统就是借书处理,选课系统就是选课处理...https://blog.csdn.net/Q1743822183/article/details/139827357
2.plantuml画图实现代码画时序图UML用例图java时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。 如何用PlantUML画时序图呢? https://www.jb51.net/article/255936.htm
3.B端产品经理需要掌握的UML图用例图 UML建模语言的初步认识 想必大家在日常的工作中经常会画业务流程图吧,但是不知道大家有没有这种疑惑,为什么网上的画法规范都不一样呐?当你看到同事的画法和自己不一样时,是不是会突然怀疑是不是自己画的有问题,身为非科班出来的产品经理,经常会有这样的疑惑。于是网上搜了好多,发现网上的更是五花八门!因...https://www.10100.com/article/48697
4.创建UML序列图UML 序列图显示一组对象如何在一段时间内在进程中进行交互。 它显示了在系统中的参与者和对象之间传递的消息,以及它们发生的顺序。 若要生成序列图,请使用UML 序列模板或初学者关系图,其中包括UML 序列模具。 将形状从模具拖到绘图画布上以生成关系图。 https://support.office.com/zh-tw/article/6feaf97d-26ff-4a0e-80e2-327958850a6f
5.UML怎么Javauml怎么画顺序图mob6454cc7c268c的技术博客UML怎么Java uml怎么画顺序图 一:定义 UML顺序图所表达的正是这种基于时间的动态交互。 顺序图用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的事件。 顺序图展示对象之间的交互,这些交互是指在场景或用例的事件流中发生的。 顺序图属于动态建模。https://blog.51cto.com/u_16099353/6906585
6.电子商务系统分析与设计第3章统一建模语言UML在线免费阅读通常,状态图可看作是对类图的补充,在实际应用中并不需要为所有的类画状态图,而只需为那些有多个状态、其行为受外界环境的影响并且发生改变的类画状态图。 ·活动图描述满足用例要求所要进行的活动以及活动间的约束关系,有利于识别并行活动。 4.交互图 交互图描述对象间的交互关系,包括顺序图和协作图。 ·顺序图...https://fanqienovel.com/reader/7106346964106611727
7.过程为话题的记叙文14篇(全文)(1) 若干基本建模组件, 如参与者 (Actor) 、用例 (Use Case) 、类 (Class) 等, 是构成模型最基本的单位, 不可再分; (2) 9个图, 如用例图、类图、顺序图等, 由基本组件构成; (3) 5个视图, 如用例视图、设计视图等, 由若干图构成, 它描述的是系统的架构, 展现的是每个人在不同的时间以不同的方...https://www.99xueshu.com/w/filew4d2a25x.html