UML组件图/构件图

1.概述

1.1组件(Component/构件)

image


定义
组件(Component/构件)是系统设计的一个模块化部分,并对外提供了一组接口

组件是一个独立的封装单位(封装性) ,是系统中可替换物理单元(替换性),需要遵循并提供一组接口的实现

组件与接口
接口(Interface)
是一组操作的集合,它指明了由类或组件所请求或者所提供的服务。

组件(Component)
是系统中可替换的物理部分,它遵循并提供了一组接口的实现

特点

  • 模块化
    经常将多个相关的类和对象组织成一个组件。

  • 组件作为系统中的一个物理实现单元,通常对应于一个实现性文件
    包括软件代码(源代码、二进制代码、可执行文件等)或相应组成部分(脚本、命令行文件等)
    带有身份标识并有物理实体的文件(运行时的对象、动态链接库、数据库等) 。

  • 组件作为系统中封装完好、定义良好接口的物理实现单元,它能够不直接依赖于其他组件而仅仅依赖于组件所支持的接口

分类

按照组件在系统中的角色分类:

  1. 部署组件(Deployment Component) :组成可执行系统的必要组件
    例如Java虚拟机、数据库管理系统、EXE文件、DLL文件。

  2. 工作产品组件(Work Product Component) :开发过程的中间产物,不直接参与到可执行系统中。
    例如源代码文件、数据文件。

  3. 执行组件(Execution Component):在运行时创建的组件,不常见
    例如实例化的Servlets、COM+对象、XML文档。

1.2组件图(构件图)

定义
组件图是用来表示系统中组件与组件之间、组件与接口之间关系的模型图。

作用

  • 使系统测试人员和开发人员能够从整体上了解系统的所有物理部件;
  • 软件架构的角度来描述一个系统的主要功能;
  • 方便项目组的成员了解系统的结构和功能;
  • 有利于软件复用

与类图区别

  • 类表示是对实体的抽象,而构件是对存在于计算机中的物理部件的抽象。
    也就是说,构件是可以部署 的,而类不能部署。

  • 构件属于软件模块,而非逻辑模块,与类相比,它们处于不同的抽象级别。
    甚至可以说,构件就是由一组类通过协作完成的。

  • 类可以直接拥有操作和属性,而构件仅拥有可以通过其接口访问的操作。

软件复用(SoftWare Reuse)

软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。

复用级别:

  1. 代码的复用
  2. 设计的复用
  3. 分析的复用
  4. 测试信息的复用。

早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。

软件复用的主要思想:
将软件看成是由不同功能部分的“组件”所组成的有机体,每一个组件在设计编写时可以被设计成完成同类工作的通用工具,这样编写特定软件的工作就变成了将各种不同组件组织连接起来的简单问题。

2.组件图的组成

基本组成元素——构件(组件)+ 接口 + 关系(依赖和实现)

详细组成元素——构件 + 接口 + 关系 + 端口(Port) + 连接器(Connector)

组件图的常用组成

  • 组件
  • 接口
  • 关系(依赖、实现)

2.1组件与接口

组件组成

  1. 接口
  2. 接口实现

接口
接口是一组用于描述类或组件的某个服务的操作。

表示:

image

组件:
在组件图中,组件可以通过其他组件的接口来使用其他组件中定义的操作。

表示方法:
没有标识接口的组件表示法

image

标识接口的组件表示法
有3种:

  • 使用接口分栏表示
  • 使用图标表示 (常用)
  • 显示表示法

image

构件常用构造型:

  • 《executable》,可执行构件(编译的结果,可投入运行),如exe文件。

  • 《library》,库构件(类库、动态链接库等),如dll文件。

  • 《database》,表示可执行文件访问的数据库构件,如mdb、mdf文件。

2.2关系

关系有两种:

  1. 组件间:依赖关系

  2. 组件与接口之间:依赖、实现

组件间的依赖关系
一个组件如果使用另外一个组件的操作,则可以在该组件和另外一个组件的接口间建立依赖关系。

使用场景:

  1. 两个组件中的类如果存在泛化关系,则组件间可以加依赖。

  2. 两个组件中的类如果存在使用(依赖或关联)关系,则组件间可以加依赖。

注意:

  • 组件之间的关系(通常)通过接口实现。
  • 如果被依赖接口无法正常运行, 那么该构件也无法运行。

组件与接口的关系——依赖、实现

构件实现主要用于定义构件, 这些构件根据提供接口和所需 接口来实现构件提供的契约。

image

2.3详细组成元素

详细组成元素——构件 + 接口 + 关系 + 端口(Port) + 连接器(Connector)

端口(Port)

uml2.0引入的概念

端口指定了构件上的一个交互点,通过该交互点,构件可以与环境、其他构件或其内部构件进行通信。

端口是一个封装构件所显示的对外窗口,所有进出构件的交互都要通过端口。

端口可以理解为构件的入口与出口,供给接口和需求接口都附着到端口上。

注意:

  • 端口无法独立存在,必须依附于组件

  • 简单端口是具有一个需求或供给接口的端口;而一个复杂端口,有几个需求或供给接口。

  • 端口可以有标识(名字),能够通过一个特定端口与一个构件通信。

  • 通信完全是通过由端口支持的接口来描述的

表示:
端口被表示为跨立于构件边界上的小方块,每个端口都可以有一个名字

image

连接器(Connector)

不常用

构件与构件之间通过端口连接,而端口与端口之间通过连接器连接 。

端口与端口之间通过连接器(连接件)连接,连接器有多种形式:

  • 直接连接器
  • 接口连接器
  • 委派连接器(内部端口与外部端口)

image

3.组件图的分类

  1. 简单组件图
    将相互协作的类,组织成一个组件。

    image

  2. 嵌套组件图
    使用嵌套的组件图来表示组件的内部结构。
     

    image


    (图中命名有问题)

4.组件图的应用及建模过程

简单组件图的创建

  1. 根据用例或场景的确定需求,确定系统的组件

  2. 将系统中的类、接口等逻辑元素映射到组件中

  3. 确定组件之间的依赖关系,并对组件进行细化。

4.1组件图的绘制

  1. 创建组件图
    在Development View下面

  2. 创建和设置组件

  3. 创建组件之间的依赖关系
    构建之间的关系一般通过接口实现。

  4. 创建组件、与接口的实现及依赖关系

  5. 创建端口和连接器(可选)

4.2对系统建模

嵌套组件图的创建

  1. 确定子系统对外的接口
  2. 确定子组件和接口

例子:
确定子系统对外的接口
 

image


确定子组件和接口
 

image


(图中名字有问题:构件名字尽量不要出现接口)

4.3对用例建模

使用下列的步骤创建组件图:
(1)根据用例或场景的确定需求,确定系统的组件。
(2)将系统中的类、接口等逻辑元素映射到组件中。
(3)确定组件之间的依赖关系,并对组件进行细化。

例子
根据用例或场景的确定需求,确定系统的组件。
 

image


 

image


确定系统组件
将系统中的类和接口等映射到组件中

 

image


确定组件的依赖关系

image

4.4对可执行程序的结构建模

可以清晰地表示出各个可执行文件、链接库、数据库、帮助文件和资源文件等其他可运行的物理组件之间的关系。

建模策略:

  1. 标识要建模的组件
  2. 理解和标识每个组件的类型、接口和作用
  3. 标识组件间的关系

有一个语音呼叫中心程序callcenter.exe,使用了三汇公司的语音卡的驱动程序shp_a3.dll,以及相应的TTS(文本转语音)引擎sh_ttsu.dll

image

4.5对源代码建模

清晰地表示出软件所有源文件之间的关系。
建模策略:

  • 识别出感兴趣的相关源代码文件的集合,并把它们建模为组件

  • 对于较大的系统,利用来进行分组;

  • 通过约束来表示源代码的版本号、作者和最后修改日期等信息;

  • 依赖关系来表示这些文件间编译的依赖关系。

    image

5.使用visio绘制组件图

可以创建 UML 组件关系图来显示组件、端口、接口及其之间的关系。

UML 中的 组件 表示系统的模块化部分。 该行为根据所需的接口和提供的接口进行定义。 组件具有具有公共属性和操作 的外部视图 ,并且具有具有专用属性和实现分类器 的内部视图 。 内部视图显示如何在内部实现外部行为。

首先,打开 UML 组件 模板并选择四个选项之一。 然后,将显示 UML 组件 模具以及符合 UML 2.5 标准的形状。

5.1 启动组件图

  1. 启动 Visio。 或者,如果已打开文件,请单击“ 文件 > 新建”。

  2. 转到 “类别 > 软件和数据库 > UML 组件”。

  3. 选择空白模板或三个初学者图表之一。 选择所需的模板后,单击“ 创建”。

  4. 在关系图旁边应看到 “形状 ”窗口。 如果未看到它,请转到 查看 > 任务窗格 ,并确保选择了 形状 。 如果仍然看不到它,请单击左侧 

    展开形状窗口 按钮。

  5. 在“视图”选项卡上,确保选中“连接点”旁边的“检查”框。 这会在开始连接形状时显示连接点。

  6. 现在,将要包含在图表中的形状从 “形状” 窗口拖动到页面。 若要重命名文本标签,请双击标签。

5.2组件形状

何时使用

对系统或应用程序中的每个功能单元使用组件形状。

显示或隐藏构造型

右键单击形状以显示或隐藏构造型标签。

子系统

可以将组件形状用作包含其他组件的子系统形状。 只需将其大小调整为更大,然后在其上放置其他组件即可。 看到绿色突出显示时,放手。 从该点开始,较大的形状将充当容器,较小的形状将随它一起移动。

提示: 如果某个组件在另一个组件上拖动后消失,则通过按 Ctrl+Shift+F 将其置于前面。

5.3接口形状

何时使用

  1. 如果要指定类/接口的实现,请使用 提供的 接口形状。

  2. 如果要指定类/接口的依赖项,请使用 必需 接口。

步骤 1

将 “提供的接口” 形状拖到页面,并将端口正方形与连接点对齐。 当你看到连接点周围的绿色突出显示时,你知道它已连接。

步骤 2

将 “必需接口” 形状拖到页面,并将端口正方形与连接点对齐。 当你看到连接点周围的绿色突出显示时,你知道它已连接。

步骤 3

若要将“提供”和“必需”接口连接在一起,请先选择“必需接口”形状。 然后查找黄色句柄。

步骤 4

拖动黄色句柄以使用提供的接口进行连接。

拉直连接器

如果连接线的转弯次数过多,请右键单击它,然后单击“ 直连线”。

显示多重性

如果需要,请右键单击连接器,然后选择“ 显示多重性”。 完成后,将显示四个文本框,可在其中添加详细信息。 如果不需要所有文本框,请删除不需要的文本框。

更改连接器类型

可以更改连接器类型。 例如,可以从关联更改为定向关联。 右键单击连接器,然后单击“ 设置连接器类型”。

建立动态连接而不是点连接

如果非常期待移动形状,请考虑使用 动态连接 而不是点连接。

移动或旋转连接符上的文本

很可能需要旋转或移动连接线上的文本。 下面是操作方法:

  1. 单击页面的空白区域可取消选择任何可能选择的内容。

  2. 在“ 开始 ”选项卡上的“ 工具” 组中,单击“ 文本块”工具 

  3. 单击要旋转或移动的文本的连接线。

  4. 拖动文本块以移动它,或使用 旋转手柄 

  5. 完成后,单击“ 指针工具 ”按钮 

    切换回 “指针工具 ”按钮后,文本相对于形状保持相同的位置。 如果使用 指针工具 

     拖动文本,形状也会移动。 若要独立于形状移动文本,请返回到 文本块工具 

参考资料:

UML _ 组件图/构件图 - kingwzun - 博客园 (cnblogs.com)

创建 UML 组件图 - Microsoft 支持

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值