构件图与部署图
包图 构件图 与部署图

包图中的关系
2、泛化关系 包间的泛化关系类似于类间的泛化关系,使
用一般包的地方,可以用特殊包代替。 在系统设计中,对某一个特定的功能,有多
种实现方法。例如,实现多数据库支持;实 现B/S和C/S双界面。这时就需要定义一 些高层次的“抽象包”和实现高层次功能的 “实现包”。
13
泛化关系
例如,说明GUI有 两种风格:一种是基 于WinForm的 C/S风格,一种是 WebForm的B/S 风格。
15
创建包图
1.标识候选包的原则:
把类图中关系紧密的类放到一个包中; 在类继承类层次中,把不同层次的类放在不同
的包中。
也可以把用例模型作为包的来源。然而,用 例横跨分析包是非常普遍的——一个用例可 以由几个不同包中的类实现。
16
创建包图
2.调整候选包 在已经识别一组候选包后,然后减少包间依
《import》关系:最普遍的包依赖类型,说明提供者包的命 名空间将被添加到客户包的命名空间中,客户包中的元素也能 够访问提供者包的所有公共元素。
《access》关系:如果只想使用提供者包中的元素,而不想将 两个包合并,则应使用该关系。在客户包中必须使用路径名,才 能访问提供者包中的所有公共元素。
分解 是软件开发中控制软件复杂性的重要
手段。 在OO方法中, 需要考虑如何把相关的类放
在一起。 把语义相近并倾向于同一变化的元素组织起
来加入同一个包中,以便于理解和处理整个 模型。
2
为什么要包
包的作用是: 1)对语义上相关的元素进行分组 2)定义模型中的“语义边界” 3)提供配置管理单元 4)在设计时,提供并行工作的单元 5)提供封装的命名空间,其中所有名称必 须唯一
3
08,09构件图和部署图

1 构件图概要
构件图用于静态建模, 构件图用于静态建模,是表示构件类型的组织以 及各种构件之间依赖关系的图。 及各种构件之间依赖关系的图。 构件:可替换的物理部分,包括软件代码、脚本 构件:可替换的物理部分,包括软件代码、 或命令行文件,也可以表示运行时的对象,文档, 或命令行文件,也可以表示运行时的对象,文档, 数据库等。 数据库等。 构件图通过对构件间依赖关系的描述来估计对系 统构件的修改给系统可能带来的影响。 统构件的修改给系统可能带来的影响。
部署图
1 部署图概要 部署图用于静态建模, 静态建模 部署图用于静态建模,是表示运行时过程节点结 构件实例及其对象结构的图。 构、构件实例及其对象结构的图。 如果含有依赖关系的构件实例放置在不同节点上, 如果含有依赖关系的构件实例放置在不同节点上, 部署视图可以展示出执行过程中的瓶颈。 部署视图可以展示出执行过程中的瓶颈。 部署图的两种表现形式: 部署图的两种表现形式:实例层部署图和描述层 部署图(会在后面的实例中给出 会在后面的实例中给出)。 部署图 会在后面的实例中给出 。
5 关于部署图与构件图
部署图与构件图相同的构成元素: 部署图与构件图相同的构成元素: 构件、接口、构件实例、构件向外提供服务、 构件、接口、构件实例、构件向外提供服务、构件要 求外部提供的服务。 求外部提供的服务。 部署图与构件图的关系: 构件图的关系 部署图与构件图的关系: 部署图表现构件实例; 部署图表现构件实例; 构件图表现构件类型的定义。 构件图表现构件类型的定义。 部署图偏向于描述构件在节点中运行时的状态, 部署图偏向于描述构件在节点中运行时的状态,描述了构 件运行的环境; 件运行的环境; 构件图偏向于描述构件之间相互依赖支持的基本关系。 构件图偏向于描述构件之间相互依赖支持的基本关系。
第08章_构件图和部署图下载

PC和外设与ISP连接的部署图
3.构件的部署 可以把系统运行时的构件分布在特定的硬件节点上 来展示系统的架构。下图演示了UserInterface、 BusinessLogic和Backendfunctionality等构件如何在 服务器和客户机硬件中的部署。
4. 如何建模部署图
创建部署图含有如下4项任务:
<<Client>>
PC
<<Internet>>
<<ApplicationServer>> <<DatabaseServer>> <<100BaseT>> Weblogic <<100BaseT>> Oracle Apache_Weblogic
<<WebServer>>
部署图的例子:
10.3 部署图的例子
包体包含类的操作代码.
(2) 接口
构件通过其他组件的接口调用其他构件中定义的操作.
通过命名接口,可以避免在系统的各个构件中直接产生 依赖关系, 有利于构件的替换.
(2) 接口 构件与接口之间的关系: 实现关系和依赖关系
导出接口
导入接口
(3) 依赖关系
为了便于组件之间替换,建议使用如下依赖关系:
3.构件的表示
在UML中,构件通过以下形式来表示:
基本构件
带版型的构件
(1) 构件 Rose中的扩展构件
子程序说明是一组子程序集 合名, 其中不包括类定义.
子程序体表示子程序的实现.
(1) 构件 Rose中的扩展构件
主程序是包含程序根的文件.
(1) 构件 Rose中的扩展构件
构件图与部署图

45
构件图分类
(1)用户界面层:采用JSP页面实现用户界面。 我们通过构造型《Java Server page》来表示构 件。这一部分的构件,主要由边界类组成。
13
构件图的作用
构件图的基本目的是:使系统人员和开发人 员能够从整体上了解系统的所有物理部件, 同时,也使我们知道如何对构件进行打包, 以便交付给最终客户,最后,构件图显示了 被开发系统所包含的构件之间的依赖关系。
构件图从软件架构的角度来描述一个系统的 主要功能,如系统分成几个子系统,每个子 系统包括哪些类、包和构件,它们之间的关 系以及它们分配到哪些节点上等。
一个构件图可以表示一个系统全部或者部分的构件 体系。从组织内容看,构件图显示软件构件的组织 以及构件之间的依赖关系,包括源代码构件、二进 制代码构件以及可执行构件。
构件图是对OO系统物理方面建模的2个图之一。
9
构件图的概念
构件图主要用于描述各种软件构件之间的依 赖关系,例如,可执行文件和源文件之间的 依赖关系,所设计的系统中的构件的表示法 及这些构件之间的关系构成了构件图。
将整个“在线酒店预订子系统”作为一个构件,考虑 其对外接口。显然它首先需要提供用户界面;其次 还需要与加盟的酒店系统连接,完成预订工作
35
绘制构件图
确定子构件和接口
显然要有一个构件来实现用户界面,一个构件来完 成与酒店系统的连接和预订,另外还应该有一个负 责将用户的需求与酒店的供给进行匹配的“调度程 序”
提供服务
※
※ 售票处需要付款和购买提 供服务
构件图与部署

使用菜单栏或浏览器添加构件的步骤如下:01 选择Tools | Create | Component命令,此时光标变为“+”号。如果使用浏览器,可右键单击需要添加的包,在弹出的快捷菜单中选择New | Component命令,此时光标也变为“+”号。 以下的步骤与使用工具栏添加构件的步骤类似,按照前面使用工具栏添加构件的步骤添加即可。
部门 / 时间 / 姓名
1 构件图与部署图的基本概念 1.1 构件的基本概念 在构件图中,将系统中可重用的模块封装为具有可替代性的物理单元,称为构件,它是在一个系统或子系统中的封装单位,提供一个或多个接口,是系统高层的可重用部件。
虚包是一种只包含对其他包的元素进行引用的构件。
系统是指组织起来以完成一定目的的连接单元的集合,在系统中肯定有一个文件用来指定系统的入口,也就是系统程序的根文件,这个文件被称为主程序。子程序规范和子程序体是用来显示子程序的规范和实现体。 主程序 子程序规范和子程序体 包规范和包体 任务规范和任务体
在部署图中添加节点之间的连接的步骤如下:
02
单击图标,或者选择Tools | Create | Connection命令,此时的光标变为“↑”符号。
03
单击需要连接的两个节点中的任意一个节点。
04
将连接的线段拖动到另一个节点中即可。
如果要将连接从节点中删除,可以通过以下的步骤进行:
选中该连接。
按Delete键或者单击右键,在弹出的快捷菜单中选择Edit | Delete命令即可。
确定系统构件
可以与确定用例中的类和对象一样,根据用例的流程确定系统的构件。
将系统中的类和接口等映射到构件中 将系统中的类、接口等逻辑元素映射到构件中,一个构件不仅仅包含一个类或接口,也可以包含几个类或接口。
UML部署图和图九组件图

UML部署图和图九组件图前⾔UML⼤部分描写叙述了逻辑和设计⽅⾯的信息。
实现图⽤来描写叙述实现⽅⾯的信息。
实现图包含部署图和构件图。
构件图1. 概念构件图从软件架构的⾓度来描写叙述⼀个系统的主要功能。
如⼦系统、类、包、构件。
⽤来显⽰⼀组构建之间组织与依赖的关系。
2. 构成构件、接⼝、关系3. 构件的类型源码构件、⼆进制构件、可运⾏构件、数据⽂件或⽂档4. 构件和类的关系(1)类表⽰逻辑抽象⽽构件表⽰物理抽象(2)构件是其他元素的物理实现(3)类能够直接拥有属性和操作,构件⼀般仅仅有通过接⼝訪问的操作5. 构件的特点物理的、可替换的、是系统的⼀部分、从⼀组接⼝并提供对⼀组接⼝的实现6. 构件与接⼝的关系实现、依赖、⽰出、进⼊7. 以下是我的机房收费的构件图。
眼下感觉理解的还是不够透彻,先画出来以后学的深了再改进部署图1. 概念⽤来显⽰系统中软件和硬件的物理架构。
⼀个系统仅仅有⼀个部署图。
2. 部署图元素节点、节点实例、物件、关系、节点容器3. 使⽤条件对复杂的分布式软件使⽤部署图4. 长处部署图判断软件的所需的处理器和设备的拓扑结构5. ⼀个良好的部署图:(1)每⼀个实施图是系统的⼀个⽅⾯(2)側重⼀个⽅⾯(3)仅仅包括必要元素和必要修饰(4)避免交叉、名字要能概括你功能6.以下是我的机房收费的部署图,不⾜之处欢迎⼤家积极指正UML仍在路上(尾声)通过以上连续的五篇博客,对UML中的9+1(包图)个图结合之前敲的机房收费系统做了总结。
前五篇博客将关系联系紧密的两两放在⼀起更有助于对照理解这些图。
UML语⾔使系统建模过程标准化,统⼀化。
规范化。
UML在整个软件开发过程中採⽤同样的概念和表⽰⽅法。
在不同的开发阶段,不必转换概念和表⽰⽅法。
避免了传统软件开发⽅法的两个鸿沟。
UML採⽤图形化的表现形式。
产⽣的模型易于理解。
易于开发者与⽤户之间的沟通。
从⽽可以及时得到⽤户的反馈信息。
⽤UML进⾏系统建模所得到的建模制品不只包含各种模型框图,还有⼤量丰富的⽂档。
理论5--协作图,构件图和部署图

9/23
6.7.1 构件图
构件图显示构件类型的定义、内部结构和依赖。 构件是系统设计的模块化部分,它给出一组外部的接 口,而隐藏了它的实现。在系统中满足相同接口的构 件可以自由地替换。
10/23
说明: • 构件图是对OO系统的物理方面建模的两个图 之一。 • 构件图显示一组构件以及它们之间的相互关 系。 • 构件图可以显示软构件之间的依赖关系,可 以用来显示编译、链接或执行时构件之间的 依赖关系。
3/23
iteration-expression表示有条件地或重复地执行,它 有如下两种形式: *[iteration-clause] (表示重复) [condrtion-clause] (表示分支) 这里iteration-clause是重复条件(循环执行的条件), 即循环执行,如1.1*[x=1..10]:dosomething( )。 第二种形式中的condition-clause用于指定分支,如[x < 0],[x >= 0],表示仅执行条件为真的分支(发送 的消息连接到那个分支)。
12/23
• 构件和类之间的不同点:
类是逻辑抽象,构件是物理抽象, (1) 类是逻辑抽象,构件是物理抽象,即构件可 以位于节点(node) (node)上 以位于节点(node)上。 (2) 构件是对其它逻辑元素,如类,协作 构件是对其它逻辑元素,如类, (collaboration)的物理实现 的物理实现。 (collaboration)的物理实现。 类可以有属性和操作;构件通常只有操作, (3) 类可以有属性和操作;构件通常只有操作, 而且这些操作只能通过构件的接口才能使用。 而且这些操作只能通过构件的接口才能使用。
13/23
• 构件和接口之间的两种关系:dependency和 realization。 例:
Chapter 08-包图、构件图和部署图

Copyright By Chd.Wang,E-Mail:Chdwang@
20
构件与构件图
构建的分类
按照构件在系统中扮演的角色,分为: 配置构件:组成系统的基础构件,是执行其他构件 的基础平台,如OS、Java虚拟机(JVM)、DBMS等 工作产品构件:开发过程的中间产物,如创建构件 的源代码文件、数据文件等,不直接参与系统运行 执行构件:系统运行时创建的构件,如由DLL实例化 的COM+对象,Servlets、XML文档等
示例理解
Copyright By Chd.Wang,E-Mail:Chdwang@
13
绘制包图
步骤
寻找包 确定包之间的关系 标出包内元素的可见性
最大限度减少包之间的依赖 包封装时,避免包之间的循环依赖 最小化每个包的public、protected元素个数 最大化每个包的private元素个数
构件图分类
简单构件图
个人图书馆管理系统的局部构件图 以构件为单位,系统分为3层 用户界面层 版型<<Java Server Page>>表示由边界类实现的JSP 用户界面 业务逻辑层 版型<<Java Beans>>表示由实体类实现的业务逻辑 数据访问层 所有数据访问操作都封装在一个<<Java Beans>>中 (大型应用封装在EJB中),是JDBC的一个实现
包与包图
包
一种组合机制,用于模型的逻辑组织 UML包对应于Java包 一个Java包可能包含其他包或类
描述包及其关系的图 基本元素:包、注释、约束 包可以拥有:类、接口、构件、节点、协作、用例 、子包等元素 一个元素只能属于一个包 包间关系:依赖关系和泛化关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
38
实例1:ATM系统的构件图:一个执行文件构件和两个包文件 构件。
39
实例2
选课系统的构件图
40
实例3
※ ※
※
※
※
※
※
※
图中依赖关系包括: 顾客需要信息亭接口提供 服务 售票员需要职员接口提供 服务 信用卡付款需要信用卡代 理提供服务 职员接口需要预订销售、 个人销售和团体销售提供 服务 管理接口需要数据库状态 提供服务 售票处需要付款和购买提 供服务 等等……
14
构件图的作用
使用构件图可以清楚地看出系统的结构和功 能。方便项目组的成员制定工作目标和了解 工作情况,同时,最重要的一点是有利于软 件的复用。 从宏观的角度上,构件图把软件看作多个独 立构件组装而成的集合,每个构件可以被实 现相同接口的其它构件替换。
15
构件的表示
构件是定义了良好接口的物理实现单元,是 系统中可替换的物理部件。 构件可以是源代码构件、二进制构件或一个 可执行的构件。 在UML中,构件用一个左侧带有突出两个小 矩形的矩形来表示。
对于一个构件而言,它包含5个要素:
1)接口声明:每个构件包含两组接口,一组是 供给接口,表明它能提供的服务,一组是需求 接口,表明它需要的服务。 2)接口实现:构件是一个物理部件,它实现了 供给接口声明的服务。 3)构件标准:在创建构件时,每一个构件必须 遵从某种构件标准。 4)封装方法:也就是构件遵从的封装标准。 5)部署方法:一个构件可以有多种部署方法。
导出接口
导入接口
44
为了便于构件之间替换,建议使用以上依赖关系
构件图分类
构件图可以分为两种:简单构件图和嵌套构 件图。 1 简单构件图
我们可以把相互协作的类,组织成一个构件。 利用构件图可以让软件开发者知道系统是由哪 些可执行的构件组成的,这样,以构件为单位 来看待系统时,让开发者清楚的看到软件系统 的体系结构。
32
构件图
基本构件图
33
构件图
嵌套构件图
34
绘制构件图
确定子系统对外的接口
将整个“在线酒店预订子系统”作为一个构件,考虑 其对外接口。显然它首先需要提供用户界面;其次 还需要与加盟的酒店系统连接,完成预订工作
35
绘制构件图
确定子构件和接口
显然要有一个构件来实现用户界面,一个构件来完 成与酒店系统的连接和预订,另外还应该有一个负 责将用户的需求与酒店的供给进行匹配的“调度程 序”
2
构件图
接口是被软件或硬件所支持的一个操作集合, 每个接口有一个名称,通过使用命名的接口, 可以避免在系统的各个构件之间直接发生依 赖关系,有利于新构件的替换。
3
构件的概念
从构件组成上看,每个构件定义了2组接口 (一组供给接口,一组需求接口),构件为供 给接口提供了提供了功能实现部分。
4
•没有标识接口的构件的图形的三种表示法
22
构件的表示
标识接口的构件表示法
对于一个构件而言,它有两类接口:提供(provided)接口 和所需(required)的接口。标识接口的构件表示方法也有3 种。
•标识接口的构件3种表示方法
23
构件的表示
(1)使用接口分栏表示:也就是将所需的接口和 提供的接口直接显示在矩形的分栏中,将构造型 《provided》和《required》放在每个接口名之 前。 (2)使用图标表示法:将接口的图标连接到矩形 的边框上,共给接口表示为通过一条实线链接到矩 形上的圆圈;而需求接口则表示为一条实线链接到 矩形上的上半圆。 (3)显示表示法:接口也可以用完整的显示形式 表示,构件和其提供的接口之间是实现关系,而构 件和其所需的接口之间是使用《use》关系。
41
接口
接口用于描述构件所提供的服务的一组操作 集合,指定了构件的外部可见操作。构件和 接口之间的关系叫做实现关系。可以通过接 口访问一个构件。 接口和构件之间的关系分为两种:
实现关系(Realization) 依赖关系(Dependency)
在图中,接口和构件之间用实线连接表示实现关系; 而接口和构件之间用虚线箭头连接则表示依赖关系。
36
绘制构件图
对可执行程序的结构建模
首先识别你想建模的构件集合
考虑集合中各构件的不同类型
对这个集合中的每个构件,分析它们之的关系
37
绘制构件图
对源代码建模
识别相关源代码文件的集合,建模为构件; 对于较大的系统, 利用包来进行分组; 通过约束来表示源代码的 版本号、作者和最后修改 日期等信息; 用依赖关系来表示这些 文件间编译的依赖关系
5
构件与类
从构件的定义上看,构件和类十分相似:
二者都有名称,都可以实现一组接口,都可以 参与依赖、泛化和关联关系,都可以被嵌套, 都可以有实例,都可以参与交互。
6
构件与类
构件与类的区别:
(1)类表示是对实体的抽象,而构件是对存在 于计算机中的物理部件的抽象。也就是说,构 件是可以部署的,而类不能部署。 (2)构件属于软件模块,而非逻辑模块,与类 相比,它们处于不同的抽象级别。甚至可以说, 构件就是由一组类通过协作完成的。 (3)类可以直接拥有操作和属性,而构件仅拥 有可以通过其接口访问的操作。
9
构件图的概念
构件图主要用于描述各种软件构件之间的依 赖关系,例如,可执行文件和源文件之间的 依赖关系,所设计的系统中的构件的表示法 及这些构件之间的关系构成了构件图。 与所有UML的其它图一样,构件图可以包括 注释、约束、包。
10
Hale Waihona Puke 构件图的概念11构件图的概念
12
构件图的基本概念
• 构件图是用来表示系统中构件与构件之间,以及定义的类或接口与构件之 间的关系的图。在构件图中,构件和构件之间的关系表现为依赖关系,定 义的类或接口与类之间的关系表现为依赖关系或实现关系。
8
构件图的概念
构件图提供当前模型的物理视图,对系统的静态实 现视图建模。构件图显示一个系统物理设计时,构 件所映射的类和对象的配置。 一个构件图可以表示一个系统全部或者部分的构件 体系。从组织内容看,构件图显示软件构件的组织 以及构件之间的依赖关系,包括源代码构件、二进 制代码构件以及可执行构件。 构件图是对OO系统物理方面建模的2个图之一。
18
构件图和部署图的基本概念
• 有一些构件的图标表示形式和标准构件图形表示形式 相同,它们包括ActiveX、Applet、Application、 DLL、EXE以及自定义构造型的构件,它们的表示形 式是在构件上添加相关的构造型,是一个构造型为 Applet的构件。
19
构件图和部署图的基本概念
在Rational Rose 2003中,数据库也被认为是一种构件。 虚包是一种只包含对其它包所具有的元素进行的引用的构件。它 被用来提供一个包的某些内容的公共视图。虚包不包含任何它自
己的模型元素。
20
构件图和部署图的基本概念
系统是指组织起来以完成一定目的的连接单元的集合,在系统中, 肯定有一个文件用来指定系统的入口,也就是系统程序的根文件, 这个文件被成为主程序。 子程序规范和子程序体是用来显示子程序的规范和实现体。子程 序是一个单独处理的元素的包,我们通常用它代指一组子程序集。
46
构件图分类
在这个例子中,对可执行程序的体系结构进行了建模, 以帮助开发者了解可执行程序模块之间的关联关系,从 而从宏观上认识系统。
※
※
※
※
情景描述
※ ※
图中实现关系包 括: 信用卡付款提供 付款服务 票数据库提供购 买和状态查询服 务 售票处提供预订 购买、个人购买 和团体购买服务
※ ※
情景一: 购买个人票可以通过公用信息亭订购也可直接 向售票员购买,但购买团体票只能通过售票员。 情景二: 买票的人可以根据任意选择预订销售或个人销 售或团体销售中的一种方式,售票处为了方便 销售,需要信用卡付款服务的支持,同时也必 然需要票数据库处在有票可卖的状况中。
13
构件图的作用
构件图的基本目的是:使系统人员和开发人 员能够从整体上了解系统的所有物理部件, 同时,也使我们知道如何对构件进行打包, 以便交付给最终客户,最后,构件图显示了 被开发系统所包含的构件之间的依赖关系。 构件图从软件架构的角度来描述一个系统的 主要功能,如系统分成几个子系统,每个子 系统包括哪些类、包和构件,它们之间的关 系以及它们分配到哪些节点上等。
28
构件间的关系
依赖关系
两个构件中的类如果存在泛化关系,则构件间可以 加依赖关系;
29
构件间的关系
依赖关系
两个构件中的类如果存在使用关系,则构件间可以 加依赖关系;
30
构件间的关系
实现关系
31
构件图
Component diagram
提供当前模型的物理视图; 显示包括构件源码、二进制文件和可执行文件在内 的软件构件之间的组织和依赖关系; 也可以通过显示组件的接口来展示组件外部可见的 行为。
24
Rose中的扩展构件
子程序说明是一组子程序集合名, 其 中不包括类定义.
子程序体表示子程序的实现.
主程序是包含程序根的文件.
25
构件的类型
26
构件间的关系
依赖关系
一个构件如果使用另外一个构件的操作,则也可以 在该构件和另外一个构件的接口间建立依赖关系;
27
构件间的关系
依赖关系
对象和源码间
带版型的构件
16
构件的名称
每个构件都必须有一个不同于其他构件的名 称。构件的名称是一个字符串,位于构件图 标的内部 构件名称通常是从现实的词汇表中抽取出来 的短名词或名词短语,并依据目标操作系统 添加相应的扩展名,例如java和dll。