UML 时序图是什么
UML 时序图以横轴表示时间、纵轴表示对象的状态取值,展示一个或多个对象的状态如何随时间变化,可以标注持续时间约束与状态之间发生的消息。它与顺序图名字相近但关注点完全不同:顺序图描述消息的先后顺序,时序图描述在什么时间窗口内处于什么状态,因此更适合实时系统、嵌入式系统与协议时序的建模。
什么时候该用它
当需求里包含时间约束时应当用它,例如心跳必须在两百毫秒内响应、握手需在三秒内完成、信号需保持五十毫秒以上才被识别。这类约束用文字描述容易产生歧义,用状态与时间轴的图形表达则一目了然,测试也能据此设计判定条件。画图时要注意标注时间精度,否则实现与测试对同一张图的理解可能并不一致。
基本信息
| 横轴 | 时间,可带刻度与持续时间约束标注 |
|---|---|
| 纵轴 | 对象的状态或离散取值 |
| 可标注内容 | 状态变化、消息、持续时间约束与时间精度 |
| 典型用途 | 超时判定、握手协议、硬件信号时序 |
| 与顺序图区别 | 顺序图关注消息先后,时序图关注状态与时间窗口 |
PlantUML 时序图示例(片段)
PlantUML 时序图示例(片段)
@startuml
robust 传感器 as s # 状态随时间变化的对象
concise 网关 as g
@0
s is 待机 # 初始状态
g is 监听
@100
s is 采集 # 一百毫秒后状态切换
g is 上报
@200
s is 待机
@enduml典型使用场景
- 实时系统需求中包含响应时间与超时判定条件
- 通信协议握手过程的状态与时间窗口描述
- 嵌入式设备的信号时序与保持时间说明
- 测试用例设计时明确时间精度与判定阈值
关注在多久内必须完成这类需求时,用时序图表达比顺序图更直接,评审时对时间约束的理解也更容易保持一致。
时间精度未标注会让实现与测试各按自己的理解执行,测试判定失效,返工成本很高,图上应写清毫秒还是秒。