这节课我们讲的顺序图是大家看各个公共技术平台的技术文档、SDK使用指南时见过最多的UML图,这里给大家找了一个微信支付SDK文档里的图,大家一看就能知道我说的是什么。上面这个图表达的是微信支付下单这个操作中:用户、微信客户端、商户后台服务、微信支付服务是怎么协作完成下单支付这个步骤的。
怎么样,大家是不是在接入腾讯、阿里、字节这些大厂公共开发平台提供的能力时,在他们的SDK技术文档里都见过这种图,我这节课的内容就是教大家怎么读懂顺序图以及怎么在实际应用中画出顺序图。
在开始教大家这些东西前,先给大家来个小插曲。不少人把这种图叫做时序图,其实他的正确说法应该叫顺序图-- Sequence Diagram,UML里还真有一个种图叫时序图--Timing Diagram,不过由于UML正牌的时序图几乎没人用,所以大家不用太纠结这个名字,咱们在工作中讨论技术方案时有人说画时序图大概率想说的就是咱们今天要学的顺序图。
认识顺序图
比如你去一家餐馆吃饭,从进门落座到点单、上菜、吃饭以及最后的结账,我们都是跟服务员交互的,用顺序图表达你在餐馆吃饭跟服务员的交互流程如下:
但其实谁都会知道,我们去餐馆吃饭除了跟服务员点菜,还需要服务员给餐馆后厨派单,厨师做完菜后再把菜给服务员,服务员再给你上菜,你吃完后买单结账也是把钱先给到服务员,服务员把钱给到收银员,收银员结帐开发票再由服务员把发票给你整个流程就结束了。
看,我们通过这一波分析又发掘出来去餐馆吃饭除了服务员,还有厨师和收银员参与整个流程,整个流程用顺序图表达如下:
上面那一大段分析餐馆就餐流程的文字用这个顺序图就能直观表达出来,这在做需求分析和技术评审给别人解释整个流程时可比上面那一大段文字更直观,也更容易让协作的人理解。
我们使用UML图的一大目的就是在团队中建立统一、高效的需求分析和技术方案的表达和沟通方式。 无论是什么职能团队的成员都能一看即懂,即使不懂技术也能呢理解起来也不难,比写一大堆文字顺带夹杂着代码片段的文档要好理解的多。
这个例子是把顺序图用在了需求分析中,用在技术方案详细设计中也能发挥出其发掘接口内部实现流程和逻辑的功效,下面例子中我们会有这方面的演示。
使用顺序图的最佳时机
之前两节课介绍的活动图和状态机图,活动图是流程分析的万能工具,状态机图是直观展示业务实体在业务流程中状态流转的利器,而今天要学的顺序图则特别适合用来发掘流程中隐藏的内部流程,而且是更适合聚焦于表达大流程中的某个步骤中的详细流程,UML并没有给顺序图做这个限定,我是从这几年用UML做需求分析和技术方案的经验中总结出来的。
因为顺序图的语法中更强调角色间的交互时相互之间提交和返回的消息,所以顺序图还特别适合表示API接口的内部逻辑实现,比如前端调用了下单接口,但下单接口内部实现下单时会查询库存、查询优惠信息、计算金额等这些在单体服务里可能是分别对应不同的模块,而在微服务里就是对应多个服务的调用,这些内部逻辑对前端都是不可见的,所以顺序图特别适合用来发掘和表达内部流程是怎么实现的。
接下来就带大家一起详细地学习顺序图,我会用一些例子结合一些常用的代码逻辑结构给大家进行讲解。
在继续本节的内容前再提醒一下苹果手机的用户,因为苹果税的存在本专栏在微信直接订阅价格会高于安卓用户,所以专栏在小报童同步更新,苹果手机用户可以通过扫描二维码在小报童订阅阅读,规避额外开销。