包图 构件图 与部署图
合集下载
10讲 包图 构件图和部署图

包图的定义
包图和包 在UML中创建包图的目的有以下三个: 1. 在逻辑上把一个复杂的系统模块化 2. 组织源代码 3. 描述需求高阶概况 4. 描述设计的高阶概况
包的组成
名称
在UML中,包的标准形式是使用两个矩形进行表示的,一个小 矩形和一个大矩形,小矩形紧连结在大矩形的左上角上,包的名称 位于大矩形的中间 包的名称是一个字符串,它有两种形式:简单名和路径名。其 中,简单名仅包含一个名称字符串;路径名是以包处于的外围包的 名字作为前缀并加上名称字符串,如下图所示。
软件系统体系结构建模——包图
• 2、系统业务对象层
系统服务接口界面包:起承上启下的作用,设置用 户窗口与系统各种实现具体功能的接口界面的连接
业务对象管理包:根据用户窗口接口界面的要求, 实施对系统的业务对象的有效管理
外部业务对象包:对过去系统遗留下来的有使用价 值部分进行包装 实际业务对象包:形成能实现系统功能的实际的业 务对象集,包括系统新创建的业务和外部业务对象
系统体系结构设计 数据结构设计 用户界面设计 算法设计
系统体系结构概述
• 系统体系结构用来描述系统各部分的结构、 接口以及它们用于通信的机制。 • 系统体系结构建模首先要建立基本的模型, 并把这些模型映射到系统需要的硬件单元 上。
系统体系结构概述
• 体系结构设计过程中的主要活动:
系统分解:将系统分解为若干个相互作用的子系统 模块分解:将子系统进一步划分为模块
包图中的关系
泛化关系
泛化关系表示了事物的一般和特殊的关系。如果二个 包之间存在有泛化关系,就是指其中的特殊性包必须遵 循一般性包的接口。包之间的泛化联系与类之间的泛化 关系十分类似,类之间的泛化的概念和表示在此大都可 以使用如下图所示。
08,09构件图和部署图

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

包(Package)
引入与输出:引入(import)允许一个包中的元素单向访问另一包中的元素 允许一个包中的元素单向访问另一包中的元素. 引入与输出 引入 允许一个包中的元素单向访问另一包中的元素
在UML中,用一个由构造型import修饰的依赖为 引入关系建模.通过把抽象包装秤有含义的组块, 然后用引入关系控制对它们的访问,就能控制 大量抽象的复杂性. 输出(export)就是包的公共部分 就是包的公共部分. 输出 就是包的公共部分 一个包输出的部分仅对显示地引入这个包 的其他包中的元素是可见的 注:引入和访问依赖是不可传递的.
虚包(Generic Package): 虚包
虚子程序(Generic Subprogram): 虚子程序
接口(Interface)
概述: 概述 在组件图中,组件可以通过其他组件的接口来使用其他组件中定义
的操作.通过使用命名的接口,可以避免在系统中各个组件之间直接发生依 赖关系,有利于组件的替换 接口和组件之间的关系: 实现关系(Realization): 依赖关系(Dependency): 组件接口的分类: 导入接口(import interface):供访问操作的组件使用 导出接口(export interface):由提供操作的组件提供
组件图(Component Diagram)
背景: 背景:在软件建模的过程中,使用用例图可以推断系统希望的行为;使用类图
可以描述系统中的词汇;使用时序图、组件图、状态图和活动图可以说明这些词 汇中的事物如何相互作用以完成某些行为。在完成系统的逻辑设计之后,下一步 要定义设计的物理实现,如可执行文件、库、表、文件和文档等。对面向对象系 统的物理方面进行建模时要用到两种图:组件图和配置图。 概述: 概述:使用组件图能够可视化物理组件以及它们之间的关系,并描述其构造细节. 组件图描述了软件的各种组件和它们之间的依赖关系.在UML中,组件图是系统实 现视图的图形表示,而其中的一个组件图只能表示系统实现视图的一部分,也即任 何一个组件图都不能描述系统实现的所 有方面,只有系统中的组件组合起来 才能表示完整的系统实现视图
构件图与部署

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

部署图——部署图的要素
连接
连接表示两个结点之间的物理连接关系,用直线表示,在连接 上可以加多重性、角色、约束等。
部署图示例
部署图示例
部署图示例
总结
构件图的作用是什么? 什么叫构件,构件有哪几种类型,构件怎么表示? 部署图的作用是什么?
构件图 部署图
本章目标
构件图——构件
构件的概念
构件(component):是一个相对独立的可装配的物理块,一 般作为一个独立的文件存在。
构件具有确定的接口,相互之间可以调用,构件之间存在依赖 关系。
构件图——构件
构件的类型
《源代码件》:源程序文件块. 《执行件》:编译的结果,可投入运行。 《文件》:信息的存储体。 《库》:可以是类库、动态链接库、数据库等。 《表》:表示数据库中的数据表。 《文档》:泛指形成的所有文字材料。
第七章
构件图和部署图
回顾
1:在状态图中可以表示的概念有( ).(多选) A 动作 B 事件 C 转移 D 用例
回顾
2:如果要对一个企业的工作流程建模,下面四个图中( ) 是最有用的。 A 交互图 B 活动图 C 状态图 D 类图
回顾
3:下面说法错误的是: A 状态可以用来描述涉及多个用例的对象的行为 B 一些高级的状态图可以用来描述多个对象之间的关系 C 活动图可以用来描述企业中的业务流程 D 活动图可以用来描述多个用例间多个对象间的行为
构件图——构件
构件的表示
在UML中,构件通过以下形式来表示:
构件图
构件图(component diagram):描述构件及其相互 关系的图。构件之间是依赖关系。
构件图的作用
1:对源代码文件之间的相互关系建模
包图组件图部署图

字空间的。这样在引用目的包中的内容时不
需要加包名限定,直接用目的包中的元素名 字即可。
User Services 《import》
Business Services 《import》
Data Services
图1.2 包之间的非传递依赖关系
另外,与UML中其他建模元素类似,包之间也可以有泛化关系。子包继 承了父包中可见性为public和protected的元素。
EventHandler的可见性为私有的(privated),表示只有
在AWT包中才可以引用Event Handler这个元素。
图1.1 AWT包
对包的命名有两种方式,即简单包名名(simple name)和路径包名(path name)。例如Vision)是一个简单的包名,而Sensors::Vision是带路径的包名。 其中Sensors是Vision包的外围包,也就是说,Vision包是嵌套在Sensors包中 的。包可以嵌套,但在实际应用中,嵌套层次不应太深。
EventHandler。其中window的可见性为公有的(Public),
AWT
表示在任何导入(import)AWT包的包中,都可以引用
+Window
Window这个元素;Form的可见性为保护的(protected), #Form
表示只有AWT包的子包才可以引用Form这个元素; -EvebtHandler
在设计包时,应遵循以下原则: 1. 重用等价原则(Reuse Equivalency Principle,REP) 2. 共同闭包原则(Common Closure Principle,CCP) 3. 共同重用原则(Common Reuse Principle,CRP) 4. 非循环依赖原则(Acyclic Dependencies Principle,ADP)
需要加包名限定,直接用目的包中的元素名 字即可。
User Services 《import》
Business Services 《import》
Data Services
图1.2 包之间的非传递依赖关系
另外,与UML中其他建模元素类似,包之间也可以有泛化关系。子包继 承了父包中可见性为public和protected的元素。
EventHandler的可见性为私有的(privated),表示只有
在AWT包中才可以引用Event Handler这个元素。
图1.1 AWT包
对包的命名有两种方式,即简单包名名(simple name)和路径包名(path name)。例如Vision)是一个简单的包名,而Sensors::Vision是带路径的包名。 其中Sensors是Vision包的外围包,也就是说,Vision包是嵌套在Sensors包中 的。包可以嵌套,但在实际应用中,嵌套层次不应太深。
EventHandler。其中window的可见性为公有的(Public),
AWT
表示在任何导入(import)AWT包的包中,都可以引用
+Window
Window这个元素;Form的可见性为保护的(protected), #Form
表示只有AWT包的子包才可以引用Form这个元素; -EvebtHandler
在设计包时,应遵循以下原则: 1. 重用等价原则(Reuse Equivalency Principle,REP) 2. 共同闭包原则(Common Closure Principle,CCP) 3. 共同重用原则(Common Reuse Principle,CRP) 4. 非循环依赖原则(Acyclic Dependencies Principle,ADP)
面向对象分析与设计课件第8章 包图、组件图和部署图建模

1)导入依赖 导入«import»依赖表示一个包可以引用导入包中的可引用元素,可 引用元素不仅包括导入包中的元素,也包括导入包从其他包中导入的可 引用元素。并且导入包可以不使用完全路径名称就可以使用这些引入的 元素。在包图中,可以使用带有构造型«import»的依赖表示导入依赖。 2)访问依赖 和导入依赖关系类似,访问依赖关系主要用于指定包之间元素的访 问关系,其含义是导入包中的元素也可以访问被导入包中的公共元素, 但只能访问被导入的包中的元素,并且不能省略元素名的路径。在包图 中,使用带有构造型《access》的依赖表示导入依赖。
软件模型中,包图的主要作用。 1 定义或描述软件模型的结构,以图形的方式描述模型的包和包 之间关系; 2 在软件模型中添加必要的导航。 目前的建模软件均支持包图的导航功能,借助这个功能,建模人 员可以更高效地查找或浏览软件模型的内容,从而提高建模的工作效 率。
8.1.3 包图的建模方法
1.定义模型的基本结构 目前的UML建模工具通常会给出一系列预定义的模型模板,建模人员可 以根据要完成的工作性质和内容选择满足其需求的模板,并定制其模板的主 要内容。 例如,建模人员要完成的是一个完整的软件项目时,就可能会选择标准 的软件模型模板,并为模型选择合适的子模型,如用例视图、逻辑模型视图、 构件视图、动态视图和部署视图等标准的视图。这时,就创建了一个基本的 软件模型了。 此时可以为模型的根包添加一个包图,也可以将根包中的每个子包元素 添加到这张包图中,以展现当前包的结构,还可以为这些包元素添加必要的 关系。
8.1.1 包图的构成元素
如图8-1给出了一个包图的例子,图中包含了一个名为 Packge3的包元素,这个包中包含了A、B、C和D四个公共 可见性的类。图中还嵌入了一个描述了这些类之间关系的 类图。
软件模型中,包图的主要作用。 1 定义或描述软件模型的结构,以图形的方式描述模型的包和包 之间关系; 2 在软件模型中添加必要的导航。 目前的建模软件均支持包图的导航功能,借助这个功能,建模人 员可以更高效地查找或浏览软件模型的内容,从而提高建模的工作效 率。
8.1.3 包图的建模方法
1.定义模型的基本结构 目前的UML建模工具通常会给出一系列预定义的模型模板,建模人员可 以根据要完成的工作性质和内容选择满足其需求的模板,并定制其模板的主 要内容。 例如,建模人员要完成的是一个完整的软件项目时,就可能会选择标准 的软件模型模板,并为模型选择合适的子模型,如用例视图、逻辑模型视图、 构件视图、动态视图和部署视图等标准的视图。这时,就创建了一个基本的 软件模型了。 此时可以为模型的根包添加一个包图,也可以将根包中的每个子包元素 添加到这张包图中,以展现当前包的结构,还可以为这些包元素添加必要的 关系。
8.1.1 包图的构成元素
如图8-1给出了一个包图的例子,图中包含了一个名为 Packge3的包元素,这个包中包含了A、B、C和D四个公共 可见性的类。图中还嵌入了一个描述了这些类之间关系的 类图。
section 9 构件图与部署图

包内定义。 zhufei@
• 与包的关系不同
构件图的作用
(1) 对源代码文件之间的关系建模
组件图示例
A component diagram
zhufei@
• 一个大型复杂的软件系统,一般由多个可执行 程序和相关的持久对象库构成。 • 下图描述了一个客户的软件系统从 C++源代码
部署图的例子
PC和外设与ISP连接的部署图
部署图建模技术
• • • • •
对系统中的结点建模。 对结点之间的关联关系建模。 对驻留在结点上的构件建模。 对驻留在结点上的构件之间的依赖关系建模。 对建模的结果进行精化和细化。
确定结点和结点间的关联关系
•
•
• •
IC卡读卡器:提供给员工刷卡用,它将收集刷卡的时间信息,传 给应用系统,并存入数据库中
创建实施构件的源代码文件及数据文件。如: 源代码文 件、数据文件等, 这些构件可以产生部署构件.
构件图中的元素
(1) 构件
基本构件
带版型的构件
构件图中的元素
(1) 构件 Rose中的扩展构件
子程序说明是一组子程序集 合名, 其中不包括类定义.
子程序体表示子程序的实现.
构件图中的元素
(1) 构件 Rose中的扩展构件
example
• 根据以下描述,试完成一个“销售管理系统”
的部署图。该系统采用的硬件设备有:
• 3台联想PC600作为终端机,分别用作销售管理、仓 库管理和合同管理。 • 1台联想PC6000作为网络数据库服务器。 • 2台Ls1000打印机。一台为网络共享、一台为仓库 管理专用。 • 客户机之间采用《TCP/IP》通信协议,3个客户机
构件图的作用:可执行文件建模
• 与包的关系不同
构件图的作用
(1) 对源代码文件之间的关系建模
组件图示例
A component diagram
zhufei@
• 一个大型复杂的软件系统,一般由多个可执行 程序和相关的持久对象库构成。 • 下图描述了一个客户的软件系统从 C++源代码
部署图的例子
PC和外设与ISP连接的部署图
部署图建模技术
• • • • •
对系统中的结点建模。 对结点之间的关联关系建模。 对驻留在结点上的构件建模。 对驻留在结点上的构件之间的依赖关系建模。 对建模的结果进行精化和细化。
确定结点和结点间的关联关系
•
•
• •
IC卡读卡器:提供给员工刷卡用,它将收集刷卡的时间信息,传 给应用系统,并存入数据库中
创建实施构件的源代码文件及数据文件。如: 源代码文 件、数据文件等, 这些构件可以产生部署构件.
构件图中的元素
(1) 构件
基本构件
带版型的构件
构件图中的元素
(1) 构件 Rose中的扩展构件
子程序说明是一组子程序集 合名, 其中不包括类定义.
子程序体表示子程序的实现.
构件图中的元素
(1) 构件 Rose中的扩展构件
example
• 根据以下描述,试完成一个“销售管理系统”
的部署图。该系统采用的硬件设备有:
• 3台联想PC600作为终端机,分别用作销售管理、仓 库管理和合同管理。 • 1台联想PC6000作为网络数据库服务器。 • 2台Ls1000打印机。一台为网络共享、一台为仓库 管理专用。 • 客户机之间采用《TCP/IP》通信协议,3个客户机
构件图的作用:可执行文件建模
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12
包图中的关系
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
包的概念
4
包的表示
UML中,用文 件夹符号来表
包名放在第 二栏
示一个包。包 由一个矩形表
PageName
示,它包含2栏。
下面是最常见 的几种包的表 示法。
Rose 常 用 表示法
System:Web
UI
class
包名放在第 一栏
PageName
ClassName-1 ClassName-2 …..
UI 简单名
System:We的元素
在一个包中可以拥有各种其他元素,包括类、接口、构 件、节点、协作、用例,甚至是其他包或图。这是一种 组成关系,意味着元素是在这个包中声明的,因此一个 元素只能属于一个包。
每一个包就意味着一个独立的命名空间,因此,两个不 同的包,可以具有相同的元素名,但由于所位于的包名 不同,因此其全名仍然是不同的。
赖,最小化每个包的public、protected 元素的个数,最大化每个包中private元素 的个数。做法是:
在包间移动类; 添加包或删除包。
17
创建包图
良好包结构的关键是包内高内聚,包间低耦 合。
通常,当创建分析包模型时,应该尽量使包模 型简单。获得正确的包集合比使用诸如包泛化 和依赖构造型的特征更加重要,这些特征可以 以后再添加,仅当使用诸如包泛化和依赖构造 型的特征使得模型更加容易理解时,才使用这 些包整理技术。除了保持简单,还应该避免嵌 套包。物件在嵌套包结构中埋藏得越深,模型 变得越晦涩。
领域内的应用系统提供可扩充模板的体系结构模式。
9
包图中的关系
包图中的关系有2种:依赖关系、泛化关系。 1、依赖关系:分为4种。把箭尾端的包称为
客户包,把箭头端的包称为提供者包。
10
包图中的关系
《use》关系:《use》关系是一种默认的依赖关系 ,说明客 户包(箭尾端的包)中的元素以某种方式使用提供者包(箭头 端的包)的公共元素,也就是说客户包依赖于提供者包。如果 没有指明依赖类型,则默认为《USE》关系。
像类中的属性和方法一样,包中的元素也有可见性, 包内元素的可见性控制了包外部元素访问包内部元 素的权限。
7
包的表示
包的可见性有 3种:
“+”表示 “public”
“#”表示 “protecte d”
“-”表示 “private”
8
包的表示-包的构造型
为了表示包的新特性,用构造型来描述包的新特征。
为什么要包
在面向对象软件开发的视角中,类显然是构 建整个系统的基本构造块。但是对于庞大的 应用系统而言,其包含的类将是成百上千, 再加上其间复杂的关联关系、多重性等,必 然是大大超出了人们可以处理的复杂度。这 也就是引入了“包”这种分组事物构造块。
1
包的概念
包是维护和控制系统总体结构的重要建模工 具,有助于方便理解和处理整个模型。
《trace》关系:想表示一个包到另一个包的历史发展,则需要 使用《trace》关系来表示 .
11
包图中的关系
例如 ,有两个《USE》依赖, Client包将通过Server包来完 成Order的存储,而Server包 使用 System.Data.SqlClient包 来实现数据库的存储。
例如,Client包引用了(import)了 Rule包,Rule包又引用了GUI包。同 时,这还表示Client包间接引用了GUI 包。
14
创建包图
绘制包图的基本过程主要有三个步骤:第一, 寻找包;第二,确定包之间的关系;第三, 标出包内元素的可见性。
绘制包图的“最小化系统间的耦合关系”的 原则:
最大限度减少包之间的依赖,包封装时,避免 包之间的循环依赖;最小化每个包的public、 protected元素的个数,最大化每个包中 private元素的个数。
《system》:表示整个系统。 《subsystem》:表示正在建模的系统中某个独立的子
系统。 《facade》:只是某个其它包的视图,它主要用来为
其它一些复杂的包提供简略视图。 《stub》:是一个代理包,它服务于某个其他包的公共
内容,这通常应用于分布式系统的建模中。 《 framework》:用来表示一个框架的,框架是一个
PageName 类名
第二栏列 出包含的 类名
在第二栏画 出所包含的 类图形表示
嵌套
包
5
包的表示
包的名称
每个包必须有一个与其他包相区别的名称。标 识包名称的格式有两种:简单名和全名。
其中,简单名仅包含包一个简单的名称;全名 是用该包的外围包的名字作为前缀,加上包本 身的名字。
Rose常用表示方法中,其包名UI就是一个简单名。而 包System.Web.UI才是一个完整带路径的名称,表示 UI这个包是位于System.Web命名空间中的。
包图中的关系
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
包的概念
4
包的表示
UML中,用文 件夹符号来表
包名放在第 二栏
示一个包。包 由一个矩形表
PageName
示,它包含2栏。
下面是最常见 的几种包的表 示法。
Rose 常 用 表示法
System:Web
UI
class
包名放在第 一栏
PageName
ClassName-1 ClassName-2 …..
UI 简单名
System:We的元素
在一个包中可以拥有各种其他元素,包括类、接口、构 件、节点、协作、用例,甚至是其他包或图。这是一种 组成关系,意味着元素是在这个包中声明的,因此一个 元素只能属于一个包。
每一个包就意味着一个独立的命名空间,因此,两个不 同的包,可以具有相同的元素名,但由于所位于的包名 不同,因此其全名仍然是不同的。
赖,最小化每个包的public、protected 元素的个数,最大化每个包中private元素 的个数。做法是:
在包间移动类; 添加包或删除包。
17
创建包图
良好包结构的关键是包内高内聚,包间低耦 合。
通常,当创建分析包模型时,应该尽量使包模 型简单。获得正确的包集合比使用诸如包泛化 和依赖构造型的特征更加重要,这些特征可以 以后再添加,仅当使用诸如包泛化和依赖构造 型的特征使得模型更加容易理解时,才使用这 些包整理技术。除了保持简单,还应该避免嵌 套包。物件在嵌套包结构中埋藏得越深,模型 变得越晦涩。
领域内的应用系统提供可扩充模板的体系结构模式。
9
包图中的关系
包图中的关系有2种:依赖关系、泛化关系。 1、依赖关系:分为4种。把箭尾端的包称为
客户包,把箭头端的包称为提供者包。
10
包图中的关系
《use》关系:《use》关系是一种默认的依赖关系 ,说明客 户包(箭尾端的包)中的元素以某种方式使用提供者包(箭头 端的包)的公共元素,也就是说客户包依赖于提供者包。如果 没有指明依赖类型,则默认为《USE》关系。
像类中的属性和方法一样,包中的元素也有可见性, 包内元素的可见性控制了包外部元素访问包内部元 素的权限。
7
包的表示
包的可见性有 3种:
“+”表示 “public”
“#”表示 “protecte d”
“-”表示 “private”
8
包的表示-包的构造型
为了表示包的新特性,用构造型来描述包的新特征。
为什么要包
在面向对象软件开发的视角中,类显然是构 建整个系统的基本构造块。但是对于庞大的 应用系统而言,其包含的类将是成百上千, 再加上其间复杂的关联关系、多重性等,必 然是大大超出了人们可以处理的复杂度。这 也就是引入了“包”这种分组事物构造块。
1
包的概念
包是维护和控制系统总体结构的重要建模工 具,有助于方便理解和处理整个模型。
《trace》关系:想表示一个包到另一个包的历史发展,则需要 使用《trace》关系来表示 .
11
包图中的关系
例如 ,有两个《USE》依赖, Client包将通过Server包来完 成Order的存储,而Server包 使用 System.Data.SqlClient包 来实现数据库的存储。
例如,Client包引用了(import)了 Rule包,Rule包又引用了GUI包。同 时,这还表示Client包间接引用了GUI 包。
14
创建包图
绘制包图的基本过程主要有三个步骤:第一, 寻找包;第二,确定包之间的关系;第三, 标出包内元素的可见性。
绘制包图的“最小化系统间的耦合关系”的 原则:
最大限度减少包之间的依赖,包封装时,避免 包之间的循环依赖;最小化每个包的public、 protected元素的个数,最大化每个包中 private元素的个数。
《system》:表示整个系统。 《subsystem》:表示正在建模的系统中某个独立的子
系统。 《facade》:只是某个其它包的视图,它主要用来为
其它一些复杂的包提供简略视图。 《stub》:是一个代理包,它服务于某个其他包的公共
内容,这通常应用于分布式系统的建模中。 《 framework》:用来表示一个框架的,框架是一个
PageName 类名
第二栏列 出包含的 类名
在第二栏画 出所包含的 类图形表示
嵌套
包
5
包的表示
包的名称
每个包必须有一个与其他包相区别的名称。标 识包名称的格式有两种:简单名和全名。
其中,简单名仅包含包一个简单的名称;全名 是用该包的外围包的名字作为前缀,加上包本 身的名字。
Rose常用表示方法中,其包名UI就是一个简单名。而 包System.Web.UI才是一个完整带路径的名称,表示 UI这个包是位于System.Web命名空间中的。