程序员的必备技能——时序图

781 阅读4分钟

什么是时序图

时序图(Sequence Diagram),又名序列图,循序图,是一种UML交互图。它通过描述对象之间的发送消息的时间顺序显示多个对象之间的动态协调。

使用场景

在业务开发过程中,往往会涉及到很多多种角色,业务流程也会比十分复杂,这时就可以通过时序图把自己的思路理清楚,这样会使业务看起来十分清晰,代码写起来也是水到渠成的事情了

时序图中的角色

我们在刻画时序图时都会涉及下面7种元素

  • 角色(Actor)
  • 对象(Object)
  • 消息(Message)
  • 生命线(LifeLine)
  • 控制焦点(Activation)
  • 自关联消息
  • 组合片段

其中前6种是比较重要和常用的消息,最后的组合片段不是很常用,但是比较复杂。我们先介绍前6种元素,再单独介绍组合片段元素。

1. 角色(Actor)

系统角色,可以是人或系统。以一个小人图标表示。

2. 对象(Object)

对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般分为三种:

  • 对象名和类名。例如:华为手机:手机、LoginServiceObject:LoginService
  • 只显示类名。例如::手机、:LoginService
  • 只显示对象名。例如:华为手机:、LoginServiceObject:

3. 消息(Message)

表示对象之间发送消息。消息分为三种类型:

  • 同步消息(Synchronous Message)
    消息的发送者把控制传递给消息的接受者,然后停止活动,等待消息的接受者放弃或者返回控制。用来表示同步的意义。以一条实线和实心箭头表示。

  • 异步消息(Asynchronous Message)
    消息的发送者通过消息吧信号传递给消息的接受者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接受者和发送者是并发工作的,以一条实线和大于号表示

  • 返回消息(Return Message)
    返回消息表示从过程调用返回。

4. 生命线(LifeLine)

时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线。

5. 控制焦点(Activation)

控制焦点代表时序图中在对象时间线上某段时期执行的操作。以一个很窄的矩形表示。

6. 自关联消息

表示方法的自身调用或者一个对象内的一个方法调用另外一个方法。以一个半闭合的长方形+下方实心箭头表示
下方举例一个时序图的例子,看下上面集中元素具体的使用方式。 image.png

7. 组合片段

(1) 选择(Alt)
类似于if语句,满足条件则运行 image.png

(2) 选项(Opt)
包含一个可能会发生,也可能不发生的序列 image.png

(3) 循环(Loop)
片段重复一定次数,可以在临界值中指示片段重复的目标 image.png

(4) 并行(Par)
并行处理,片段中的事情可以交错处理 image.png

时序图的画法以及实例

时序图的绘制步骤可简单总结如下:

  1. 划清边界,识别交互的语境;

  2. 将要绘制的交互场景中的角色以及对象梳理出来;

  3. 从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有的消息,并注明每个消息的特性; 接下来,我们按照上面所讲的时序图的绘制步骤,以学生在教务系统中查询其课程的成绩为例,来讲解时序图的绘制方法

  4. 划清边界,识别交互的语境
    所谓的划清边界,就是要确定自己所要画的时序图的范围,“学生在教务系统中查询成绩”就是所要绘制的时序图的交互内容,不用往上延伸到用户登录,也不用往下延伸到下载成绩。
    识别交互的语境,即时读懂所要画的时序图的前提和背景。比如本例中,既然学生可以查询成绩,那么该学生肯定是已经注册并认证过身份。

  5. 梳理角色和对象
    在本例中,角色有学生,对象有教务系统、课程、成绩。对象的梳理是一个相对主观的过程,比如本例中,课程以及成绩分别作为了对象的存在,也可以合并为数据库这一个对象

image.png 3. 添加消息
学生进入成绩查询页面后,页面会加载本学生的成绩查询课程列表,并显示出课程对应的成绩

image.png

时序图推荐工具

关于时序图工具,强烈推荐语雀,是一个在线文档编辑于协同工具,功能十分丰富,学习成本也比较低

参考文档

www.cnblogs.com/54chensongx…

www.woshipm.com/ucd/607593.…