首页/开发/系统分析与架构设计速查/顺序图组合片段(alt/opt/loop/par)
需求分析与建模61 条

顺序图组合片段(alt/opt/loop/par)

组合片段把顺序图分块并标注交互类型:alt 条件分支、opt 可选、loop 循环、par 并行、break 中断、critical 临界区、neg 无效交互,条件写在方括号内。

组合片段是什么

顺序图的组合片段把交互分块并标注类型,用来表达分支、循环与并发。片段用方框包住若干消息,左上角标类型关键字,条件守卫写在方括号里。UML 2.5 常见的片段有 alt、opt、loop、par、break、critical、neg,另有 strict、seq、ignore 等使用频率较低的类型。

常用片段

片段含义典型场景
alt多分支,条件互斥支付成功与支付失败两条路径
opt条件成立才执行库存不足时触发补货通知
loop按守卫条件或次数重复每 100 条分批拉取订单
par并行执行,各分支独立同时调用风控与库存服务
break条件成立则中断所在片段鉴权失败直接结束流程
critical临界区,消息不可与其他片段交错扣减库存与记账必须原子执行
neg声明无效的交互展示错误调用顺序供评审纠正

典型使用场景

  • 描述异常与降级路径:用 alt 把超时、失败、限流分支画全
  • 表达分页或批量轮询:loop 配守卫条件与终止条件
  • 表达并发编排:par 展示同时发起的多个下游调用
  • 评审接口契约:用 neg 标注禁止出现的调用顺序
  • 强调事务边界:critical 圈出不能被交错的步骤

与流程图的区别

顺序图强调参与者之间消息的先后与返回,组合片段只负责把消息集合按条件或次数分组,本身不表达业务步骤的价值。用组合片段画完整流程会迅速膨胀,异常分支一多就无法阅读。常见做法是把正常路径画成主顺序图,把异常与降级单独画成一张带 alt 的图,评审时对照阅读。

条件守卫应写业务条件,例如「库存充足」,而不是实现细节,例如「行数大于零」,否则图只在写代码的那一刻才有意义。
par 表示逻辑上的并行,不承诺真实并发;如果两条分支共享同一个资源,需要在图旁注明串行保护策略,否则实现方容易误以为可以完全并行执行。

易错点

  • alt 分支未覆盖超时与降级路径,评审通过后线上仍出现未定义行为
  • loop 未标注终止条件或最大次数,读者无法判断是有限重试还是长期轮询
  • 把每层 if-else 嵌套都画成一个片段,图的复杂度超过可读上限
  • 组合片段与状态机、活动图表达同一逻辑,模型之间互相矛盾
  • critical 被当成普通分组使用,临界区语义被稀释,读图的人不再关注

数据来源与参考

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