什么是组件图?

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

Component Diagram Hierarchy

组件图概述

组件图将正在开发的实际系统分解为各种高层次的功能。每个组件在系统中负责一个明确的目标,并仅在需要时与其他核心元素进行交互。
Component Diagram Overview
上面的示例展示了更大组件的内部组件:
  • 数据(账户和支票编号)通过右侧的端口流入组件,并被转换为内部组件可用的格式。右侧的接口被称为提供的接口,表示组件为履行其职责所需的服务。
  • 数据随后通过各种连接传递到其他组件,并通过左侧的端口输出。左侧的接口被称为所需接口,表示组件所提供的服务。
  • 需要注意的是,内部组件被包含在一个更大的“方框”中——这个方框可以是整个系统本身(此时右上角不会出现组件符号),也可以是系统的一个子系统或组件(此时方框代表该组件本身)。

组件图的基本概念

组件代表系统的一个模块化部分,封装其内容,并且其行为可以在其环境中被替换。在UML 2中,组件被绘制为一个矩形,可选地包含一个垂直堆叠的分隔区。UML 2中组件的高层次抽象视图可以表示为:
  1. 带有组件名称的矩形
  2. 带有组件图标矩形
  3. 带有构造型文本和/或图标的矩形
Appearance of a Component

接口

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

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

Component Diagram Example with Interfaces

子系统

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

端口

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

关系

从图形上看,组件图是一组顶点和弧线,通常包含组件、接口以及依赖、聚合、约束、泛化、关联和实现等关系。它还可能包括注释和约束。
关系 符号
关联:

  • 关联指定了类型实例之间可能发生的一种语义关系。
  • 它至少有两个端点,每个端点由一个属性表示,每个端点都连接到另一个端点的类型。多个端点可以具有相同的类型。

Component Diagram: Association




组合:

  • 组合是聚合的一种强形式,要求一个实例最多只能包含在一个复合体中。
  • 如果复合体被删除,其组成部分通常也会被删除。

Component Diagram: Composition




聚合:

  • 一种关联形式,其中一端标记为共享聚合,表示它具有共享聚合。

Component Diagram: Aggregation




约束:

  • 以自然语言文本或机器可读语言表达的条件或限制,用于声明元素的某些语义。

Component Diagram: Constraint




依赖:

  • 一种关系,表示一个或多个模型元素需要另一个模型元素来完成其规范或实现。
  • 这意味着依赖元素的完整语义在语义或结构上依赖于供应者元素的定义。

Component Diagram: Dependency




泛化:

  • 一个更一般的分类器与一个更具体的分类器之间的分类关系。
  • 特定分类器的每个实例也是更一般分类器的间接实例。
  • 因此,特定分类器从更一般的分类器继承特性。

Component Diagram: Generalization




源代码建模

  • 通过正向或逆向工程识别感兴趣的源代码文件集合,并将其建模为由文件构成的组件。
  • 对于较大的系统,使用包来显示源代码文件的分组。
  • 考虑包含一个标记值来表示源代码文件的版本号、作者和最后修改日期等信息。使用工具来管理这些标记值的取值。
  • 使用依赖关系来建模这些文件之间的编译依赖关系。同样,使用工具来帮助生成和管理这些依赖关系。
组件示例 – Java 源代码
Component Diagram Example: Java Source Code
组件图示例 – 带版本控制的 C++ 代码
Component Diagram Example: C++ Code with Versioning

可执行发布版本的建模

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

物理数据库建模

  • 识别模型中代表逻辑数据库模式的类。
  • 选择将这些类映射到表的策略。您还必须考虑数据库的物理分布。您的映射策略将受到您希望数据在部署系统中持久化位置的影响。
  • 为了可视化、指定、构建和记录映射关系,创建一个包含以表构建的组件的组件图。
  • 在可能的情况下,使用工具帮助您将逻辑设计转换为物理设计。
Component Diagram for Modeling Physical Database


现在尝试绘制一个 UML 组件图

您现在已经了解了组件图是什么以及如何绘制它。是时候创建您自己的了。获取 Visual Paradigm 社区版,一个免费的 UML 工具,并使用免费的 组件图工具来构建您自己的。它易于使用且直观。
  1. 什么是统一建模语言?
  2. 专业 UML 工具
  3. Visual Paradigm. (无日期). 如何绘制组件图?Visual Paradigm. https://www.visual-paradigm.com/support/documents/vpuserguide/94/2581/7292_drawingcompo.html 42.
  4. Visual Paradigm. (2018年5月11日). 什么是组件图?Visual Paradigm. https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-component-diagram/ 43.
  5. Visual Paradigm. (无日期). 如何在UML中绘制组件图?Visual Paradigm. https://www.visual-paradigm.com/tutorials/how-to-draw-component-diagram-in-uml/ 44.
  6. Visual Paradigm. (无日期). 组件图 – UML 2 图 – UML 建模工具。Visual Paradigm. https://www.visual-paradigm.com/VPGallery/diagrams/Component.html 45.
  7. Visual Paradigm. (无日期). 在 Visual Paradigm 中的组件图。Visual Paradigm. https://www.visual-paradigm.com/support/documents/vpuserguide/94/2581_componentdia.html 46.
  8. Visual Paradigm 社区圈。(2018年5月11日). 7. 组件图。Visual Paradigm. https://circle.visual-paradigm.com/docs/uml-and-sysml/component-diagram/ 47.
  9. Visual Paradigm Online. (无日期). 免费组件图工具。Visual Paradigm. https://online.visual-paradigm.com/diagrams/solutions/free-component-diagram-tool/ 48.
  10. Visual Paradigm Online. (无日期). 组件图教程。Visual Paradigm. https://online.visual-paradigm.com/tutorials/component-diagram-tutorial/ 49.
  11. Visual Paradigm. (2022年9月2日). UML 类图教程。Visual Paradigm. https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/ 50.
  12. Visual Paradigm Online. (无日期). 在线UML图工具。Visual Paradigm. https://online.visual-paradigm.com/diagrams/features/uml-tool/ 51.

Leave a Reply