如何绘制时序图?
之前在做业务的时候,经常会接触到产品和技术同学画的时序图,但是当时一直以流程图为主要沟通手段,也没有认识到时序图背后可以解决的问题,所以也没有专门去做深入的了解。
但是逐渐发现,部分产品功能在沟通的时候,用业务语言不能很好的与产品技术同学产生有效的沟通,特别是一些与其他业务衔接(角色间的交互)的逻辑上,如果单纯以业务语言描述,无法准确表达我想要最终实现的功能。
这时候我发现,单纯依赖流程图可能还是不够的,流程图表达的主要是业务的角色逻辑,即:谁做了什么事。还需要通过时序图的顺序逻辑来表达角色之间交互的消息和顺序,侧重表达角色之间做了什么事。
作为一个运营,如果能同时掌握流程图和时序图,除了能很好的锻炼自己的业务逻辑能力,还能提升与产技的沟通效率,提升产品交付质量。
时序图是什么?
时序图是一种UML行为图。包括角色、对象、生命线、激活期以及消息等内容。时序图的横轴表示对象,纵轴表示时间,它可以帮助展示对象之间的交互顺序,直观的描述并发进程。
时序图基本概念:
- 角色:系统角色,可以是人、机器、系统等,在我的实际使用场景中,一般定义为初始用户。
- 对象:这里的对象与角色,我理解在定义上可能有所重复,在我实际的使用场景中,一般为系统角色(有可能在部分纯业务逻辑中,有可能是不同的人员角色)。
- 生命线:简单理解就是从上往下的时间线。
- 会话:他代表对象在生命线上某个阶段的执行动作。
- 消息:表示对象之间发送的消息,一般分为三种,用不同的箭头表示:同步消息,异步消息,返回消息。
组合片段:实际业务场景中,角色与角色之间的任务不可能是绝对有序的,这时候就需要用组合片段来解决里面的一些问题,我实际工作中常用到的有这几种,之前在搜索的时候,很喜欢几个示意图,清晰易懂,也放在这里(由于时间久远,网上有多个该图源的出处,目前按时间线最早的应该是:那只猫的鱼https://www.woshipm.com/ucd/607593.html)
从一个基础业务来认识时序图:
上面了解了基础的定义,我们通过一个简单的业务模型来真正认识一下时序图。(图源作者:AI产品经理四月
https://www.woshipm.com/pd/5116059.html)
上述是一个正常的手机充值的业务,如果从用户打开APP到最终充值成功,我们按照时间和业务顺序,可以把用户和系统的交互动作分为以下几步:
[用户]-->[打开APP]
[用户]-->[输入手机号码]
[系统]-->[校验手机号码格式]
[运营商]-->[校验手机号码归属地]
[运营商]-->[返回套餐信息]
[系统]-->[校验加工套餐信息,返回套餐信息]
[用户]-->[提交订单]
[系统]-->[调用支付接口]
[用户]-->[输入支付密码]
[系统]-->[校验支付密码]
[系统]-->[返回支付结果]
[运营商]-->[返回充值结果]
我这里的表述部分是基于我的理解,源图略有差异,不过核心逻辑没有特别大的变化,在理解上没有特别大的问题。
这里补充一下上面没有讲到的一个特殊的处理逻辑,即对象自闭环的处理逻辑,即如图:
做时序图的时候,基于我实际工作以及我的理解,一般需要注意以下几点:
- 确认整个逻辑中参与交互的对象。有对象才有消息传递与交互。
- 确认整个消息传递的顺序,并且同步确认各个消息是否是同步、异步或者需要增加组合片段来满足交互逻辑。
- 建议给交互消息增加序号,提升阅读体验。
- 触发交互的对象在左,返回消息的对象在右。频繁交互的对象尽可能离得近一点。
- 复杂的逻辑无需在时序图中全部表达,绘制核心链路(系统内、间复杂逻辑交给产技,我们主要是画出业务交互)。
- 建议是时序图与逻辑图同时都画一下,可以从不同的视角梳理和理解业务。
我一般用什么工具来画时序图:
对于时序图有了基础的理解之后,就需要不断地刻意练习。我之前比较偏好用ProcessOn来作图(不过非会员有文件限制),后来直接用WPS内置的作图工具了(本身是会员,所以没有文件限制)。也有不少小伙伴用visio的,大家都可以尝试使用,看哪个比较适合自己。
工具不重要,重要的是,任何一个伟大的开始,都是基于第一次尝试。