时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。顺序图中显示的是参与交互的对象及其对象之间消息交互的顺序。
时序图中包括的建模元素主要有:角色
Actor
、对象 Object
、生命线 Lifeline
、消息 Message
、组合片段 Combined Fragment
、控制焦点 Focus of control
。🚮 Actor & Object
时序图的第一步是列出交互中出现的所有角色和对象。
- Actor:通常指“人”,也可以是组织、机器、系统、子系统等等“抽象的人”,和用例图一样,用小人图表示
- Object:就是与上述“人”对应的“物”了,包括所有产品、服务、设备等等抽象的物体
时序图的交互,通常由最左侧的 Actor 发出;在银行 APP 案例中,Actor 是客户;按出场顺序,把这些“人”和“物”从左至右列出来:
🧬 Lifeline
时序图的第二步很简单:给每个角色和对象加上一条生命线,表示它们在整个交互中存在的时间。
📧 Message
有了角色和生命线,时序图的基本框架就搭建起来了。我们可以让客户向 APP 发出第一个消息:
如上,请求消息用实线箭头表示,响应消息用虚线箭头表示,可以标识它们的意义。
继续细分,请求消息的还能分为:
同步消息 Synchronous Message
消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
异步消息 Asynchronous Message
消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
如果你想,还能把消息归类为自关联消息(Self-Message)。
🔀 Combined Fragment
如果登陆失败时,我们希望给予消息反馈,这时候就得用到组合片段了。
组合片段用来解决交互执行中的条件反馈。组合片段长得比较复杂,如下图所示:
组合片段有十几种,最常用的就是
Alt
片段 —— 抉择片段,通俗来说就是 if-else 的条件判断组合。如上图所示:- 左上角黄色区域会标明片段的类型
- 片段中用虚线区分不同的条件子域
- 再在子域注释条件判断
- 最后在各自的条件子域上返回特定响应
常见的组合片段:
Alternative fragment(denoted “alt”) 与 if…then…else对应
Option fragment (denoted “opt”) 与 Switch对应
Parallel fragment (denoted “par”) 表示同时发生
Loop fragment(denoted “loop”) 与 for 或者 Foreach对应
🏁 Focus of Control
控制焦点又称激活,是覆盖在生命线上一段细长的矩形,表示在这个时间段内,对象或角色正处于活动状态;这有点类似于 java 语言里的大括号
{}
——作用域。🧸 更多示例
📚 参考
绘制工具: