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

通信图(Communication Diagram)

UML 2 之前的协作图,语义与顺序图等价:以对象链接为中心,消息用序号标注顺序,如 1、1.1、2,适合展示对等对象间的多轮交互。

通信图是什么

通信图是 UML 交互图的一种,UML 2 之前称为协作图,语义与顺序图等价:以对象及其之间的链接为中心组织图形,消息用序号标注执行顺序,如 1、1.1、2,其中点号表示嵌套调用。它擅长展示对象拓扑与多轮交互,强调谁和谁相连;顺序图强调时间轴上的先后,两者可以互相转换,只是阅读视角不同。

怎么读序号

序号表达调用层级:1 表示第一条消息,1.1 是 1 内部发起的子调用,2 是回到顶层后的第二条消息,同一层级内的多条消息可以并列。读图时先按顶层序号梳理主流程,再逐层进入子调用,就能还原出与顺序图一致的执行顺序。并发分支可以用字母后缀区分,但条件与循环等复杂控制逻辑在通信图上很难表达清楚。

基本信息

构成元素对象、对象之间的链接、带序号的消息
序号规则点号表示嵌套,1.1 是 1 的子调用,同层可并列
与顺序图选择强调对象拓扑用通信图,强调时间先后用顺序图
表达边界条件分支与循环可读性差,宜换顺序图或活动图
工具支持主流建模工具支持通信图与顺序图互相转换

带序号的消息示例

带序号的消息示例
1   校验库存()    → 仓库服务   # 顶层第一条消息
1.1 查询可用量()  → 库存表     # 1 内部发起的子调用
2   冻结库存()    → 仓库服务   # 回到顶层后的第二条
2.1 写入冻结记录()             # 2 的子调用
3   创建支付单()  → 支付服务

典型使用场景

  • 表达对等对象之间的多轮交互,凸显对象之间的连接关系
  • 顺序图中对象过多导致连线交叉时,用通信图重排拓扑
  • 设计评审中说明某次交互涉及哪些对象及其协作方式
  • 与顺序图互相转换,为不同读者提供同一交互的不同视角
两种图语义等价且可互相转换,建模工具一般支持直接切换,不必重复维护两份内容,改动时同步更新即可。
消息序号遗漏层级会让读者无法判断调用的嵌套关系,跨团队评审时最容易引发对执行顺序的误解。

易错点

  • 消息序号遗漏层级,读者无法判断调用的嵌套与依赖关系
  • 在通信图上表达复杂条件分支,可读性远低于顺序图,评审效率下降
  • 与顺序图各自维护,转换后内容不一致,读者不知道以哪份为准
  • 对象与链接命名随意,同一概念在不同图上叫法不同,讨论成本上升
  • 把通信图当部署图使用,混淆了对象协作与物理节点的边界

数据来源与参考

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