简介
组合结构图用来显示组合结构或部分系统的内部构造,包括类、接口、包、组件、端口和连接器等元素,是UML2.0的新增图。
组合结构图侧重复合元素的方式展示系统内部结构,包括与其他系统的交互接口和通信端口,各部分的配置和协作,组件相关的服务,以及各服务之间的通信和调用。
组合结构图建模步骤
- 确定系统中的主要组合结构、重要类以及与外部的连接或调用关系
- 分析主要组合结构在系统中所起的作用以及与系统中其他组件的调用关系
- 将重要类分解为复合元素,并确定其部件、接口以及需要对外暴露的端口
- 确定类复合元素与其内部成员之间的比例关系、成员与成员之间的连接关系、接口的种类以及该类元与其他类之间的关系
- 将需要进行紧密合作共同完成一项功能的一系列角色定义为协作,并确定协作的角色与连接器类型
组合结构图主要元素
- 类元与成员:
- 类元:类元素在类图中和组合结构图中的表示形式不同
类元素在组合结构图中以复合元素的方式展示内部结构,比如对外暴露接口、端口或部件。
- 成员:成员指与类元具有组成关系的其他类,一般把成员放到类元的内部结构中描述
如下所示,CPU、Memory等与Computer类元有组成关系
- 类元与成员的数量关系:一对一或一对多
- 成员与成员的连接关系:成员之间如果依赖、泛化、关联或调用关系可以用连接符连接。用不带箭头的直线标识连接符
- 类元与关联类的连接关系:在类元中用边框为虚线的矩形标识关联类
- 组件(Component): 承担具体功能单元的实际文件,一般为lib, jar, dll, exe等格式,遵循接口定义并提供具体的接口实现
- 部件(Part):代表属于类元的一个元素,该元素可能包含一个或多个实例。常用在类或组件内部用不加修饰的矩形框标识
- 接口(Interface):一组操作的集合,声明了组件提供或请求的服务契约,这个契约由实现和使用这个接口的组件共同遵守。
- 提供接口:也叫供接口,是指组件给其他组件提供服务时实现的特性和约束。用带棒球体标识
- 需求接口: 也叫需接口,是指组件像其他组件请求服务时要遵循的接口。用带棒杯体标识
- 端口(Port):类元与外部部件交互的连接处。用类元边框线上的小矩形框标识
类元一般都是以封闭的结构体,在组合结构图中通过端口与外部交互。
组合结构图元素关系
- 委托与委托连接器(Delegate Connector):委托用来定义组件外部接口和端口的工作方式。用带关键字<<delegate>>的实线箭头标识委托连接器
- 委托连接器表示法
- 委托示例
- 协作(Collaboration):定义了共同完成一项功能的一系列角色,包括这些角色相应的实体和实体间的关系。用虚线框椭圆标识协作
- 协作表示法
- 协作示例
- 绑定与角色绑定连接器(Role Binding Connector):绑定用来连接从协作到完成该角色任务的类元。
用带关键字Role的虚线箭头标识角色绑定连接器,并在类元端显示角色名称。
- 角色绑定连接器表示法
- 绑定示例
- 表现与表现连接器(Represents Connector):表现用来连接从协作到使用该协作的类元。用带关键字<<represents>>的虚线箭头标识表现连接器
- 表现连接器表示法
- 表现示例
- 发生与发生连接器(Occurrence Connector):发生用来连接从协作到描绘该协作的类元。用带关键字<<occurrence>>的虚线箭头标识
- 发生连接器表示法
- 连接示例
组合结构图示例
以供应链(生产商-厂家直销-批发商-零售-电子商务)为例
组合结构图注意事项
- 侧重类的整体特性,就使用类图;侧重类的内部结构,就使用组合结构图
- 注意区分端口和接口,端口主要是类元对外可视的部分、负责类元与外部环境的交互,接口主要是类元自身的供需定义
- 注意区分组件和部件,组件一般是指系统中独立的组成部分,部件一般指类元内部的组成部分
- 对于合作紧密完成意向功能的一系列角色建议组合为协作,对外作为独立的整体操作
- 注意区分不同的连接器类型及适用场景