11. 1 基于物理环境部署的系统静态结构建模
当软件处于物理部署阶段时,人们关注的是软件程序在计算机硬件系统中的物理 分布、通信方式和部署方法。例如,当设 计 开 发一个分布式运算的网络应用软件时,根据该系统运行时的用户流最 ,系统的安全性和稳定性等要求,应当建立一个适合软件系统要求的硬件局域或广域网络系统,在这个硬件系统中,还需要设计出服务器的数 最、地理分布点、系统节点之间的通信协议以及相应操作系统等,以 便 达到硬件与软件系统相适应,实 现 用 户 对应用软件性能的最终要求。UML的部署图 ( Deployment Diagram) 用来解决这类建模问题。
11.2 部 署 图
一个 UML 部署图描述系统的 软件如何映射到将要 执行它们的硬件上,用来显示系统中软件和硬件的物理架构 ,是一个运行时的 硬件节点 以及在这些 节点上运行的 软件的静态结构模型。这些软 件(可能是一些构件或类 等)通常被称为制品 ( A r t ifa c t ) , 被部署到的 硬件或者软件环境 被称为节点 ( Nod e ) ,节点 间的通信被建 模为通信路径 ( C o m m un ica t io n P a t h ) 。部署图的表达方式 为:

部署图显示了系统的硬件、在这些硬件上安装的软件以及用千连接异构的机器之 间的中间件。从部署图中可以了解到软件构 件、硬件是如何部署到系统的 物理架构 中的。使用部署图可以显 示系统运行时的结构,同时传达构成应用程序的硬件和软件元素的配置和部署方式。
11. 3 部署图的表示方法
11.3.1 制品
制品是与软件开发过程相关联的实际存在的信息,是被软件开发过程所利用或 通过软件开发过程所生产的一段信息。制品可以是一个模型、描述或软件,它通常以文件的形式存在,可以 是可执行的,例如 EXE文件、二进制文件、DLLs或者 JAR 文件等,也可以是一个数据文件、一个配 置文件、一个用户手册或者一个 HTML 文档。在 UML2.0中,制品可以用千 表示任何可打包的元素 ,这些元素 涵盖了UML中的所有部分。
在 UML 中,制品用右上 角带一个“狗耳朵”标记的矩形框表示 ,如图 11-1 所示。可以在矩形框中标明 制品的名字 ,如图 11- 2 所示。
制品可以有属性 和操作 ,比较常见的是用属性和操作表示制品的配置选项 。属性和操作可以放在制品的 第二栏中 ,如图 11-3 所示的形式 。

制品 拥有制品实例,可以用制品名加下划线的方式来表示一个制品实例,如图 11-4 所示.

一个制品可能是另 一个 UML元素的显示( Manifestation) ,例如 Logging . jar 是Logging Subsystem 构件的显示。 在 UML 1. X 中,这种显示关系被建模为实施(Implementation ) 。 在 UML2.0中用标记< < manifest > > 的虚线箭头表示这种实施关系,如图 1l-5所示。注意 ,这种显 示关系不要求制品名与它显示的其他 UML元素同名。

11.3.2 节点
节点( Node) 是一个能够执行制品的实 体,可以 是硬件 ,但有时也可以 是为其 他软件的 执行 提 供执行 环 境的 软 件。有 两 种 类 型 的节点: 执 行 环 境 ( Execution Environment ) 节点和设备( Device ) 节点。例如一个服务器、客户机或者一个磁 盘驱动器都是典型的设备节点 ,而一个操作 系统 、一个 Web服务器或者一个 J2EE容器就是执行环境节点的例子。 UML2.0用一个 3D风格的盒子表示节点 ,在节点的内部注明节点名,如图 11-6所示。

1. 执行环境节 点
在部署图内部,用 构造型 < < E x e c u tio n E nviro nm e nt > > 和所选 用的执行环境名称来表示执行环境节点 ,执行环境通常是中 间件或操作系统。图 11-7 表示该节点的可执行环境是 J Bos s。

2. 设备节点
设备节点用于表示具体的计算设备,一般是一个单 独的硬件设备。图 11-8 展示了用构造型 << device > >和所选用的设备名称来表示该节点选用的设备是 Desk to p Com put e r。

11.3.3 部署
部署图最重要的部分就是将制品部署在执行它的节点上。UML 2. O 提供了三种方法来表示如何把制品部署到节点中。可以通过将制品绘制在节点中实现对制品的 部署,如图 11 - 9 所示,表示将制品 L ogg in g. ja r 部署在执行环境中间件 ] Bo ss 中,再将] Bo s s 部署在 Desktop C o m p ut er中。

也可以用带构造型< < deploy > > 标签的虚线箭头表示将制品部署在节点中(注意, 箭头指向节点),如图11-10 所示,表示将制品ccvalida tor. jar 部署在设备节点 AppServer中。

更简单地,可以将制品 直接记录在节点 中表示部署关系,如图11- l 1 所示。

如果发现某个节点被放置到了另一个节点中,那就不是部署图,因为部 署只是将制品部署到节点中。
11.3.4 部署规约
为了使部署在节点 上的制品能够执行 ,大多数情 况下需要说明 一些配置参数。这些参数被称为部署规约(DeploymentSpecifica tion ) ,它是一个属性的集合,是一类特殊的制品。它说明其他制品是如何部 署到节点中的,还提供 其他制品如何成功地在节点上运行的 信息。部署规约用构造型<< deployment s pec > > 表示。有两种方法将部署规约绑定到它所描述的部署中,可以用指向制品的依赖箭头将部署规约与制品绑定, 如图 11-12所示

还可以将部署规约用虚线连 接在制品和节点间的部署箭头上,如图 11 -13所示。
部署规约的细节可以作为部 署规约的属性放置在部署规约中,如图 11-14所示。

11.3.5 通信路径
通信路径表示节点间的通信,用 实线表示。图 11 - 1 5 表示 Des k to p C o m p u t e r 将与 W e bS e r ve r 发生通信,而 W e bS er ve r 将与 D a t a ba s e 发生通信。

通信路径支持一个或多个通信协议,例如 J DBC、O DBC、R MI 等。通信协议可以用加在通信路径上的构造型表示。
综合上面对部署图的介绍,图 1 1 -16 展示了一个较复杂的部署图。

11. 4 总 结
本章介绍了部署图。部署图是表示系统运行时节点结构、构件实例及其对象结构的视图,它通过揭示“哪些软件片段运行于哪些硬件片段”上来表明系统的一个物理布局。部署图由制品、节点 和通信路径组成。制品是用于指导软件开发的中间产品,这些中间产品虽不是最终的产品,但它们对最终产品的开发具有指导作用。节点是表示计算资源的、运行时的物理对象 ,是一组运行资源,如计算机、设备或存储器,通常具有内存和处理能力,它可以包含对象和构件实例。通信路径表示节点间的关联。
任何一个复杂的部署都可以很好地应用部署图来表达。它描述了处理节点及运 行在这些节点之上的构件运行时的配置,展示了现实世界环境运行系统的配置的开发 步骤,还描述了在一个实际运行的系统中 ,节点上的资源配置和构件的排列以及构件包括的对象,并 包 括节点间内容的可能迁移。在部署的过程中,必须 决定配置参数,实现资源配置的分布性和并行性。
注意,在 UML 2. 0 中 ,构件不被放置在节点里,而是将其显示为制品。构件代表代码单元在运行时的表现,不作 为运行 时内容的构件不出现在部署图中,它将在构件图中表示。

