de_DEen_USes_ESfa_IRfr_FRid_IDjapl_PLpt_PTru_RUvizh_CNzh_TW

UML 组合结构图:建模内部架构与协作

UML 组合结构图是一种强大的结构图,用于探索内部架构一个结构化分类器(如类、组件或系统)的内部架构。它关注的是一个实体如何由相互连接的部件组成,以及它如何通过其端口.

UML Composite Structure Diagram for a Payment Processing Component

该图对于定义系统组件的黑盒和白盒视图至关重要,确保边界清晰,并支持组件的可重用性。

核心结构与上下文

该图是在一个分类器(边界框)的上下文中绘制的,它定义了正在分析的整体系统或组件。

A. 分类器角色(边界)

  • 符号表示:一个大的矩形框。
  • 用途:表示正在定义其内部结构的整体类、组件或系统。图中的所有其他元素都包含在此边界内。

内部视图的基本元素

内部结构由三个关键元素定义:部件、端口和连接器。

B. 部件

部件表示分类器(如类或组件)的一个实例在整体组合结构中所扮演的角色。本质上,部件是一个内部构建块。

  • 符号表示:边界内的一个矩形框,标注有其名称和类型。
  • 语法: 部件名:部件类型(例如,dataCache: 缓存模块).
  • 关键区别: 一个部件并非对象本身,而是角色 该对象在其所属分类器上下文中的角色。一个部件本身也可以是一个复合结构,从而支持深层嵌套。

C. 端口

端口是复合结构(边界)与其环境之间,或其内部部件之间的独立交互点。端口明确了组件所使用或提供的接口。

  • 符号表示: 一个附着在边界边缘或内部部件边缘的小方块。
  • 端口类型:
    • 公共端口: 附着在外部边界上;向环境暴露。
    • 封装端口: 附着在内部部件上;仅连接该部件与其他内部部件或系统边界。
  • 目的: 端口显式定义了所需的和提供的接口,使得内部结构可以被隐藏(黑箱视图),同时仍明确其合同性交互点。

D. 连接器

连接器用于建模两个元素之间的通信链路或信息/信号的流动(可以是两个端口、两个部件,或一个端口与一个部件之间)。

  • 符号表示: 连接两个关联元素的一条线。
  • 目的: 表示通信链路的实现,展示数据或消息在内部如何传输。

接口建模:提供与需要

接口定义了端口的合同义务,对于架构清晰性至关重要。

A. 提供的接口(棒棒糖符号)

  • 符号表示: 一个连接到端口的圆圈(或“棒棒糖”)。
  • 目的: 展示分类器(或部件)向其环境或内部组件提供的服务或操作。

B. 需要的接口(插座符号)

  • 符号表示: 一个连接到端口的半圆(或“插座”)。
  • 目的: 显示分类器(或部件)为正确运行而需要从其环境或其他内部组件获取的服务或操作。

装配连接器: 连接线通常将一个所需接口(插座) 部件连接到另一个部件的提供接口(棒棒糖),说明内部组件如何连接以实现系统功能。

建模协作:角色与协作

组合结构图还可以建模动态协作——一组特定的角色和连接,共同协作完成一项任务。

A. 协作使用

  • 符号表示: 一个包含协作角色名称的虚线椭圆。
  • 目的: 表示在更大组件内使用的协作模式实例(例如,特定的观察者模式实现)。

分步建模示例:智能家庭控制器

让我们建模一个家庭自动化系统 组件的内部结构。

  1. 分类器边界: 将外框定义为家庭自动化系统.
  2. 外部端口: 添加一个标记为apiPort 的端口到边界。附加一个提供接口(棒棒糖)用于ICommandReceiver(外部世界可以发送的内容)和一个必需接口(插座)用于IExternalWeatherService(系统所需的内容)。
  3. 内部部件:
    • 调度器:TaskScheduler(处理定时事件)。
    • 设备管理器:DeviceCoordinator(与硬件通信)。
  4. 内部连接:
    • apiPort连接到deviceManager部件,使用连接器。
    • scheduler部件的输出端口连接到deviceManager部件的输入端口,表明调度器会告知设备管理器何时采取行动。
  5. 嵌套结构(可选):显示deviceManager本身包含如zigbeeAdapterwifiAdapter.

此图清楚地表明,家庭自动化系统由两个主要的内部部分组成,使用特定的API,并且需要外部天气服务才能运行。

摘要

UML组合结构图超越了类或组件的黑箱视图,揭示了其白箱架构。通过使用部件来定义角色,端口来定义交互点,以及连接器来定义内部通信,使架构师和开发人员能够精确地理解和设计复杂、可重用且清晰封装的组件。

您可以在我们的UML资源中心.