构件图与部署图
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。