1、第第8 8章章 构件构件图与部署图图与部署图计算机科学与技术计算机科学与技术 构件图与部署图构件图与部署图系统模型的大部分图是反应系统的逻辑和设计方面系统模型的大部分图是反应系统的逻辑和设计方面的信息,它们独立于系统的最终实现单元。前面几的信息,它们独立于系统的最终实现单元。前面几章介绍的章介绍的UMLUML图形,主要是对系统的行为结构、静态图形,主要是对系统的行为结构、静态结构和动态结构进行结构建模。结构和动态结构进行结构建模。在完成系统的逻辑设计之后,需要进一步描述系统在完成系统的逻辑设计之后,需要进一步描述系统的物理实现和物理运行情况。为描述系统实现方面的物理实现和物理运行情况。为描述系
2、统实现方面的信息,使系统具有可重用性和可操作性的目的,的信息,使系统具有可重用性和可操作性的目的,在在UMLUML中通过构件图和部署图来表示实现单元。中通过构件图和部署图来表示实现单元。构件与构件图构件与构件图构件构件(component)(component)作为一种作为一种模块单位模块单位,具有明确,具有明确定义的定义的接口接口,在其环境中,在其环境中可被替换可被替换。构件图是对面向对象系统的物理方面建模时使用构件图是对面向对象系统的物理方面建模时使用的两种图之一(另一种图是部署图),用于描述的两种图之一(另一种图是部署图),用于描述软件软件构件以及构件之间的组织和依赖关系构件以及构件之间
3、的组织和依赖关系。构件。构件图可看作是类图或复合结构图的扩展。图可看作是类图或复合结构图的扩展。一个构件可能承载在一个或多个制品一个构件可能承载在一个或多个制品(artifact)(artifact)文件中,制品可部署在执行环境中。文件中,制品可部署在执行环境中。 构件概念及表示构件概念及表示构件(component)也称为组件,表示系统中的一种模块。一个构件封装其内容,其承载文件在其环境中可被替换。供口和需口的显式表示供口和需口的显式表示构件的表示构件的表示 构件概念及表示构件概念及表示装配连接器的等价描述装配连接器的等价描述 两个构件之间通过装配连接器相连接两个构件之间通过装配连接器相连接
4、 构件构件 构件可以分为以下三种类型:构件可以分为以下三种类型:部署构件部署构件(Deployment Component) (Deployment Component) 如如dlldll文件、文件、exeexe文件等文件等. .工作产品构件(工作产品构件(Work Product ComponentWork Product Component) 源代码文件、数据文件等,用来产生部署组件源代码文件、数据文件等,用来产生部署组件执行构件(执行构件(Execution ComponentExecution Component) 系统执行后产生的组件。如系统执行后产生的组件。如EjbEjb、com+
5、com+对象、对象、CorbaCorba对象等对象等构件的特性构件的特性 构件作为一种特殊的结构化类,具有类的特性,构件作为一种特殊的结构化类,具有类的特性,如封装性、继承性和多态性。但构件更强调其如封装性、继承性和多态性。但构件更强调其重重用性用性,而重用性则取决于构件如何定义、如何实,而重用性则取决于构件如何定义、如何实现、以及如何使用。现、以及如何使用。构件是基于构件是基于接口定义接口定义的。的。构件的内部实现是自包含构件的内部实现是自包含(self-contained)(self-contained)的。的。构件的使用是可替换构件的使用是可替换(substitutable)(subst
6、itutable)的。的。 构件区别于类,主要在于其构件区别于类,主要在于其接口定义接口定义、自包含自包含、可替换可替换。另外,构件可以是物理性的设计,如。另外,构件可以是物理性的设计,如JavaBeanJavaBean或或EJBEJB构件,而类是纯逻辑性的设计,逻构件,而类是纯逻辑性的设计,逻辑性设计的类可能要最终实现为物理性的构件。辑性设计的类可能要最终实现为物理性的构件。构件的视图构件的视图构件比类更复杂,需要多种视图来观察。构件比类更复杂,需要多种视图来观察。外部视图外部视图: :一个构件有一个外部视图一个构件有一个外部视图( (或称为黑或称为黑盒视图盒视图) ),主要,主要观察其公共
7、的性质和操作观察其公共的性质和操作。在构件框内表示接口及其操作在构件框内表示接口及其操作 构件的视图构件的视图用嵌套方式表示一个用嵌套方式表示一个构件内部的实现类构件内部的实现类 内部视图:一个构件也有一个内部视图内部视图:一个构件也有一个内部视图(或称白盒视图或称白盒视图),主要观察其内部私有性质和实现类元。,主要观察其内部私有性质和实现类元。 用多个隔间表示构件的用多个隔间表示构件的内部视图内部视图 构件之间的关系构件之间的关系 构件属于一种特殊的类,所以类之间的关系,构构件属于一种特殊的类,所以类之间的关系,构件之间都可能有。但一般来说,构件图中经常需件之间都可能有。但一般来说,构件图中
8、经常需要描述构件之间的要描述构件之间的包含、依赖包含、依赖这两种关系。这两种关系。一个构件内部可包含多个构件一个构件内部可包含多个构件 构件之间的关系构件之间的关系构件之间的依赖关系构件之间的依赖关系连接器连接器( (连接件连接件) ) 连接器连接器(connector)(connector):委托:委托(delegation)(delegation)和装配和装配(assembly)(assembly) 委托:将构件的外部约定委托:将构件的外部约定( (由端口确定由端口确定) )连接到内部行为实现之上连接到内部行为实现之上,表示信号,表示信号( (请求操作和事件请求操作和事件) )的转接。在端
9、口上接收到的信号被的转接。在端口上接收到的信号被传递到某个部件或另一个端口上进行处理。传递到某个部件或另一个端口上进行处理。 委托连接器只能定义在两个同类的接口或端口之间,即在两个供委托连接器只能定义在两个同类的接口或端口之间,即在两个供口之间,或者在两个需口之间。口之间,或者在两个需口之间。 装配装配: :位于两个构件之间,一个构件提供服务,另一个构件请求位于两个构件之间,一个构件提供服务,另一个构件请求服务服务 装配:供口可以是需口的子类型装配:供口可以是需口的子类型JavaBean构件JavaBeanJavaBean是是JavaJava平台平台中最基础、最简单、中最基础、最简单、最常见的
10、构件。最常见的构件。本质上,本质上,JavaBeanJavaBean只只是按一定规则特殊设是按一定规则特殊设计的类。计的类。 一个JavaBean构件的例子 Applet构件Applet是在是在Web浏览器上运行的一种浏览器上运行的一种Java构件。任何一种构件。任何一种Web浏浏览器,只要支持览器,只要支持Java虚拟机,就能运行虚拟机,就能运行Applet构件。一个构件。一个Applet是一个特殊设计的是一个特殊设计的Java类,编译之后的字节码与网页放在服务器类,编译之后的字节码与网页放在服务器端,并在网页中用端,并在网页中用APPLET标记来引用这个标记来引用这个Applet类。类。S
11、ervlet构件 Servlet构件的类型结构构件的类型结构 Servlet构件的生命周期构件的生命周期 Servlet是运行在是运行在Web服务器端的一种服务器端的一种Java构件。构件。Servlet构件由构件由一种容器来管理,根据用户的请求产生动态的内容。这种容器也一种容器来管理,根据用户的请求产生动态的内容。这种容器也被称为被称为Servlet引擎,作为引擎,作为Web服务器的扩展。服务器的扩展。 构件图示例构件图示例 图书管理系统构件图图书管理系统构件图构件图示例构件图示例 源代码构件图源代码构件图构件图示例构件图示例 构件图构件图-网络购物系统网络购物系统 用户需求:用户需求: 顾
12、客首先需要使用系统提供的商品浏览页面来浏览网站顾客首先需要使用系统提供的商品浏览页面来浏览网站所提供的商品所提供的商品 了解商品的详细情况了解商品的详细情况 购买该商品购买该商品 将该商品加入自己的购物车将该商品加入自己的购物车 浏览和挑选其他商品浏览和挑选其他商品 通过结帐系统通过结帐系统 对自己所挑选的商品进行付款对自己所挑选的商品进行付款构件图示例构件图示例 构件图构件图-网络购物系统网络购物系统 系统划分:系统划分: 商品浏览系统商品浏览系统 商品资料库商品资料库 购物车购物车 结帐系统结帐系统 构件图示例构件图示例 构件图构件图-网络购物系统网络购物系统 主要构件:主要构件: 构件图
13、示例构件图示例 构件图构件图-网络购物系统网络购物系统 构件图:构件图:何时使用构件图何时使用构件图在以下情况下可选择使用构件图:在以下情况下可选择使用构件图: 构件作为主要建模元素,尽管可能有类,但构件作为主要建模元素,尽管可能有类,但一般只是引用已定义的类。一般只是引用已定义的类。 关注构件的内部结构,即构件内的实现类元关注构件的内部结构,即构件内的实现类元( (类和接口类和接口) ),以及内部构件组成。,以及内部构件组成。 关注构件之间的连接,而不关注构件作为类关注构件之间的连接,而不关注构件作为类的特征的特征( (性质和操作性质和操作) )描述。描述。 描述特定平台的构件结构,如描述特
14、定平台的构件结构,如JavaBeanJavaBean、AppletApplet、ServletServlet、EJBEJB、COM+COM+与与.NET.NET构件等构件等。制品、结点与部署图制品、结点与部署图制品、结点与部署图制品、结点与部署图 部署与部署图确定了一组构造元素,用于定部署与部署图确定了一组构造元素,用于定义系统的物理架构。义系统的物理架构。 制品制品(artifact)(artifact)反映了类或构件等逻辑元素反映了类或构件等逻辑元素的物理存在形式。的物理存在形式。 结点结点(node)(node)反映了计算机及网络结构,以及反映了计算机及网络结构,以及软硬件结构。软硬件结
15、构。 部署部署(deploy)(deploy)表示了一件制品被定位到一个表示了一件制品被定位到一个结点上。结点上。 部署图能描述软件制品及其间的关系。部署图能描述软件制品及其间的关系。 部署图能描述结点及其间关系,也描述了可部署图能描述结点及其间关系,也描述了可执行的软件制品如何部署和运行在结点上。执行的软件制品如何部署和运行在结点上。 制品制品制品(artifact)(artifact)也称为工件,用于对各种文也称为工件,用于对各种文件进行建模。件进行建模。一件制品实例一件制品实例制品承载构件制品承载构件file表示系统中的一般性文件,其它表示系统中的一般性文件,其它都是其子类。都是其子类。
16、document表示一般性文档,表示一般性文档,source表示源文件,可编译为可执表示源文件,可编译为可执行文件。行文件。executable表示可执行文件。表示可执行文件。library表示静态或动态的库文件。表示静态或动态的库文件。script表示脚本文件。表示脚本文件。. 制品制品之间的关系制品之间的关系结点一个结点表示为一个一个结点表示为一个立方体。立方体。结点之间聚合关系结点之间聚合关系和和通信路径通信路径 结点结点(node)表示计算资源,软件制品可部署在结点上运表示计算资源,软件制品可部署在结点上运行。结点之间可通过通信路径互联,以定义网络结构。行。结点之间可通过通信路径互联,
17、以定义网络结构。结点之间的关系,一般类之间的关系。结点之间的关系,一般类之间的关系。结点两种具体结点:设备和执行环境两种具体结点:设备和执行环境设备设备(device):(device):物理性的计算资源,具有一定的处理物理性的计算资源,具有一定的处理能力,特定的制品可不在特定设备上运行。能力,特定的制品可不在特定设备上运行。执行环境执行环境(execution environment)(execution environment)为特定种类的构件提供某种运行环境,为特定种类的构件提供某种运行环境,使这些构件作为可执行制品能部署运行在执行环境之使这些构件作为可执行制品能部署运行在执行环境之中。
18、中。操作系统、操作系统、数据库系统、数据库系统、各种应用服务器系统各种应用服务器系统 部署可执行软件最终要部署运行在客户的环境中才能发可执行软件最终要部署运行在客户的环境中才能发挥作用。挥作用。部署部署(deploy)(deploy)是一种特殊的依赖关系是一种特殊的依赖关系, ,一个部署表示一个部署表示了一件制品或制品实例被定位到一个部署目标上,了一件制品或制品实例被定位到一个部署目标上,通常是一个结点。通常是一个结点。 方式方式1: 用构造型表示部署用构造型表示部署方式方式2:制品表示在结点之内:制品表示在结点之内方式方式3:结点内列举被部署的制品:结点内列举被部署的制品部署规范部署规范 部
19、署规范部署规范(deployment specification)(deployment specification)是一种特殊的制是一种特殊的制品,通过一组性质来确定部署在特定结点上的特定制品品,通过一组性质来确定部署在特定结点上的特定制品的一组执行参量,其主要目的是配置制品的执行环境。的一组执行参量,其主要目的是配置制品的执行环境。 部署规范及其实例部署规范及其实例用依赖从部署规范指向被部署制品用依赖从部署规范指向被部署制品 部署规范表示为对部署的描述部署规范表示为对部署的描述 部署图示例部署图示例 网络购物系统为例网络购物系统为例 系统需要的硬件设备系统需要的硬件设备 个人计算机:用于顾
20、客使用,通过网络使用购个人计算机:用于顾客使用,通过网络使用购物系统物系统 数据库服务器:用来保存系统中商品的详细信数据库服务器:用来保存系统中商品的详细信息等息等 应用服务器:用来运行网络购物系统应用服务器:用来运行网络购物系统 打印机:需要纸制品时,进行打印打印机:需要纸制品时,进行打印 防火墙:保证整个网络购物系统的安全防火墙:保证整个网络购物系统的安全部署图示例部署图示例 网络购物系统为例网络购物系统为例何时使用部署图何时使用部署图如果系统中软件制品的种类多,例如一个如果系统中软件制品的种类多,例如一个J2EEJ2EE系统涉及到系统涉及到JSPJSP、javajava、classcla
21、ss、jarjar、xmlxml等多等多种制品。如果制品数量较大,而且结构复杂,种制品。如果制品数量较大,而且结构复杂,此时需要部署图来描述制品及制品之间关系。此时需要部署图来描述制品及制品之间关系。如果系统的执行环境比较复杂,存在多个结点如果系统的执行环境比较复杂,存在多个结点或者多种执行环境,不同的制品要运行在不同或者多种执行环境,不同的制品要运行在不同的执行环境中,就需要部署图来描述不同的设的执行环境中,就需要部署图来描述不同的设备和执行环境。备和执行环境。如果软件制品的部署比较复杂,而且部署本身如果软件制品的部署比较复杂,而且部署本身就需要一个执行过程,此时就需要部署图作为就需要一个执
22、行过程,此时就需要部署图作为导航。导航。 Rational Rose Rational Rose 截图截图练习题练习题 UMLUML构件的特性不包括(构件的特性不包括( )。)。 A A可替换可替换 B B基于接口的定义基于接口的定义 C C自包含、自治自包含、自治 D D完备性完备性 构件图的组成不包括(构件图的组成不包括( ) A A接口接口 B B构件构件 C C发送者发送者 D D依赖关系依赖关系 部署图的组成不包括(部署图的组成不包括( ) A A执行环境执行环境 B B构件构件 C C设备设备 D D连接连接 关于部署图,下面哪一种说法不正确?关于部署图,下面哪一种说法不正确? A A一个制品一个制品artifactartifact可承载(可承载(manifestmanifest)一个或多个构件)一个或多个构件 B B两个制品之间可说明依赖关系两个制品之间可说明依赖关系 C C所有的制品都要部署运行在结点上所有的制品都要部署运行在结点上 D D结点之间可用关联来说明通信路径结点之间可用关联来说明通信路径