




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2第11章 构 件 图构件是定义了良好接口的物理实现单元,它是构件是定义了良好接口的物理实现单元,它是系统中可以替代的部分,每个构件体现了系统系统中可以替代的部分,每个构件体现了系统设计中的特定类的实现,良好定义的构件不直设计中的特定类的实现,良好定义的构件不直接依赖于其他构件,而是依赖于其他构件所支接依赖于其他构件,而是依赖于其他构件所支持的接口,在这种情况下,系统中的一个构件持的接口,在这种情况下,系统中的一个构件可以被支持相同接口的其他构件所替代。可以被支持相同接口的其他构件所替代。接口是被软件或硬件所支持的一个操作集合。接口是被软件或硬件所支持的一个操作集合。通过使用命名的接口,可以避
2、免在系统的各个通过使用命名的接口,可以避免在系统的各个构件之间直接发生依赖关系,有利于新构件的构件之间直接发生依赖关系,有利于新构件的替换。替换。311.1 什么是接口和构件11.1.1 接口接口是对外声明的一组操作的集合。接口分为供给接口和需求接口,供给接口只能向其他构件提供服务,需求接口表示构件需要用到其他构件提供的服务。接口有两种表示方法:构造型表示接口和图标表示接口,如图11-1所示为用构造型表示接口Borrow,图11-2所示为用图标表示接口Borrow。411.1.1 接口接口每个接口有一个名称,接口有操作、属性、关每个接口有一个名称,接口有操作、属性、关系,约束等特征。系,约束等
3、特征。我们建立实现我们建立实现Borrow接口的模型,如图接口的模型,如图11-3和和图图11-4所示所示(图图11-3和图和图11-4是等价的模型,它是等价的模型,它们表示了相同的实现关系们表示了相同的实现关系)。511.1.2 端口端口是对相关的供给接口和需求接口的封装。端口是对相关的供给接口和需求接口的封装。端口用一个长方形表示,端口有名称、类型。端口用一个长方形表示,端口有名称、类型。端口名称可以不标识。端口名称可以不标识。端口可以没有需求接口,但是必须有供给接口。端口可以没有需求接口,但是必须有供给接口。图图11-5和图和图11-6所示为所示为CD构件的两种表示方法。构件的两种表示方
4、法。611.1.2 端口如图如图11-7所示,构件所示,构件CD和另一个构件和另一个构件Show通通过端口连接。两个构件连接时,它们的端口必过端口连接。两个构件连接时,它们的端口必须匹配,即一个构件的供给接口与另一个构件须匹配,即一个构件的供给接口与另一个构件的需求接口的规格说明必须一致。的需求接口的规格说明必须一致。711.1.3 构件构件是实现了某些功能的黑盒子。一个构件表现出来的行为由构件是实现了某些功能的黑盒子。一个构件表现出来的行为由供给接口和需求接口来定义。供给接口和需求接口来定义。 从构件组成上看,每个构件定义了两组接口从构件组成上看,每个构件定义了两组接口(一组供给接口,一一组
5、供给接口,一组需求接口组需求接口),构件为供给接口提供功能实现部分,即构件本身,构件为供给接口提供功能实现部分,即构件本身已经实现供给接口声明的功能。构件的需求接口只是向使用者已经实现供给接口声明的功能。构件的需求接口只是向使用者说明,该构件需要其他构件提供哪些服务。说明,该构件需要其他构件提供哪些服务。构件是一个泛指的概念,它可能是:一个子系统、一个实例构件是一个泛指的概念,它可能是:一个子系统、一个实例(如如EJB)、一个逻辑部件等。、一个逻辑部件等。在定义一个构件时,必须对以下在定义一个构件时,必须对以下5个要素进行规范。个要素进行规范。接口声明:每个构件包含两组接口,一组是供给接口,表
6、明它能提供的服务;一组是需求接口,表明它需要的服务。接口实现:构件是一个物理部件,它实现了供给接口声明的服务。构件标准:在创建构件时,每一个构件必须遵从某种构件标准。封装方法:也就是构件遵从的封装标准。部署方法:一个构件可以有多种部署方法。811.1.3 构件一个构件的通用表示如图一个构件的通用表示如图11-8所示。网卡所示。网卡的需求接口的需求接口pci与计算机插口连接,该网与计算机插口连接,该网卡的供给接口卡的供给接口cablei与网线的水晶头连接。与网线的水晶头连接。构件具有内部结构,它可能由多个零件组构件具有内部结构,它可能由多个零件组成。图成。图11-9所示为一个构件的内部结构展所示
7、为一个构件的内部结构展示。示。911.1.4 构件类型1按照构件在系统中的角色分配置构件 工作产品构件 执行构件 2按照构件本身的性质分(1)系统级构件 (2)实体构件 (3)没有接口的构件 (4)说明性构件 (5)处理事务的构件 (6)执行计算的构件 (7)子系统级构件 1011.2 什么是构件图构件图是描述构件及构件关系的图,主要用于构件图是描述构件及构件关系的图,主要用于描述各种软件构件之间的依赖关系,例如可执描述各种软件构件之间的依赖关系,例如可执行文件和源文件之间的依赖关系。与所有行文件和源文件之间的依赖关系。与所有UML的其他图一样,构件图可以包括注释、约束和的其他图一样,构件图可
8、以包括注释、约束和包。如图包。如图11-10所示便是一个典型的构件图。所示便是一个典型的构件图。1111.2.1 构件图的作用构件图的基本目的是:使系统人员和开发人员能够从整体上了构件图的基本目的是:使系统人员和开发人员能够从整体上了解系统的所有物理部件;同时,也使我们知道如何对构件进行解系统的所有物理部件;同时,也使我们知道如何对构件进行打包,以便交付给最终客户;最后,构件图显示了被开发系统打包,以便交付给最终客户;最后,构件图显示了被开发系统所包含的构件之间的依赖关系。所包含的构件之间的依赖关系。构件图从软件架构的角度来描述一个系统的主要功能,如系统构件图从软件架构的角度来描述一个系统的主
9、要功能,如系统分成几个子系统,每个子系统包括哪些类、包和构件,它们之分成几个子系统,每个子系统包括哪些类、包和构件,它们之间的关系以及它们分配到哪些节点上等。间的关系以及它们分配到哪些节点上等。使用构件图可以清楚地看出系统的结构和功能,从而方便项目使用构件图可以清楚地看出系统的结构和功能,从而方便项目组的成员制定工作目标和了解工作情况,同时,最重要的一点组的成员制定工作目标和了解工作情况,同时,最重要的一点是有利于软件的复用。是有利于软件的复用。从宏观角度来看,构件图是把软件看作多个独立构件组装而成从宏观角度来看,构件图是把软件看作多个独立构件组装而成的集合,每个构件可以被实现相同接口的其他构
10、件替换。的集合,每个构件可以被实现相同接口的其他构件替换。1211.2.2 构件图的组成元素构件图的组成元素有构构件图的组成元素有构件和关系。关系把多个构件和关系。关系把多个构件连接在一起,构成一个件连接在一起,构成一个构件图。这里的关系指构构件图。这里的关系指构件间的依赖关系。件间的依赖关系。1311.3 构件的表示表示构件的方法有两种:表示构件的方法有两种:第一种方法是,在构件图标中没有标识接口;第二种方法是,在构件图标中标识了接口。1411.3.1 没有标识接口的构件没有标识接口的构件的图形表示方法又分三种,没有标识接口的构件的图形表示方法又分三种,如图如图11-11所示的构件网卡的三种
11、表示方法:所示的构件网卡的三种表示方法:第一种在矩形框中写上构造型;第二种在矩形框的右上角放置一个构件图标;第三种是直接使用构件图标。1511.3.2 标识接口的构件标识接口的构件表示方法也有三种,如图标识接口的构件表示方法也有三种,如图11-12所示是构件网卡的三种表示方法。所示是构件网卡的三种表示方法。1611.4 构件间的关系构件图中的关系包括构件与接口的关系、构件构件图中的关系包括构件与接口的关系、构件与构件间的关系。与构件间的关系。1)构件与构件间的关系2)构件与接口的关系1711.5 构件图分类对于一幅简单的构件图而言,其对于一幅简单的构件图而言,其内容包括构件、关系和构件的接口。
12、内容包括构件、关系和构件的接口。实际上,在实际上,在UML 2.0中,还提供了中,还提供了一种嵌套构件的表示法,这使得构一种嵌套构件的表示法,这使得构件图具有了更强的语义模型。因此,件图具有了更强的语义模型。因此,构件图可以分为简单构件图和嵌套构件图可以分为简单构件图和嵌套构件图。构件图。1811.5.1 简单构件图用户可以把相互协作的类组织成一个构件。利用户可以把相互协作的类组织成一个构件。利用构件图可以让软件开发者知道系统是由哪些用构件图可以让软件开发者知道系统是由哪些可执行的构件组成的,这样以构件为单位来看可执行的构件组成的,这样以构件为单位来看待系统时,可以让开发者清楚地看到软件系统待
13、系统时,可以让开发者清楚地看到软件系统的体系结构。例如,图的体系结构。例如,图11-16所示就是一个所示就是一个“订订单管理系统单管理系统”的构件图局部。的构件图局部。1911.5.2 嵌套的构件图有时需要使用嵌套的构件图来表示构件的内部有时需要使用嵌套的构件图来表示构件的内部结构,如果我们对图结构,如果我们对图11-16中的中的3个构件进行封个构件进行封装,组成一个更大的构件装,组成一个更大的构件Store,就可以得到图,就可以得到图11-17所示的嵌套构件图。所示的嵌套构件图。2011.6 制 品在在UML中,把所有物理型中,把所有物理型事物称为制品。例如,对象事物称为制品。例如,对象库、
14、可执行程序、库、可执行程序、COM构构件、件、.NET构件、构件、EJB构件、构件、表、文件、文档都是制品的表、文件、文档都是制品的例子。例子。2111.6.1 制品的表示每个制品都有一个区别其他制品的名称,如果制品名每个制品都有一个区别其他制品的名称,如果制品名称前标有制品所属的包名,则这个制品名称为全名。称前标有制品所属的包名,则这个制品名称为全名。制品用一个矩形框表示制品用一个矩形框表示(制品的附件信息可以附加到矩制品的附件信息可以附加到矩形框中形框中),制品常用构造型,制品常用构造型标识。图标识。图11-18和图和图11-19所示为制品所示为制品home.java的两种表示方法。的两种
15、表示方法。图图11-20所示为制品所示为制品dog.dll的细节,即的细节,即dog.dll制品由制品由kill.dll和和bill.dll组成,我们把制品的细节写在另一个组成,我们把制品的细节写在另一个分栏中。分栏中。2211.6.2 制品的标准元素在在UML中,预先定义的制品有以下几个。中,预先定义的制品有以下几个。(1):可以在节点上执行的制品。(2):动态或静态库程序,其文件后缀是.dll。(3):物理文件,也可能是可以执行的代码文件。(4):说明性的文件。(5):可以被解释器执行的脚本文件。(6):可以编译为可以执行的文件。(7):对部署的产品进行详细说明。(8):用来表示一个数据库
16、,如Oracle、SQL Server等。2311.6.3 制品的种类制品可以分为制品可以分为3种类型,即部署制品、中间制品种类型,即部署制品、中间制品和执行制品。和执行制品。部署制品:构成一个可执行系统充分又必要的制品。例如动态链接库和可执行程序就属于这类制品。中间制品:这类制品是开发过程的中间产物。中间制品是用来创建部署制品的事物。这些制品并不直接参与系统运行。执行制品:系统运行时创建的制品。例如由DLL实例化形成的COM+对象、Servlets、XML文档都属于这类制品。2411.6.4 制品与类的区别制品与类的区别主要有以下三点。制品与类的区别主要有以下三点。(1)类是对一组对象的描述
17、,是一种逻辑抽象,类不能在节点上运行,而制品是一种物理存在的事物,可以运行在节点上。(2)制品是对计算机上比特流的封装。(3)类具有属性和方法,制品可以是对类的实现,但是制品本身没有属性和方法。2511.6.4 制品与类的区别图图11-21所示为类与制品的区别。从图中可以看所示为类与制品的区别。从图中可以看出制品出制品dog.dll由类由类head的实例、类的实例、类leg的实例的实例和类和类body的实例动态链接构成。因此,的实例动态链接构成。因此,dog.dll依赖于依赖于head、leg、body。2611.7 建 模 应 用构件图描述了软件的组成和具构件图描述了软件的组成和具体结构,表
18、示了系统的静态部体结构,表示了系统的静态部分,它能够帮助开发人员从总分,它能够帮助开发人员从总体上认识系统。用户通常采用体上认识系统。用户通常采用构件图来描述可执行程序的结构件图来描述可执行程序的结构、源代码、物理数据库组成构、源代码、物理数据库组成和结构。和结构。2711.7.1 对可执行程序建模在对可执行程序的结构进行建模时,通常应遵从以下在对可执行程序的结构进行建模时,通常应遵从以下原则。原则。(1)标识要建模的构件。(2)理解和标识每个构件的类型、接口和作用。(3)标识构件间的关系。例如,图例如,图11-22是一个自主机器人可执行程序的一部分是一个自主机器人可执行程序的一部分进行建模。进行建模。 2811.7.2 对源代码建模通过构件图可以清晰地表示出软件的所有源文件之间通过构件图可以清晰地表示出软件的所有源文件之间的关系,这样开发者就可以更好地理解各个源代码文的关系,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论