时序图只是一种叫法,平常我们所说的顺序图、序列图也没有错。
时序图是基于交互的对象行为建模,是 UML 用于描述对象之间信息的交互过程的方法,是描述对象间协作关系的模型。
时序图用于捕获系统运行中对象之间有时间顺序的交互,是由生命线和消息组成。
时序图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。
这个角色可以是用户、外部系统、机器等等。
在 visio 软件中用下图表示:
关于对象的命名:
生命线:在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。
在生命线的虚线上可以用活动条来表示某种行为的开始和结束,一般用小矩形来表示。
在 visio 软件上称之为激活。
注:但是在这里我需要强调的是在生命线上并非一定要用活动条来表示执行的发生,活动条的加入是的执行发生更形象化,但是在繁多复杂的时序图中,活动条也会使图示变得更加复杂难以绘制,这种情况下,倾向于不使用活动条。
什么是消息?
在面向对象的分析和设计中,对象的行为也被称为消息,因为对象之间的行为的交互擢用也可以看成是对象之间发送消息实现的。通常,当一个对象调用另一个对象中的行为时,即完成了一次消息传递。
时序图中关注生命线之间的通信,这些通信就是对象发送的消息。UML用生命线间带有实心箭头的实现表示消息,每条消息从发送对象指向接收对象。
例如:
另外消息中还细分为了简单消息、同步消息和异步消息。
简单消息:就表示控制如何从一个对象发送给另一个对象,并不包含控制的细节。
同步消息:意味着阻塞和等待。如:A向B 发送一个消息后,对象A 必须一直等到B执行完成后返回才能继续往下执行。这就是同步消息。
异步消息:就意味着是非阻塞。如:A向B发送消息后,直接可以执行下面代码,无需等待B的执行。
同步消息用实心箭头表示,异步消息用开放式箭头表示。
自我调用消息:
消息的返回值:
UML在2.0时在时序图中加入了交互框。交互框用来解决交互执行的条件和方式,它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。组合片段共有13种,名称及含义如下:
但是我们只抽取几个常用的出来说一下,但本质上的用法是一样的。
简单说就是 将 if/else 在图示中表示出来了。
包含一个可能发生或不发生的序列;
只要当我成绩score小于60时,老妈打我这件事情肯定会发生。
大于就不会发生。
片段重复一定次数,可以在临界中指示片段重复的条件。
理论就说到这里哈,我们来接着说个例子。
下图简述了SpringMVC的执行流程,这次我们的任务就是将它转换为时序图来表示。
画成时序图如下: