做编程时序图的收获体会
一、解读时序图
时序图,也叫序列图、顺序图,是UML中常用的动态视图,用于描述多个对象参与实现业务目标时,彼此之间按时间顺序进行交互的过程。
时序图,用来表达对象或角之间交互的信息传递和时间顺序,特别方便。
每次梳理流程,跟开发沟通,我都会借助它来描述。
绘制时序图,将一个个对象和其交互动作列出来,可以直观反映出,每个对象对其他对象或其自身做的交互动作,让我们看到业务内部的运作、系统之间的互动,从而搞清楚业务规则、系统逻辑。
在《火球:UML大战需求分析》一书中,作者总结特别好:“任何复杂的交互,都可以分解为自己与自己、自己与别人、别人与别人的多个简单交互”。
时序图正体现了这种逻辑,所以,它表达交互逻辑时,非常清晰简单。
作为产品经理,如果我们能掌握这一利器,用来分析业务、定义需求,与开发沟通,定能大大提高效率。
时序图常见的应用场景,是在支付领域。例如,支付的开发者文档,就用时序图来表达支付的实现逻辑。
这么好的工具,赶紧学一下吧。
二、时序图的构成
时序图的常用元素很简单,分别有:对象(角)、生命线、会话、消息(简单消息、返回消息)。
时序图的常用元素
1.对象
对象,指与业务、产品或系统相关的人、事、物,可以是人、部门、系统等。
通常用矩形表示,画在时序图的顶部,对象名写在矩形内。
其中,参与交互过程的人,如用例图的参与者、参与完成业务目标的相关人员,通常称之为角。
网上有的会把对象和角分开来,我理解这些都是对象。只不过,在图形上,角与用例图的参与者一样,用火柴人表示,比较好理解。
因为,UML是在面向对象思想的指导下,来描述软件产品的分析与设计。面向对象,则将现实世界的人事物,看成一个个独立的个体,称之为「对象」。
它们又可以根据不同的需要,以不同的角度,被归纳在一起,这就是开发人员常说的「类」。
比如,西瓜、苹果、梨是不同的对象,它们可以归为一类——水果;苹果手机、华为手机、小米手机,可以归为手机。
对象的命名,一般格式为:对象名:类名,如「李四:客户」。
按照语法,冒号和类名是必需的,对象名是可选的。具体地说,「李四:客户」表示李四是客户的实例,即具体到某个客户的名字。
实践中,并不需要具体到实例,对象名可以不写。我的做法是,直接写一类对象的名称,如某某系统、某某部门。
2.生命线
每个对象下有一条垂直的虚线,这就是对象的生命线,从上往下,代表时间的先后顺序。
3.会话
会话,也叫激活框,它代表在对象生命线上某个阶段执行的操作,以一个偏窄的矩形表示。手机上哪个学编程的软件好
每一次会话,表示一次相对完整的交互过程。不过,怎样算一次会话,实践中有点难区分,需要多练习体会。
我常按照操作的完整度来画,有时甚至不画,有些专业的UML工具还能自动生成会话。
4.消息
消息,表示对象之间发送的信息或做的事情。消息,有的分为三种:同步消息、异步消息、返回消息。
从产品层面,并不需要规定技术的实现方式,是同步还是异步,这交给开发人员设计,会更为合理。
因此,我基本只用两种消息来表达:简单消息、返回消息。
1)简单消息
简单消息,用箭头实线,表示一个对象,向另一个对象发的信息,或做的事情。它不强调消息的类型,只表示交互,足以满足大部分情况。
2)返回消息
返回消息,用箭头虚线,表示一个对象,收到另一个对象的信息后,再向其返回的信息,或做的事情。
消息线上方的文字,则是注明传递的消息或执行的动作,一般用动宾短语。
这些对象间的交互消息,画在两个对象的生命线之间。对象自身做的事情,则画在自己的生命线上。
5.组合框
实现业务、系统流程中,总会有特殊情况,不可能完全按时间顺序、一条线走完。
这时,就需要用到组合框(frame)来表示常见的特殊情况,如分支、循环、并行等。
遇到这些特殊情况时,就可以把相应的交互流程放入这个框中。
时序图三种常用的特殊结构
三、时序图的画法
下面,还是以之前的「手机话费充值APP」为例(案例详见《用例图这样画,3步让你做需求分析有理有据》),来了解时序图如何用。