基本概念:组件图即是用来描述组件与组件之间关系的一种UML图。组件图在宏观层面上显示了构成系统某一个特定方面的实现结构。

  组件图中主要包含三种元素,即组件、接口和关系。

  组件图通过这些元素描述了系统的各个组件及之间的依赖关系,还有组件的接口及调用关系。此外,组件图还可以使用包来进行组织,使用注解与约束来进行解释和限定。

  组件图在面向对象设计过程中起着非常重要的作用:它明确了系统设计,降低了沟通成本,而且按照面向对象方法进行设计的系统和子系统通常保证了低耦合度,提高了可重用性。

组件图的组成元素:组件、接口、组件图中的关系、组件的内部结构。

组件

  组件,是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组接口。

  组件是一个封装完好的物理实现单元,它具有自己的身份标示和定义明确的接口。并且由于它对接口的实现过程与外部元素独立,所以组件具有可替换性。

                     

  组件在系统中一般存在三种类型,分别为部署组件、工作产品组件和执行组件。

    a.配置组件是构成系统所必要的组件,是运行系统时需要配置的组件。

    b.工作产品组件主要是开发过程的产物,是形成配置组件和可执行文件之前必要的工作产品,是部署组件的来源。工作产品组件并不直接参与到可执行系统中,而是用来产生系统的中间产品。

    c.执行组件代表可运行的系统最终运行产生的运行结果,并不十分常见。

一个ATM机的组件:

系统设计的一个模块化部分

显示界面

读卡机

业务操作----查询、取款、转账、挂失

学校教务系统的组件:

系统设计的一个模块化部分

登录界面、业务动作、层业务实现层

学生管理、教师管理、成绩维护、选课

接口

  对于一个组件而言,它有两类接口,提供接口与需求接口。

    a.提供接口:又被称为导出接口或供给接口,是组件为其他组件提供服务的操作的集合。

    b.需求接口:又被称为引入接口,是组件向其他组件请求相应服务时要遵循的接口。

端口

  端口(port)是一个被封装的组件的对外窗口。在封装的组件中,所有出入组件的交互都要通过端口。组件对外可见的行为恰好是它端口的综合。此外,端口是有标识的。别的组件可以通过一个特定端口与另一个组件通信。在实现时,组件的内部组件通过特定的外部端口来与外界交互,因此,组件的每个部件都独立与其他部件的需求。端口允许把组件的接口划分为离散的并且可以独立使用的几部分。端口提供的封装性和独立性更大程度上保证了组件的封装性和可替换性。

组件的内部结构

  在UML 2规范中,组件允许通过嵌套结构来表现组件的内部结构。

  子组件之间通过接口建立关系。图中组件边缘的小矩形被称为端口,端口可以理解为组件的入口与出口,组件通过端口与外部元素相互协作。端口上可以添加提供接口或需求接口来使组件得以扩展。

组件图中的关系

1.依赖关系

  a.组件与需求接口之间建立依赖关系

  b.组件与组件之间建立依赖关系:说明在运行过程中A在某些行为上依靠组件B的支持

2.实现关系

  组件与提供接口之间建立实现关系

组件图的建模技术

对源代码结构建模

  识别出感兴趣的源代码文件集合,并建模为组件。

  如果系统规模较大,使用包对组件进行分组。

  可以使用约束或注解来表示源代码的作者、版本号等信息。

  使用接口和依赖关系来表示这些源代码文件之间的关系。

  检查组件图的合理性,并识别源代码文件的优先级以便进行开发工作。

对可执行程序结构建模

  识别出相关的运行组件集合。

  考虑集合中每个组件的类型。

  如果系统规模较大,可以使用包对组件进行分组。这里包的使用可以对应于相应文件的文件存储结构。

  分析组件之间的关系,使用接口和依赖关系建模这些关系。

  考量建模结果是否实现了组件的各个特性,对建模的结果进行细化。

案例(分析一个已经存在的系统)

画出下列描述的网上商城组件图:购物车、订单、库存、支付管理组件,使用组件图进行完善。

识别组件:购物车、订单、库存、支付管理

识别组件之间的关系通过一个现实的例子。

在购买一件商品时,我们首先是浏览商品,了解商品详情。在商品详细页面上,我们可以看到一个“加入购物车”

                组件图

UML之组件图的更多相关文章

  1. UML:组件图

    要搞清楚组件图,必须先搞清楚什么是组件? 组件有以下特点:1.能实现一定功能,或者提供一些服务.2.不能单独运行,要作为系统的一部分来发挥作用.3.在物理上独立的,不是逻辑上的概念.4.可单独维护.可 ...

  2. UML_组件图

    简介 众所周知,组件图是用来描述系统中的各组件之间的关系.首先我们必须知道组件的定义是什么,然后组件之间有哪些关系.理清楚这些,我们在以后的设计中才能 派上用场.UML语言对组件的定义已发生了巨大变化 ...

  3. UML精粹5 - 状态图,活动图,通信图,组合结构,组件图,协作,交互概述图,时间图

    状态机图state machine diagram 下面是状态图的一个例子(一个城堡中的秘密保险箱的控制面板). 转换transition包括3个部分:trigger-signature [guard ...

  4. UML组件图(转载)

    概述: 组件图是不同的性质和行为.组件图用于模拟物理方面的系统. 现在的问题是什么,这些物理方面?物理方面的元素,如可执行文件,库,文件,证件等它位于在一个节点. 因此,组件图用于可视化的组织和系统组 ...

  5. (转)UML实践----用例图、类图、对象图、顺序图、协作图、状态图、活动图、组件图、配置图

    面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language™),这篇课程的目的是展示出UML ...

  6. Python设计模式 - UML - 组件图(Component Diagram)

    简介 组件图又称构建图,用于显示系统各组件及各组件关系的物理视图. 组件图通常包括组件.接口.关系.端口和连接器,用来显示程序代码中相应的模块.源文件或源文件集合之间的依赖和泛化关系. 组件图中的组件 ...

  7. 【UML】NO.48.EBook.5.UML.1.008-【UML 大战需求分析】- 组件图(Component Diagram)

    1.0.0 Summary Tittle:[UML]NO.48.EBook.1.UML.1.008-[UML 大战需求分析]- 组件图(Component Diagram) Style:DesignP ...

  8. UML部署图和图九组件图

    前言     UML大部分描写叙述了逻辑和设计方面的信息.实现图用来描写叙述实现方面的信息.实现图包含部署图和构件图. 构件图     1. 概念      构件图从软件架构的角度来描写叙述一个系统的 ...

  9. UML组件图

    组件图用于可视化在一个系统中的物理组件.这些组件包括库,程序包,文件等. 组件图 = 构件(Component)+接口(Interface)+关系(Relationship)+端口(Port)+连接器 ...

随机推荐

  1. LeetCode 258 Add Digits 解题报告

    题目要求 Given a non-negative integer num, repeatedly add all its digits until the result has only one d ...

  2. js数组方法汇总

    下面主要汇总一下数组的方法 数组方法: 1.检测是否为数组的方法:Array.isArrray(); var arr=[1,2,3,4,5]; var str='string'; console.lo ...

  3. es中对mapping的理解

    (1)往es里面直接插入数据,es会自动建立索引,同时建立type以及对应的mapping (2)mapping中就自动定义了每个field的数据类型 (3)不同的数据类型(比如说text和date) ...

  4. 筛选BETWEEN '2018-1-1 00:00:00' AND '2018-5-18 00:00:00'每日`status`='1'的记录总条数

    最近做了一个小任务,要求是:使用MySQL #筛选BETWEEN '2018-1-1 00:00:00' AND '2018-5-18 00:00:00'每日`status`='1'的记录总条数 SE ...

  5. finecms同时调用子栏目和子栏目的文章怎么操作

    之前ytkah写过dedecms如何调用当前栏目的子栏目及子栏目文章,那如果是finecms如何同时调用子栏目和子栏目的文章呢? {list action=category pid=0 id=31} ...

  6. Git/GitHub基本操作

    GitGit是分布式版本控制工具,SVN是集中式版本控制,有单点故障的问题GitHub是Git的代码托管中心,类似的国内有码云,是远程维护库Git的优势大部分操作在本地完成,不需要联网完整性有保证尽可 ...

  7. Linux安装go

    在 http://golang.org/dl/下载最新的linux版本,并把它提取到/usr/local目录,在此目录下进行解压缩 $ sudo tar -xzf go1.9.1.linux-amd6 ...

  8. 学习Shell(二)变量

    如何给shell脚本传入参数 1.执行“vi test.sh”创建一个新的shell脚本. vi test.sh 2.脚本test.sh的内容如下: #!/bin/sh name=$ echo &qu ...

  9. javaScript刷新页面

    刷新页面有一下几种: 1.直接在页面上: 每两秒刷新页面 <meta http-equiv="refresh" content="2"> 2.每秒刷 ...

  10. windows端口占用情况

    https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html netstat -ano,列出所有端口的情况. netstat -aon ...