画图程序员必备画图技能:如何画好时序图?
什么是时序图
时序图(Sequence Diagram) , 又名序列图、循序图 , 是一种UML交互图 。 它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作 。
使用场景
时序图的使用场景非常广泛 , 几乎各行各业都可以使用 。 当然 , 作为一个软件工作者 , 我这边主要列举和软件开发有关的场景 。
1. 梳理业务流程
一般的软件开发都是为了支撑某个具体的业务 。 有时候业务的流程会比较复杂 , 涉及到多种角色 , 这时就可以使用时序图来梳理这个业务逻辑 。 这样会使业务看起来非常清晰 , 代码写起来也是水到渠成的事情了 。
本文插图
2. 梳理开源软件
作为一个合格的程序员 , 阅读源代码的能力一定要过关 。 一般成熟框架的源代码调用深度都比较深 , 类之间的调用关系也比较复杂 。 我喜欢用时序图来梳理框架中这些对象之间的关系 。
比如再看Tomcat启动流程的过程中 , 我就时序图梳理了各个组件之间的关系 , 看起来层次非常清楚 , 也便于记忆 。
本文插图
【画图程序员必备画图技能:如何画好时序图?】
时序图的角色
我们在画时序图时会涉及下面7种元素:
- 角色(Actor)
- 对象(Object)
- 生命线(LifeLine)
- 控制焦点(Activation)
- 消息(Message)
- 自关联消息
- 组合片段 。
1. 角色(Actor)
系统角色 , 可以是人或者其他系统和子系统 。 以一个小人图标表示 。
2. 对象(Object)
对象位于时序图的顶部,以一个矩形表示 。 对象的命名方式一般有三种:
- 对象名和类名 。 例如:华为手机:手机、loginServiceObject:LoginService;
- 只显示类名 , 不显示对象 , 即为一个匿名类 。 例如::手机、:LoginSservice 。
- 只显示对象名 , 不显示类名 。 例如:华为手机:、loginServiceObject: 。
时序图中每个对象和底部中心都有一条垂直的虚线 , 这就是对象的生命线(对象的时间线) 。 以一条垂直的虚线表 。
4. 控制焦点(Activation)
控制焦点代表时序图中在对象时间线上某段时期执行的操作 。 以一个很窄的矩形表示 。
5. 消息(Message)
表示对象之间发送的信息 。 消息分为三种类型 。
- 同步消息(Synchronous Message)消息的发送者把控制传递给消息的接收者 , 然后停止活动 , 等待消息的接收者放弃或者返回控制 。 用来表示同步的意义 。 以一条实线和实心箭头表示 。
- 异步消息(Asynchronous Message)消息发送者通过消息把信号传递给消息的接收者 , 然后继续自己的活动 , 不等待接受者返回消息或者控制 。 异步消息的接收者和发送者是并发工作的 。 以一条实线和大于号表示 。
- 返回消息(Return Message)返回消息表示从过程调用返回 。 以小于号和虚线表示 。
表示方法的自身调用或者一个对象内的一个方法调用另外一个方法 。 以一个半闭合的长方形+下方实心剪头表示 。
下面举例一个时序图的列子 , 看下上面几种元素具体的使用方式 。
本文插图
推荐阅读
- 小红猪带你看科技|七夕节送女朋友必备左点小艾智能艾灸器X8,3天众筹500万
- 程序员|强力支持!国家再出重拳,这是要彻底解决华为芯片危机
- 军事佳作社|分奴必备,运营简单的阵是什么阵?,云顶之弈:混分巨阵
- 云顶之弈|云顶之弈:娱乐冲分必备爆破星机神,双泰坦盖伦成光之巨人
- 沙溢|沙溢的“亚瑟士”火了,价格不超过800元,网友:潮男必备!
- 足球|要价3000万!曼联寻中卫看中19岁潜力股,有成顶级中卫的必备素质
- 飞行的小猪|手残党必备的60条化妆技巧!与专业化妆师媲美!
- 烹饪|破壁机食谱,奶香玉米汁,这样做简单方便,香浓好喝,午餐必备
- 工业互联网软件工程专业女生不想做程序员,还可以选择哪些岗位
- 青年|阴阳师,斗技必备三个超SSR水准式神,不知火双高,鬼吞实用,它阵容多变
