
UML组件图用于对面向对象系统的物理方面进行建模,这些系统用于可视化、指定和记录基于组件的系统,也用于通过正向和逆向工程构建可执行系统。组件图本质上是专注于系统组件的类图,这些组件通常用于对系统的静态实现视图进行建模。
更快、更好、更轻松地学习 UML您是否正在寻找免费的 UML 工具来更快、更轻松、更快地学习 UML?Visual Paradigm Community Edition 是一个支持所有 UML 图类型的 UML 软件。它是国际屡获殊荣的 UML 建模器,但它易于使用、直观且完全免费。
组件图一览组件图将正在开发的实际系统分解为各种高级功能。每个组件负责整个系统中的一个明确目标,并且仅在需要了解的基础上与其他基本元素进行交互。
上面的示例显示了较大组件的内部组件:数据(帐户和检查 ID)通过右侧的端口流入组件,并转换为内部组件可以使用的格式。右侧的接口称为必需接口,表示组件执行其职责所需的服务。
然后数据通过各种连接传递到并通过几个其他组件,然后在左侧的端口输出。左边的那些接口称为提供接口,代表展示组件要交付的服务。
需要注意的是,内部组件被一个大“盒子”包围,它可以是整个系统本身(在这种情况下,右上角不会有组件符号)或整个系统的子系统或组件(在这种情况下,“盒子”本身就是一个组件)。
组件图的基本概念组件代表系统的模块化部分,它封装了其内容并且其表现形式在其环境中是可替换的。在 UML 2 中,组件被绘制为一个矩形,带有垂直堆叠的可选隔间。UML 2 中组件的高级抽象视图可以建模为:
1.带有组件名称的矩形
2.带有组件图标的矩形
3.带有构造型文本和/或图标的矩形
界面在下面的示例中显示了两种类型的组件接口:
提供的接口符号在其末端带有一个完整的圆圈,表示组件提供的接口——这个“棒棒糖”符号是接口分类器的实现关系的简写。
必需的接口符号,末端只有一个半圆(又名套接字)表示组件需要的接口(在这两种情况下,接口的名称都放在接口符号本身附近)。
组件图示例 - 使用接口(订单系统)
子系统子系统分类器是组件分类器的专用版本。因此,子系统符号元素继承了与组件符号元素相同的所有规则。唯一的区别是子系统符号元素具有关键字子系统而不是组件。
港口端口使用沿系统或组件边缘的正方形表示。端口通常用于帮助暴露组件所需的和提供的接口。
关系在图形上,组件图是顶点和弧的集合,通常包含组件、接口和依赖关系、聚合、约束、泛化、关联和实现关系。它还可能包含注释和约束。
协会:关联指定了可以在类型化实例之间发生的语义关系。
它至少有两个用属性表示的端点,每个端点都连接到端点的类型。关联的多个端可能具有相同的类型。
组成:复合聚合是一种强聚合形式,它要求一次最多将一个部件实例包含在一个复合中。
如果一个组合被删除,它的所有部分通常都会被删除。
聚合一种将其一端标记为共享的一种关联,即一种聚合,这意味着它具有共享聚合。
约束以自然语言文本或机器可读语言表达的条件或限制,用于声明元素的某些语义。
依赖依赖关系是一种关系,表示单个或一组模型元素需要其他模型元素来进行规范或实现。
这意味着依赖元素的完整语义在语义上或结构上取决于供应商元素的定义。
链接:泛化是更一般的分类器和更具体的分类器之间的分类关系。
特定分类器的每个实例也是通用分类器的间接实例。
因此,特定分类器继承了更一般分类器的特征。
建模源代码通过正向或逆向工程,确定感兴趣的源代码文件集并将它们建模为构造型为文件的组件。
对于较大的系统,使用包来显示源代码文件组。
考虑公开一个标记值,指示源代码文件的版本号、作者和上次更改日期等信息。使用工具来管理这个标签的价值。
使用依赖项对这些文件之间的编译依赖项进行建模。同样,使用工具来帮助生成和管理这些依赖项。
组件示例 - Java 源代码

组件图示例 - 带版本控制的 C++ 代码
为可执行版本建模确定要建模的组件集。通常,这将涉及位于一个节点上的部分或全部组件,或者这些组件集在系统中的所有节点上的分布。
考虑这个集合中每个组件的构造型。对于大多数系统,您会发现少量不同类型的组件(例如可执行文件、库、表、文件和文档)。您可以使用 UML 的可扩展性机制为这些构造型提供视觉提示(线索)。
对于该集合中的每个组件,请考虑其与其邻居的关系。大多数情况下,这将涉及由某些组件导出(实现)然后由其他组件导入(使用)的接口。如果您想暴露系统中的接缝,请显式地对这些接口进行建模。如果您希望模型具有更高的抽象级别,请通过仅显示组件之间的依赖关系来消除这些关系。
物理数据库建模确定模型中代表逻辑数据库架构的类。
选择将这些类映射到表的策略。您还需要考虑数据库的物理分布。您的映射策略将受到您希望数据在已部署系统上的位置的影响。
要可视化、指定、构建和记录您的映射,请创建一个包含构造型为表的组件的组件图。
在可能的情况下,使用工具帮助您将逻辑设计转换为物理设计。