概述
组件图(ComponentDiagram)描述了软件的各种组件和它们之间的依赖关系。组件图中通常包含4种元素:组件、程序、包、任务,各个组件之间还可以相互依赖。
一、组件的表示法
组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。在一般情况下,组件表示将类、接口等逻辑元素打包而形成的物理模块。一个组件包含它所实现的一个或多个逻辑类的相关信息,创建了一个从逻辑视图到组件视图的映射。
在UML中,组件用一个左侧带有两个突出小矩形的矩形来表示,如图4-1所示。
组件的名称是一个字符串,位于组件图的内部。组件的名称有两种:简单名和路径名。通常,UML图中的组件只显示其名称,但是也可以用标记值或表示组件细节的附加栏加以修饰。
二、程序的表示法
1.子程序规范
子程序规范通常是一组子程序集合名,子程序规范中不包括类定义。在UML中,使用一个包含了两个方框的矩形表示子程序规范,上方显示子程序规范的名称,如图4-2所示。
2.子程序体
子程序体是子程序规范的实现,在UML中,使用一个包含了两个方框的矩形表示子程序体下方矩形空白,上方显示子程序体的名称,如图4-3所示。
3.主程序
主程序是包含程序根的文件。在UML中,使用一个包含了两个方框的矩形表示主程序,上方矩形空白,上方显示子程序体的名称,如图4-4所示。
三、包的表示法
1.包规范
包是类的实现方法。包规范是类的头文件,包含类中函数的原型信息。在C++中,包规范就是I文件,在Java 中就是接口类的包。在UML中,使用一个包含两个方框和一个椭圆形的矩形表示包
规范,上方显示包规范的名称,如图 4-5所示。
2.包体
包体包含了包规范的实现代码。在C++中,包体就是.cpp文件,在Java中就是实现类的包。在UML中,使用一个包含两个方框和一个椭圆形的空白矩形表示包规范,上方显示包体的名称,如图4-6 所示。
四、任务的表示法
组件图用依赖关系表示各组件之间存在的关系类型。组件图中的依赖关系是由客户指向提供者的虚线箭头表示的。客户组件依赖于提供者组件,提供者组件只在开发时存在,运行时则不存在。
借助于依赖的虚线箭头,我们又可以表示本节所介绍的各种组件之间的依赖关系,如图4-9所示。
从以上的依赖关系可以看出,任务是最上层的,组件是依赖于任务的实现,包是依赖于组件的具体实现,程序则是依赖于包的实现。在实际的组件图中,我们不必介意以上的依赖关系,只要能够表达组件及组件的关系即可。