当前位置:首页 > draw.io教程

UML组件图展示了系统的结构。

drawio3年前 (2023-08-30)draw.io教程8

UML组件图用于对面向服务的架构和基于组件的开发项目中的高级软件组件和子系统进行建模,更重要的是,它定义了这些组件之间的接口。由于组件图能够清晰地呈现系统概览,因此通常在项目早期绘制,这有助于获得利益相关者的批准并制定实施路线图。

它们与UML 类图相关,因为它们也为开发人员提供实现细节,在这种情况下,是通过定义各种组件交互的接口来实现的。

实现之后,组件可以作为单独的元素在持续集成部署中进行测试。

与类图不同,组件内部的数据结构或方法等细节被隐藏,仅显示与该组件交互的接口。这使得组件的内部运作与系统的外部部分解耦。

组件图鼓励开发人员设计模块化组件,这些组件既可以在复杂的系统中重复使用,也可以在其他项目中重复使用。

他们还可以指出在哪些情况下可以使用第三方组件包来更有效地实施系统,从而减少项目的时间和成本,尤其是在缺乏内部专业知识的情况下。

要绘制组件图,请在 draw.io 中启用 UML 和 UML 2.5 形状库。

  1. 点击形状面板底部的“更多形状” 。

  2. 在“软件”部分启用 UML 和 UML 2.5 复选框,然后单击“应用”

组件图形状分布在两个形状库中。将鼠标悬停在形状库中的任何形状上,即可查看带有其名称的放大预览图。

如何绘制 UML 组件图

UML组件图将系统分解为多个功能层级,每个系统、子系统及其相关系统都以组件的形式建模。在这种类型的图中,每个组件都通过特定的端口和接口与其他组件进行交互。

成分

组件形状必须<<component>>在矩形区域内包含构造型标签和/或组件图标。没有组件标识的空白矩形区域将被解释为类元素。

它们可以在组件形状的可选文本部分中包含其内部组件的详细信息,类似于 UML 类形状。

draw.io 提供三种不同的组件形状,右上角包含组件图标,其中一种形状包含行,可以快速输入其提供的和必需的接口。

组件可能包含子组件或子系统——即紧密相关的组件集合。这些组件或<<subsystem>>子系统的标签中可能使用构造型。

界面

接口可以用组件之间的圆圈来表示,或者使用棒棒糖和套接字结构来表示哪个组件提供接口,哪个组件依赖于或需要该接口。

  • 所需的接口棒棒糖(线末端的圆圈)表示。

  • 提供的接口插座(线末端的开口圆弧)绘制。

当组件间传递的数据和/或功能不明确时,可以使用接口标签来描述其用途和/或数据传递内容。如果将 Lollipop 和 socket 分开,并在它们之间绘制依赖关系能使图表更易于阅读,则可以这样做。

提示:要在专用组件中显示继承的接口,请^在连接器标签上的名称前使用插入符号 ( )。

港口

在组件边缘添加方形端口形状,表示该接口并非由组件本身直接提供,而是由其内部封装的某个组件提供。端口就像一条隧道,用于将数据和控制从外部实体传递到内部子系统或子组件。

使用 UML 2.5 形状库中的端口形状,因为这些形状最容易在绘图画布上移动。

包裹

大型系统中紧密相关的组件通常会被打包在一起。

软件包本身没有端口或接口。当两个软件包交互时,表示它们各自内部组件之间关系或通信的线条会跨越软件包边界并连接到内部接口。

draw.io 为组件图和封装图提供了多种封装形状。您可以使用形状面板中的搜索功能快速查找它们,或者将鼠标悬停在 UML 形状库中的形状上以查看更大的预览图。

要使用包装形状,请调整其大小,使其包含其组件,然后通过“格式”面板的“排列”选项卡将其置于底层。如果希望能够同时移动包装及其组件,请选中所有组件,然后在“格式”面板的“排列”选项卡中单击“组合”

人际关系

大多数组件图不像类图那样明确标示组件之间的具体关系。关联关系无需使用箭头,因为所需的接口和提供的接口已经表明了这一点。

人际关系主要分为两种类型。

  • 联想:一条实线,一端可能带有箭头。

  • 依赖关系:用虚线表示,有时会用箭头指示依赖关系的方向。

  • <<delegation>>委托:当关系通过端口与系统外部组件交互时,会用一条带有标签的实线表示。这在可视化多层组件的内部结构时更为常见。

多层组件

以下示例展示了其中一个组件的内部结构,包括与在线商店组件的委托关系以及客户与其帐户之间的依赖关系。

组件图显示了系统中各个组件之间的依赖关系。

绘制组件的内部结构:

  1. 调整包含组件的大小,使其足够大。

  2. 选中后,转到格式面板的“排列”选项卡,然后单击“置于底层”,以便选择内部元素。

文物

组件图既可以用来可视化系统的结构设计,也可以用来可视化每个组件在实际运行的系统中是如何工作的。

每个源代码文件、库和数据库都作为一个单独的组件绘制出来,旨在展示这些组件之间的依赖关系。包用于表示这些文件的分组。

可执行文件或系统运行实例的组件图更侧重于组件之间的接口。

为了可视化数据库模式,每个数据库表都被表示为一个组件。每个表的具体实现细节并未包含在内——实体关系图更适合展现这种程度的细节。

对于每种特殊类型的组件,您可以添加一个构造型标签,以便直观地表明它是哪种类型的组件:<<database>>,,,,甚至对于实现安全性或持久性等概念的多包组件。 <<application>><<library>><<infrastructure>>

注释和限制

如果需要向任何组件或关系添加额外信息,请使用“通用”形状库中的“注释”形状。使用虚线连接线将其连接到它所描述的部件。

UML 2.0 中组件图发生了变化

UML 2 中重新定义了组件的概念。

在早期版本的UML规范中,组件指的是运行系统中的文件和可执行文件。在UML 2.0及更高版本中,文件和可执行文件现在被称为工件,而组件则代表大型设计单元,其实现细节封装在接口之后。这使得在系统设计中更容易重用和替换组件。

更多 UML 图

UML 图还有更多类型,可以展示系统的各种结构方面和行为,包括系统的实现方式和使用方式。

提示:组件形状也用于 UML 部署图中。