构件图与部署图
第12章 配置图/部署图
▪配置图描述了运行软件的系统中硬件和软件的 物理架构。 ▪配置图可以显示计算机节点的拓扑结构和通信 路径、节点上执行的软件构件、硬件设备的配置。 ▪ 配置图中通常包含2个元素:
节点(Node) 关联(Association)
▪ 配置图示例:
一、节点
▪ 节点是在运行时代表计算资源的的物理元素。 ▪ 节点通常拥有一些内存,并具有处理能力。 ▪ 在UML中,节点用一个立方体来表示。
1 节点的种类
在实际的建模过程中,可以把节点分为两种类 型:
① 处理器(ocessor):处理器是能够执行 软件、具有计算能力的节点。
② 设备(Device):设备是没有计算能力的节 点,通常情况下都是通过其接口为外部提供 某种服务。
处理器(Processor) 设备(Device)
▪ 节点属性
➢ 在构件图标中没有标识接口 ➢ 在构件图标中标识了接口
1) 没有标识接口的构件表示法
➢ 第一种是表示为标有构造型《component》的矩形; ➢ 第二种是在矩形的右上角放置一个构件图标(一个小
矩形,并在左侧加上两个突出的更小的矩形);
➢ 第三种是直接使用构件图标,但在UML2.0中已经不使 用第三种方法了。
<<file>> <s{s{<ivivfgegeinrnrlasaselili.o>.ohn>hn==44..11}}
<<file>> <s{s{<ivivgfgeeninrralasslieli.oc>.onp>cn=pp=4p4..11}}
<<<<ffiille>>>> iirrqq..hh
<<file>> device.cpp
4. 编译依赖
当一个程序文件改变后,包含此文件的其它 文件都可能需要重新编译。
public class X {
private Y they; ……
}
public class Y {
private X thex; ……
}
基于泛化的依赖
从子类到超类存在依赖;超类的改变可能 会影响子类。
类A的操作接口中使用了类B
2) 标识接口的构件表示方法也有3种
2. 构件的种类
▪ 在对软件系统建模的过程中,存在3种类 型的构件:
① 源代码构件 ② 二进制代码构件 ③ 可执行代码构件
▪ 源代码构件(编译时构件)
➢ 源代码构件也称为工作产品构件,是开发过程 的产物。如包含源代码或数据的文件、Web文 件、文档。
▪ 二进制构件(连接时构件)
▪ 象类一样,可以为一个节点提供属性描述, 如,处理器速度、内存容量、网卡数量等 属性。可以为节点其提供启动、关机等操 作属性 。
2 节点中的配置
▪ 配置图可以将节点和构件结合起来,以建 模处理资源和软件实现之间的关系。
▪ 当构件驻留在某个节点时,可以将它建模 在图上该节点的内部。
▪ 驻留在节点上的构件
第11章 构件图(Component Diagrams)
▪构件图
➢构件图概述 ➢构件(组件)的表示和分类 ➢构件间的依赖关系
一、 概述
▪ 构件图描述了软件的各种构件和它们之间 的依赖关系。
▪ 构件是定义了良好接口的物理实现单元, 是系统中可替换的物理部件。每个构件体 现了系统设计中的特定类的实现。
▪ 构件图的基本目的是:使系统人员和开发人员能够 从整体上了解系统的所有物理构件。
▪ 同时,也使我们知道如何对构件进行打包,以交付 给最终客户。
▪ 构件图显示了所开发的系统的构件之间的依赖关 系.依赖关系符号(------>)表示构件之间的关系.
二、 构件
1. 构件的表示
每个构件定义了2组接口(一组是供给接口,表明 它能提供的服务,一组是需求接口,表明它需要 的服务). 构件本身已经实现了供给接口声明的功能。 表示构件图标的方法有两种:
对源代码建模
对可执行文件和库建模
对表、文件和文档建模
三、 依赖关系
▪ 把提供服务的构件称为提供者,把使用服务的构件 称为客户
▪ 在UML中,构件图中依赖关系的表示方法是一个由 客户指向提供者的虚线箭头。
供应者不存在该客户就不能活动,或不能被完整 地定义或实现。
通常,当一个构件被修改时,任何依赖于它的 构件可能也必须修改。
▪ 构件可以是源代码构件、二进制构件或一 个可执行的构件。
构件图示例:供销存管理系统
构件图应用
▪ 对可执行程序建模
可以清晰地表示出各个可执行文件、链接库、数 据库、帮助文件和资源文件等其它可运行的物理 构件之间的关系。
语音呼叫中心程序 callcenter.exe
构件图应用……
▪ 对源代码进行建模 可以清晰地表示出软件的所有源文件之间的关系, 有了这样的构件图,开发者能更好地理解各个 源代码文件之间的依赖关系。
对节点内驻留的构件描述
▪ 可以在节点和构件之 间添加一条表示依赖 关系的虚线箭头,并 使用构造型来表示节 点对构件的包容。
public class A {
public void anOperation(B theB){ …… } }
类A包含一个类型为B类的属性
public class A { private B alink; ……
}
系统的设计要尽量避免循环依赖。
这样可以由下向上访问它的构件,每次只考 虑一个构件。
库存控制系统的依赖图
“使用”依赖(没有注明的依赖)是传递的。
常见的依赖关系 1. 引入源代码
▪ Java中, 可以在源文件中引入包
▪ C++中, 在文件中引入头文件
2.编译依赖
源文件和目标文件之间存在着依赖,源文件的任 何改变必须重新编译并生成目标代码。
3. 档案文件和库
(目标文件的集合,包含其他构件的构件,在java 中为jar文件)
➢ 源代码构件编译后产生的目标代码,如静态库 或动态库。
▪ 可执行构件(运行时构件)
➢ 表示处理机上运行的一个可执行单元。数据库 表也可看作运行时使用的构件。
<<file>> <s{<ivs{ifgevginrenrlasaselili.>.ooh>hnn==33..55}}
<s{<s{<iviv<gfgeefninrrialaslselieli.o>h>.on>>hn==44..00}} <i<in<n<fttefieirllrpeep.>c>.>p>cppp