关注BeTester,学习更多知识
让碎片成体系,让测试更专业
1、概述
通信图(Communication Diagram),也叫协作图(Collaboration Diagram),描述了对象与对象之间的协作/合作关系,侧重说明对象的消息传递,强调发送和接收消息的对象之间的组织结构。通信图的建模结果用于获取对象的职责和接口。
通信图中,对象通常是命名或匿名的类实例,也可以代表其他事物的实例。通信图描述了系统的动态情况,通过对象之间的消息传递来反映具体使用语境,使复杂的程序逻辑更容易理解。
- 自UML 2.0 之后,不再使用协作图,都统一使用通信图。
- 动态图是从静态图中抽取瞬间值的变化描述系统随时间变化的行为。动态图包括通信图、活动图、状态图等。
PlantUML并不支持通信图的语法,可以通过其他的替代方案来实现通信图的描绘,如Rose、StarUML、Visio,甚至是PPT或Word。
2、通信图元素
通信图由三部分组成:对象(Object),链(Link) 和消息(Message)。
2.1 对象
对象,即类的实例,是为了共同完成某个目标的群体,通信图中主要描述在完成目标过程中,对象所参与的那部分活动。通信图中的对象与顺序图中的对象一样,使用人形图案或矩形来表示,如下图,其中a表示实例名,A表示类名。
2.2 链(对象关联)
在通信图中,链由一个或多个相连的线(直线或弧线)形成,链的两端是消息发送者和消息接收者,并且消息发送者与消息接收者可以是一样的。
对象之间的箭头方向表明对象之间交换的信息流,一个对象发出消息,箭头指向对象接收消息。链用于实现消息的传输。
与类的关系不同,通信图中的链是临时关联,只在本次交互中存在,而类的关联是永久的。
2.3 消息
通信图是通过一系列的消息来描述系统的动态行为。消息可以分为四种类型:
- 简单消息:指示消息类型未知或不重要的消息,可默认都使用简单消息替代。
- 同步消息:表示前一个消息处理完成后才能处理下一个消息。
- 异步消息:表示处理流不需要等到消息完成或传递反馈后才继续执行。
- 反身消息:对象自身内部的消息处理。
3、通信图与顺序图差异
3.1 相同点
- 具备相似的责任主体
- 都是通过消息驱动
- 具有顺序性
3.2 不同点
- 通信图中,对象无法创建和撤销,位置没有限制。
- 协作图展示对象间的关系使得更适用于获得对象结构的理解,顺序图则更适合获取调用过程的理解。
- 顺序图强调的是时间顺序,通信图强调的是空间的顺序。
顺序图和通信图是可以相互转换的。
4、实例
4.1 数据库登录
4.1.1 数据库登录顺序图
4.1.2 数据库登录通信图
4.2 赤壁之战
4.2.1 赤壁之战顺序图
4.2.2 赤壁之战通信图
5、小结
通信图强调了发送者和接收者对象之间的组织结构,通过通信图可以快速获取对象的职责和接口。
—— 更多文章 ——
- 软件工程专题:UML顺序图
- 软件工程专题:UML用例图
- 软件工程专题:UML类图
- 软件工程专题:Plant UML实践
- 软件工程专题:UML简介
- 软件工程专题:看板
- 软件工程专题:Scrum框架
- 软件工程专题:极限编程
- 软件工程专题:敏捷开发流程
- 软件工程专题:软件工程概述