UML组件图用于建模面向对象系统的物理方面。它们用于可视化、规范和记录基于组件的系统,以及通过正向和逆向工程构建可执行系统。组件图本质上是一种专注于系统组件的特殊类图,用于建模系统的静态实现视图。

组件图概述
组件图将正在开发的实际系统分解为各种高层次的功能。每个组件在系统中负责一个明确的目标,并仅在需要时与其他核心元素进行交互。

上面的示例展示了更大组件的内部组件:
- 数据(账户和支票编号)通过右侧的端口流入组件,并被转换为内部组件可用的格式。右侧的接口被称为提供的接口,表示组件为履行其职责所需的服务。
- 数据随后通过各种连接传递到其他组件,并通过左侧的端口输出。左侧的接口被称为所需接口,表示组件所提供的服务。
- 需要注意的是,内部组件被包含在一个更大的“方框”中——这个方框可以是整个系统本身(此时右上角不会出现组件符号),也可以是系统的一个子系统或组件(此时方框代表该组件本身)。
组件图的基本概念
组件代表系统的一个模块化部分,封装其内容,并且其行为可以在其环境中被替换。在UML 2中,组件被绘制为一个矩形,可选地包含一个垂直堆叠的分隔区。UML 2中组件的高层次抽象视图可以表示为:
- 带有组件名称的矩形
- 带有组件图标矩形
- 带有构造型文本和/或图标的矩形

接口
下例展示了两种类型的组件接口:
而提供的接口末端带有一个完整圆圈的符号表示组件所提供的接口——“棒棒糖”符号是接口分类器实现关系的简写表示。
而所需接口末端带有一个半圆(也称为插座)的符号表示组件所需接口(在两种情况下,接口名称都位于符号附近)。

组件图示例——使用接口(订单系统)

子系统
子系统分类器是组件分类器的一种特殊版本。因此,子系统符号元素继承了与组件符号相同的全部规则。唯一的区别是子系统符号元素使用“子系统”一词代替“组件”。

端口
端口由组件或系统边缘的方块表示。它们通常用于暴露组件所需的和提供的接口。

关系
从图形上看,组件图是一组顶点和弧线,通常包含组件、接口以及依赖、聚合、约束、泛化、关联和实现等关系。它还可能包括注释和约束。
| 关系 | 符号 |
|---|---|
关联:
|
|
组合:
|
|
聚合:
|
|
约束:
|
|
依赖:
|
|
泛化:
|
源代码建模
- 通过正向或逆向工程识别感兴趣的源代码文件集合,并将其建模为由文件构成的组件。
- 对于较大的系统,使用包来显示源代码文件的分组。
- 考虑包含一个标记值来表示源代码文件的版本号、作者和最后修改日期等信息。使用工具来管理这些标记值的取值。
- 使用依赖关系来建模这些文件之间的编译依赖关系。同样,使用工具来帮助生成和管理这些依赖关系。
组件示例 – Java 源代码

组件图示例 – 带版本控制的 C++ 代码

可执行发布版本的建模
- 识别您想要建模的组件集合。这通常涉及节点上的部分或全部组件,或这些组件在整个系统各节点间的分布。
- 考虑该集合中每个组件的构造型。对于大多数系统,您会发现少数几种不同的组件类型(例如,可执行文件、库、表格、文件和文档)。您可以使用 UML 的可扩展性机制为这些构造型提供视觉提示(提示)。
- 对于该集合中的每个组件,考虑其与邻近组件的关系。通常涉及某些组件导出的接口(实现)以及其它组件导入的接口(使用)。如果您希望暴露系统中的缝隙,应显式建模这些接口。如果您希望获得更高层次的抽象,则通过仅显示组件之间的依赖关系来消除这些关系。

物理数据库建模
- 识别模型中代表逻辑数据库模式的类。
- 选择将这些类映射到表的策略。您还必须考虑数据库的物理分布。您的映射策略将受到您希望数据在部署系统中持久化位置的影响。
- 为了可视化、指定、构建和记录映射关系,创建一个包含以表构建的组件的组件图。
- 在可能的情况下,使用工具帮助您将逻辑设计转换为物理设计。
现在尝试绘制一个 UML 组件图
您现在已经了解了组件图是什么以及如何绘制它。是时候创建您自己的了。获取 Visual Paradigm 社区版,一个免费的 UML 工具,并使用免费的 组件图工具来构建您自己的。它易于使用且直观。
相关链接
- 什么是统一建模语言?
- 专业 UML 工具
- Visual Paradigm. (无日期). 如何绘制组件图?Visual Paradigm. https://www.visual-paradigm.com/support/documents/vpuserguide/94/2581/7292_drawingcompo.html 42.
- Visual Paradigm. (2018年5月11日). 什么是组件图?Visual Paradigm. https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-component-diagram/ 43.
- Visual Paradigm. (无日期). 如何在UML中绘制组件图?Visual Paradigm. https://www.visual-paradigm.com/tutorials/how-to-draw-component-diagram-in-uml/ 44.
- Visual Paradigm. (无日期). 组件图 – UML 2 图 – UML 建模工具。Visual Paradigm. https://www.visual-paradigm.com/VPGallery/diagrams/Component.html 45.
- Visual Paradigm. (无日期). 在 Visual Paradigm 中的组件图。Visual Paradigm. https://www.visual-paradigm.com/support/documents/vpuserguide/94/2581_componentdia.html 46.
- Visual Paradigm 社区圈。(2018年5月11日). 7. 组件图。Visual Paradigm. https://circle.visual-paradigm.com/docs/uml-and-sysml/component-diagram/ 47.
- Visual Paradigm Online. (无日期). 免费组件图工具。Visual Paradigm. https://online.visual-paradigm.com/diagrams/solutions/free-component-diagram-tool/ 48.
- Visual Paradigm Online. (无日期). 组件图教程。Visual Paradigm. https://online.visual-paradigm.com/tutorials/component-diagram-tutorial/ 49.
- Visual Paradigm. (2022年9月2日). UML 类图教程。Visual Paradigm. https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/ 50.
- Visual Paradigm Online. (无日期). 在线UML图工具。Visual Paradigm. https://online.visual-paradigm.com/diagrams/features/uml-tool/ 51.





