时序图,也称为序列图、循序图、顺序图,是一种UML交互图。是用来描述对象之间传送消息的时间顺序,是用来表示用例中的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
一、时序图绘制目的
1、时序图显示不同的业务对象如何交互,对于交流当前业务如何进行很有用。
2、时序图是对对象之间传送消息的时间顺序的可视化表示,更强调交互的时间顺序。
3、序列图的主要用途是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。同时序列图更有效地描述如何分配各个类的职责以及各类具有相应职责的原因。
二、时序图的组成元素
时序图中包括如下元素:角色,对象,生命线,激活,消息和组合片段。
1、角色:可以是人、机器、其他系统、子系统。用小人表示。
2、对象:表示系统的参与者或者任何有效的系统对象。用矩形表示。
(1)对象一般有三种命名方式,三种命名方式均可,哪种最容易让阅读该时序图的人理解,就选择哪种:
包含对象名和类名,用“对象:类”表示。例如:华为手机:手机。
只显示类名不显示对象名,即为匿名对象,用“:类”表示。例如::手机。
只显示对象名不显示类名,用“对象:”表示。例如:华为手机:。
(2)对象的排列顺序并不重要,但是为了作图清晰整洁,通常应遵循以下两个原则:
把交互频繁的对象尽可能的靠拢。
把初始化整个交互活动的对象放置在最左端。
3、生命线:代表时序图中的对象在一段时期内的存在。用一条垂直的虚线表示。
4、激活:表示时间段的符号,在这个时间段内对象将执行相应的操作。用一个窄长的矩形来表示,矩形的高度表示执行操作的活动期。
5、消息:是用来表示一个对象向其他一个或者多个对象发送信号,或者由一个对象调用另外一个对象的操作。
消息分类:
同步消息:消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。以一条实线+实心箭头表示。
异步消息:消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。以一条实线+大于号表示。
返回消息:返回消息表示从过程调用返回。以小于号+虚线表示。
自关联消息:表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心剪头表示。
6、组合片段
组合片段用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
常用组合片段举例:
抉择(Alt):抉择在任何场合下只发生一个序列。相当于if..else 条件语句。
选项(Opt):选项包含一个可能发生或不发生的序列。相当于if..语句。
循环(Loop);循环是片段重复一定次数,可以在临界中指示片段重复的条件。相当于for语句。
并行(Par):指并行处理,片段中的事件可以并行交错。相当于多线程。
三、时序图绘制步骤
1、划清边界,识别交互的语境。
划清边界,就是要确定好时序图的范围。识别交互的语境,就是读懂所要画的时序图的前提和背景。
2、梳理角色和对象。
角色划分是一个比较主观的事情,同一属性的也可合并处理。
角色以及对象都为名词,不可使用动词。
3、添加消息和组合片段。
从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明每个消息的特性(如参数等)。
控制焦点两端要以消息元素封顶,控制焦点不要超过消息元素。见下图。
阅读原文
对产品经理感兴趣的朋友,可以移步“行业与市场分析”,期待共同交流。