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

顺序图(Sequence Diagram)

按时间顺序展示对象间的消息交互:生命线表示参与者实例,激活条表示执行期,实心箭头为同步消息、开放箭头为异步消息、虚线开放箭头为返回消息。

顺序图是什么

顺序图按时间顺序展示若干对象或参与者之间的消息交互,横轴是参与方,纵轴是时间。生命线代表一个参与实例,生命线上的激活条代表其执行期,实心箭头表示同步消息,开放箭头表示异步消息,虚线开放箭头通常是返回消息。它适合把“一次请求到底经过了谁、在哪里超时、异常怎么向上传递”讲清楚,但只描述单个交互场景,不能代替状态机。

基本信息

归属UML 2.5.1 交互图之一,与通信图、时序图并列
基本元素参与方、生命线、激活条、消息、组合片段
消息类型同步消息、异步消息、返回消息、自调用消息
组合片段alt 分支、opt 可选、loop 循环、par 并发、break 中断
常见工具PlantUML、Mermaid、draw.io、IDE 内置建模插件

Mermaid 示例

Mermaid 示例
sequenceDiagram
  participant C as 客户端
  participant O as 订单服务
  participant P as 支付服务
  C->>O: 提交订单
  O->>P: 创建支付单
  alt 支付单创建成功
    P-->>O: 支付单号
    O-->>C: 201 Created
  else 超时或失败
    O-->>C: 503 稍后重试
  end

常用组合片段

片段含义使用注意
alt条件互斥分支每个分支都要写明触发条件,避免只画成功分支
opt可选执行用于可缺省步骤,不要用它承担分支语义
loop重复执行标注循环次数上限或退出条件
par并发执行并发分支共享资源时要标注竞争与锁
break中断退出常用于异常提前结束,需要写出后续处理

典型使用场景

  • 接口时序评审:确认调用顺序、参数传递与返回结构
  • 超时与重试设计:把超时点、重试次数与降级路径画在同一张图上
  • 异常分支评审:补出失败、超时、部分成功等分支,避免只画顺路径
  • 排查线上问题:按实测日志重绘真实时序,与设计图对比找差异
  • 新人上手讲解:用一张图说明一次请求经过了哪些组件
  • 性能分析:标注每段调用耗时,定位瓶颈在本地计算还是下游等待
顺序图与通信图表达的信息等价,只是侧重不同:顺序图突出时间顺序,通信图突出对象之间的连接关系,二者可按读者偏好选用。
只画正常路径的顺序图会掩盖真正的风险;评审时必须把超时、重试、部分成功与幂等处理一并画出,否则方案在故障场景下不成立。

易错点

  • 顺序图只画成功路径,超时与异常分支留在口头约定,实现时无人对齐
  • 把跨进程调用画成同步阻塞且不标超时,导致线程占用与级联故障风险被忽略
  • 用顺序图代替状态机描述对象生命周期,状态与守卫条件表达不出来
  • 图与代码长期不同步,新人按图理解链路,排查问题被误导
  • 并发分支(par)共享同一资源却未标注加锁与冲突处理,压测时才暴露问题

数据来源与参考

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