基本概念:组件图即是用来描述组件与组件之间关系的一种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. ECharts图形库

    ECharts图形库百度的项目,图形的创建也比较简单,直接引用Javascript即可 1,引入<script src="{{ url_for("static",f ...

  2. java使用DateUtils对日期进行运算

    最近在写数据上传的程序,需要对Date进行一些数学运算,个人感觉在java中,日期的数学运算还是比较常用的,所以把Date的数学运算都玩了一下.试了一下,发现DateUtils这个工具类对于Date的 ...

  3. 对web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web标准?

    网页主要有三部分组成:结构(Structrue).表现(Presentation)和行为(Behavior).对应的网站标准也分为三方面: 1.结构化标准语言,主要包括XHTML和XML: 2.表现标 ...

  4. 【JMeter】前置处理器

     BeanShell PreProcessor  使用BeanShell在请求进行之前进行操作.语法使用与BeanShell Sampler是一样的.但可使用的内置变量稍有不同    JDBC Pre ...

  5. iOS添加pch文件

    1.第一步,创建pch文件 第二步设置pch文件:相对地址,填写$(SRCROOT)/YTCompleteCarSell/PrefixHeader.pch  $(SRCROOT)是项目地址/项目名/p ...

  6. NYOJ 开心的小明

    #include<iostream> #include<stdio.h> #include<string.h> #include<queue> #inc ...

  7. 20165236 2017-2018-2《Java程序设计》课程总结

    20165236 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总: 1.我期望的师生关系 2.学习基础和C语言基础调查 3.20165236郭金涛 预备作业3 L ...

  8. springmvc aop 事务配置

    对应的中文: 任意公共方法的执行: execution(public * *(..)) 任何一个以“set”开始的方法的执行: execution(* set*(..)) AccountService ...

  9. CentOS里alias命令

    alias命令 功能描述:我们在进行系统的管理工作一定会有一些我们经常固定使用,但又很长的命令.那我们可以给这些这一长串的命令起一个别名.之后还需要这一长串命令时就可以直接以别名来替代了.系统中已经有 ...

  10. spring boot+logback+JdbcTemplate打印sql日志

    项目中使用的JdbcTemplate直接在service中执行sql语句,配置如下: 使用IDEA创建的项目自带 main/resource 中自带logback.xml 配置文件,添加以下日志配置, ...