如何绘制时序图?

发布时间:
2025-01-05 15:35
阅读量:
3

之前在做业务的时候,经常会接触到产品和技术同学画的时序图,但是当时一直以流程图为主要沟通手段,也没有认识到时序图背后可以解决的问题,所以也没有专门去做深入的了解。

但是逐渐发现,部分产品功能在沟通的时候,用业务语言不能很好的与产品技术同学产生有效的沟通,特别是一些与其他业务衔接(角色间的交互)的逻辑上,如果单纯以业务语言描述,无法准确表达我想要最终实现的功能。

这时候我发现,单纯依赖流程图可能还是不够的,流程图表达的主要是业务的角色逻辑,即:谁做了什么事。还需要通过时序图的顺序逻辑来表达角色之间交互的消息和顺序,侧重表达角色之间做了什么事。

作为一个运营,如果能同时掌握流程图和时序图,除了能很好的锻炼自己的业务逻辑能力,还能提升与产技的沟通效率,提升产品交付质量。

时序图是什么?

时序图是一种UML行为图。包括角色、对象、生命线、激活期以及消息等内容。时序图的横轴表示对象,纵轴表示时间,它可以帮助展示对象之间的交互顺序,直观的描述并发进程。

时序图基本概念:

  • 角色:系统角色,可以是人、机器、系统等,在我的实际使用场景中,一般定义为初始用户。
  • 对象:这里的对象与角色,我理解在定义上可能有所重复,在我实际的使用场景中,一般为系统角色(有可能在部分纯业务逻辑中,有可能是不同的人员角色)。
  • 生命线:简单理解就是从上往下的时间线。
  • 会话:他代表对象在生命线上某个阶段的执行动作。
  • 消息:表示对象之间发送的消息,一般分为三种,用不同的箭头表示:同步消息,异步消息,返回消息。

组合片段:实际业务场景中,角色与角色之间的任务不可能是绝对有序的,这时候就需要用组合片段来解决里面的一些问题,我实际工作中常用到的有这几种,之前在搜索的时候,很喜欢几个示意图,清晰易懂,也放在这里(由于时间久远,网上有多个该图源的出处,目前按时间线最早的应该是:那只猫的鱼woshipm.com/ucd/607593.


Opt:选项。即该序列可能发生,可能不发生。

Alt:选择。两个及以上的序列存在,当满足其中一个条件,则运行其中一个序列,可以理解为if…else…

Loop:循环。某一序列在某一条件下持续循环。

Par:并行。多个序列同时进行。

从一个基础业务来认识时序图:

上面了解了基础的定义,我们通过一个简单的业务模型来真正认识一下时序图。(图源作者:AI产品经理四月
woshipm.com/pd/5116059.

△前端交互界面

△逻辑图

△时序图

上述是一个正常的手机充值的业务,如果从用户打开APP到最终充值成功,我们按照时间和业务顺序,可以把用户和系统的交互动作分为以下几步:

[用户]-->[打开APP] [用户]-->[输入手机号码] [系统]-->[校验手机号码格式] [运营商]-->[校验手机号码归属地] [运营商]-->[返回套餐信息] [系统]-->[校验加工套餐信息,返回套餐信息] [用户]-->[提交订单] [系统]-->[调用支付接口] [用户]-->[输入支付密码] [系统]-->[校验支付密码] [系统]-->[返回支付结果] [运营商]-->[返回充值结果]

我这里的表述部分是基于我的理解,源图略有差异,不过核心逻辑没有特别大的变化,在理解上没有特别大的问题。

这里补充一下上面没有讲到的一个特殊的处理逻辑,即对象自闭环的处理逻辑,即如图:

做时序图的时候,基于我实际工作以及我的理解,一般需要注意以下几点:

  • 确认整个逻辑中参与交互的对象。有对象才有消息传递与交互。
  • 确认整个消息传递的顺序,并且同步确认各个消息是否是同步、异步或者需要增加组合片段来满足交互逻辑。
  • 建议给交互消息增加序号,提升阅读体验。
  • 触发交互的对象在左,返回消息的对象在右。频繁交互的对象尽可能离得近一点。
  • 复杂的逻辑无需在时序图中全部表达,绘制核心链路(系统内、间复杂逻辑交给产技,我们主要是画出业务交互)。
  • 建议是时序图与逻辑图同时都画一下,可以从不同的视角梳理和理解业务。

我一般用什么工具来画时序图:

对于时序图有了基础的理解之后,就需要不断地刻意练习。我之前比较偏好用ProcessOn来作图(不过非会员有文件限制),后来直接用WPS内置的作图工具了(本身是会员,所以没有文件限制)。也有不少小伙伴用visio的,大家都可以尝试使用,看哪个比较适合自己。

工具不重要,重要的是,任何一个伟大的开始,都是基于第一次尝试。

END