首页/开发/系统分析与架构设计速查/时序图(Timing Diagram)
需求分析与建模61 条

时序图(Timing Diagram)

以时间轴与状态轴展示单个或多个对象的状态取值随时间的变化,可标注持续时间约束与消息,常用于实时、嵌入式与协议时序建模。

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

典型使用场景

  • 实时系统需求中包含响应时间与超时判定条件
  • 通信协议握手过程的状态与时间窗口描述
  • 嵌入式设备的信号时序与保持时间说明
  • 测试用例设计时明确时间精度与判定阈值
关注在多久内必须完成这类需求时,用时序图表达比顺序图更直接,评审时对时间约束的理解也更容易保持一致。
时间精度未标注会让实现与测试各按自己的理解执行,测试判定失效,返工成本很高,图上应写清毫秒还是秒。

易错点

  • 把时序图与顺序图混为一谈,评审时对时间约束的理解不一致
  • 时间精度未标注,测试无法判定是否满足要求
  • 只画状态不标注持续时间约束,超时类需求无法被验证
  • 状态命名随意,同一状态在不同片段叫法不同,读者需要反复对照
  • 图与实现代码脱节,代码改动后图未更新,逐渐失去参考价值

数据来源与参考

  • OMG UML 2.5.1 规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌