第五章 包图.

合集下载

包图

包图

一个大型系统中往往包含了数量庞大的模型元素,如何组织管理这些元素是一个十分重要的问题。

包是一种常规用途的有效的组合机制。

包类似于文件系统中的文件夹或者是目录结构,它是一个容器,用来对模型元素进行分组,并且为这些元素提供一个命名空间。

UML中的一个包直接对应于Java中的一个包。

在Java中,一个包可能含有其他包、类或者同时含有这两者。

进行建模时,通常使用逻辑性的包,用于对模型进行组织。

而包图是由包和包之间的联系组成的,它是维护和控制系统总体结构的重要建模工具。

本章将详细介绍包图的各种概念、表示方法和实例应用。

1.包图的概念1.1包图和包当对大型系统进行建模时,经常需要处理大量的类、借口、构件、节点和图,这时就很有必要将这些元素进行分组,即把那些语义相近并倾向于一起变化的元素组织起来加入同一包中,这样便于理解和处理整个模型。

同时也便于控制包中元素的可见性。

包图是描述包及其关系的图。

与所有UML的其它图一样,包图可以包括注释、约束。

通过各个包与包之间关系的描述,展现出系统的模块与模块之间的关系。

图1是一个包图模型。

包是包图中最重要的概念,它包含了一组模型的元素和图,如图1中的Package A和Package B就是两个包。

Package BPackage A在面向对象软件开发的过程中,类显然是构建整个系统的基本元素。

但是对于大型的软件系统而言,其包含的类将是成百上千,再加上类间的关联关系、多重性等,必然是大大超出了人们对系统的理解和处理能力。

为了便于管理这些类,我们引入了“包”这种分组元素。

在包中可以拥有各种其它元素,包括类、接口、构件、节点、协作、用例,甚至是其它子包或图。

一个元素只能属于一个包。

包的作用是:1)对语义上相关的元素进行分组。

如,把功能相关的用例放在一个包中。

2)提供配置管理单元。

如,以包为单位,对软件进行安装和配置。

3)在设计时,提供并行工作的单元。

如,在设计阶段,多个设计小组,可以同时对几个相互独立包中的类进行详细设计。

第五章 包图

第五章 包图

• •
构造性
<<system>>
<<subsystem>>
说明
表示正在建模的整个系统
表示正在建模的系统中某个独立的部分。 对于较大的系统,经常需要将其划分为几个独 立的子系统,每个子系统从较低的抽象层次观 察的时候就像一个较小的系统
<<facade>> <<stub>>
描述一个只引用其他包内元素的包,主要 用来为其他一些复杂的包提供简略视图 一个代理包,通常应用于分布式系统的建 模中,它服务于某个其他包的公共内容
总结:
本章介绍了UML包图,应用包图的目的是为了简化图, 通常当一个图变得庞大且在单一页中无法打印的时候引入 包。 • 包图中可以包含任何一种UML图,但通常更多的是用例 图或类图; • 创建用例包图,可以帮助组织需求,对需求进行高层次 的概述; • 创建类包图,可以在逻辑上组织类,对设计进行高层次 的概述。
在Rational Rose 中,支持4种包的构造型,如图5-6~
5-9。
5.2.4 子系统

系统是组织起来以完成一定目的的连结单元的集合,由 一个高级子系统建模,该子系统间接包含共同完成现实世 界目的的模型元素的集合。 子系统是指有单独说明和实现部分的包。它表示具有 对系统其他部分存在接口的连贯模型单元。 子系统使用具有构造型关键字subsystem的包表示,如 下图所示。
包的依赖性可以加上许多构造型规定它的语义,其中最 常见的是引入依赖。引入依赖(Import Dependency)是包与 包之间的一种存取依赖关系。 • 引入是指允许一个包中的元素存取另一个包中的元素, 引入依赖是单向的。引入依赖的表示方法是在虚箭线上标有构 造型Inport,箭头从引入方的包指向输出方的包。 • 如图所示

5.系统分析与设计-包图组件图物理图 - 副本

5.系统分析与设计-包图组件图物理图 - 副本
指在编译阶段和连接阶段的组件之间的通信或调 用联系.
上海理工大学
2019/2/4
36
2019/2/4
上海理工大学
37
animator.exe {version=5.0.1}
dlog.dll
render.dll
wrframe.dll
raytrce.dll
一个软件产品的构成
2019/2/4
上海理工大学
2019/2/4
上海理工大学
7
包的模型元素名前可以有可视性标志,其表示方
法与类中的属性和操作的可视性表示一样。


+,对于输入该包的任何包的模型元素都可见 -,对于外包不可见 #,只对其子包可见
客户机 +订货表 +追踪表 -订货
2019/2/4
上海理工大学
8
1.4包的嵌套
包可以拥有其它包作为包内的元素,子包又可以
组件和对象可以驻留在节点实例上,而且可以从
一个节点向另一个节点转移,节点执行组件
2019/2/4
上海理工大学
45
节点1
<<cluster>> <<database>>
x
V
w
Z
<<become>>
节点2
<<cluster>>
x
V
2019/2/4
上海理工大学
46
3.3 节点的联系
节点与节点之间通过物理连接(connection)发生联
多个接口
字典
拼写检查
同义词
2019/2/4
上海理工大学
35

静态视图—类图对象图和包图

静态视图—类图对象图和包图

1.1 类图概述——重要性
类图表述系统中类的静态结构,不仅描述 了系统中的类,还表示了类之间的各种关 系,比如:关联、依赖、泛化、实现等
James Rumbaugh对类的定义:类 (Classs)是具有相似结构、行为和关系 的一组对象的描述符 类 + 类的关系 = 类图
1.2 类图概述——类图的作用
salary:Dollars
Student
major:String
3.5 关联关系(Association)
关联是一种结构关系,它指明一个类与 另一个类在类间的联系,表示类之间的 连接,它使一个类的可见属性和方法被 另一个类使用
关联关系包括:双向关联,单向关联, 聚合和反射关联
除聚合关系外,关联关系通常使用实线 +箭头的方式表示
3.2 依赖关系(Dependency)
如果有两个类A与B,当我们修改A类时 会引起B类的修改,我们称类B依赖于类 A。
依赖关系可能由各种原因引起,比如一 个类向另一个类发送消息;一个类是另 一个类的数据成员,一个类是另一个类 的某个操作参数等(use a关系)
UML中包含了4种依赖关系:使用(Usage) 依赖,抽象(Abstraction)依赖,授权 (Permission)依赖和绑定(Binding)依赖
3.3.1 泛化关系的表示
在UML语言中,采用空心箭头+实线 (如果父类是接口,则采用虚线)的 方式表示泛化关系,箭头指向父类
类的继承
接口的继承
3.3.1 泛化关系的表示举例
BankAccount
owner:String balance:Dollars deposit(amount:Dollars) withdrawl(amout:Dollars)

uml-05包图与OCL

uml-05包图与OCL

3、共同重用原则
把将会同时,或使用时间相隔不长的建模元 素放到同一个包中。不会一起使用的类不要放 在同一个包中。
4、非循环依赖原则
包之间的依赖关系不要形成循环:即A依赖 B,B依赖C,C又依赖A。
9.1.4 包图
包图由包和包之间的联系构成,包图中 的图形元素是包,包之间用依赖关系或泛 化关系连接。包图是对系统结构建模的重 要工具。
解释:
⑵ 实型
i1 = i2 等于,布尔型 (<>,>,<,<=,>=) i1 + i2 加法,实型 ( -, *, / ) i1.abs 取绝对值,实型
i1.max(i2) 取最大数,实型(min)
r1.round 四舍五入取整, 整型 r1.floor 向下取整, 整型
解释:
⑶ 字符串型
s1.conscat(s2) 连接,字符串 s1.size 字符串长度,整型 s1.toLwer 转换成为小写字母,字符串
包是一个“容器” ,包中可以包含类、接口、构件、用
例、结点、活动、状态、包等其他模型元素。 包是对软件模型进行分解、组织的有效的模型元素。
2.包的表示
UML用带把的矩形框来表示包。
简单包名
路径包名
路径包名中位于前面的是外围包,后面的是内部包。 注意包的嵌套层数不应过多。
3.包中元素的可见性
包中的元素对其他包可以访问,也可以隐藏, 可见性具有可见、保护和私有三种形式。
表示订单的税金是订单和的6.5% 。
● 蕴涵
context 订单 inv
订单的文章->size = 0 implies 订单和 = 0
表示 “订单的文章”的数量如果等于0,则“订 单”的“订单和”也必须等于0

第5章 信息系统分析与设计 包图

第5章 信息系统分析与设计 包图

显现
隐藏
5.1.1 包的定义 5.包成员 包成员是包中的元素,例如下图中的“检索 图书”用例就是“处理订单”包的成员。
包成员
5.1.2 包的命名
1. 包名
包名应由标识符表示,并且用能够表示包含 义的名字。包的名字放到包的顶部,或包的内 面。例如:
5.1.2 包的命名
2. 包成员的命名
包中成员的名字不允许相同。 非限定名:成员的名字,不包括包的名字。 例如,下图“货品” 限定名: 成员前面缀包名。例如, B::货品
5.2.1 依赖关系
2. 包依赖的类型
2)抽象:如果一个包的元素是对另外一个包元 素的抽象,则两个包之间存在抽象关系 。
5.2.1 依赖关系
2. 包依赖的类型
3)跟踪:如果一个包的元素是对另外一个包元 素的的深化,则两个包之间存在跟踪关系 。
5.2.2 导入关系 1. 导入关系的含义
导入(import)是指将A包的元素导入到B包中,使得导入
1、重用等价原则
对于同类可重用的模型元素尽量放到一个包
中,不要把可重用模型元素和不可重用的模型
元素混到一个包中。
2、共同重用原则
把同一个应用要重用的多个模型元素放到同一
个包中,以减少包间的依赖,提高包的独立性。
3、共同封闭原则
把可能同时修改,同时维护的模型元素放到 一个包中,以便于维护和升级。
5.1.3 包的可见性
包的可见性是指包中成员被其他包或模 型元素访问的程度 ,分以下三种情况:
可见public : + 受限protected : # 私有private : -
5.1.4 包图
包图用来展现包和包之间的关系。
书店图书管理的包图:

(完整版)软件工程 第五章 面向对象的需求分析

(完整版)软件工程 第五章 面向对象的需求分析

第五章面向对象的需求分析面向对象的需求分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。

它包含面向对象风格的图形语言机制和用于指导需求分析的面向对象方法学。

面向对象的思想最初起源于 20世纪 60年代中期的仿真程序设计语言Simula67。

20世纪80年代初出现的Smalltalk 语言及其程序设计环境对面向对象技术的推广应用起到了显著的促进作用。

20世纪90年代中后期诞生并迅速成熟的UML(Unified Modeling Language,统一建模语言)是面向对象技术发展的一个重要里程碑。

UML 统一了面向对象建模的基本概念、术语和表示方法,不仅为面向对象的软件开发过程提供了丰富的表达手段,而且也为软件开发人员提供了互相交流、分享经验的共用语言。

本章首先介绍面向对象的主要概念和思想。

在概述了UML的全貌之后,以“家庭保安系统”为实例,介绍与需求分析相关的部分 UML语言机制以及基于UML的面向对象的需求分析方法和过程。

第一节面向对象的概念与思想一、面向对象的概念关于“面向对象”,有许多不同的看法。

Coad和 Yourdon给出了一个定义:“面向对象 = 对象 + 类 + 继承 + 消息通信”。

如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统是面向对象的。

一个面向对象的程序的每一成分应是对象,计算是通过新的对象的建立和对象之间的消息通信来执行的。

1.对象(object)一般意义来讲,对象是现实世界中存在的一个事物。

可以是物理的,如一个家具或桌子,如图 5-1-1所示,可以是概念上的,如一个开发项目。

对象是构成现实世界的一个独立的单位,具有自己的静态特征(用数据描述)和动态特征(行为或具有的功能)。

例如:人的特征:姓名、性别、年龄等,行为:衣、食、住、行等。

图 5-1-1 对象的定义(1)对象、属性、操作、消息定义对象可以定义为系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和一组对属性进行操作的服务组成。

第5章UML包图

第5章UML包图

17
5.6.2 调整候选包
在已经识别一组候选包后,减少包间依赖,最小化每个包中public、 protected元素的个数,最大化每个包中private元素的个数。做法如 下。 (1) 在包间移动类。 (2) 添加包、分解包、合并包或删除包。 通常,在分析阶段,将类封装为包模型时,应该尽量使包模型简单。 起初,将类图转换为包图时,不需考虑包间的泛化和依赖关系,仅 当使用诸如包泛化和依赖关系能简化包模型时,才使用这些包整理 技术。 除了保持简单,还应该避免嵌套包。包的嵌套结构越深,模型变得 越难理解。我们曾见过非常深层的嵌套包,而每个包仅包含一个或 两个类。这些模型更像是标准的、自上而下的功能分解,而不是包 模型。 作为经验法则,希望每个包具有4~10个分析类。然而,对于所有的 经验法则,却存在例外,如果打破某个法则使得模型更加清晰,就 采用这个法则。有时,必须引入只带有一个或者两个类的包,因为 需要断开包模型中的循环依赖,在这种情况下是完全合理的。
14
5.5 包的传递性
当客户包与提供者包之间是<<access>>依赖 时,提供者包中的公共元素就成为客户包中的 私有元素,这些私有元素在包外是不可以访问 的。如图5-15所示,Z包中的公共元素成为Y包 的私有元素,而X包只能访问Y包中的公共元素, 因此,X包不能访问Z包中的公共元素。所以, X、Y、Z包间的<<access >>关系不存在传递 性。
22
5.8 小

本章首先解释了几种常见的包图表示法, 并通过了一个简单的例子来说明包的可见 性、依赖关系、泛化等概念。其次,概要 地说明了5种包的构造型。 最后说明如何寻找包、确定包之间的依赖 关系,从而绘制出一个表明软件体系结构 的包图,并简要介绍了用包图表示系统体 系结构的建模方法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

模型的组织结构
对系统模型的内部组织结构通常采用先分层再细分成包 的方式。 系统分层常用一种方式是将系统分为三层结构,即用户 界面层、业务逻辑层和数据访问层。
用户界面层
业务逻辑层
数据访问层

用户界面层代表与用户进行交互的界面,既可以是 Form窗口,也可以是Web的界面形式。一个应用可能有 很多不同的界面表示形式,通过对界面中数据的采集和处 理,以及响应用户的请求与业务逻辑层进行交换。
包的依赖性可以加上许多构造型规定它的语义,其中最 常见的是引入依赖。引入依赖(Import Dependency)是包与 包之间的一种存取依赖关系。 • 引入是指允许一个包中的元素存取另一个包中的元素, 引入依赖是单向的。引入依赖的表示方法是在虚箭线上标有构 造型Inport,箭头从引入方的包指向输出方的包。 • 如图所示
2、泛化关系 • 泛化关系表示事物的一般和特殊的关系。如果两个包之 间存在泛化关系,就是指其中的特殊性包必须遵循一般性 包的接口。 • 就像类的继承一样,包可以替换一般的元素,并可以 增加新的元素。如图5-17所示
5.4 包的嵌套
包可以将其他包作为包内的元素,子包又可以拥有自己 的子包,这样就可以构成一个系统的嵌套结构,以表达系 统模型元素的静态结构关系。 • 包的嵌套可清晰地表现系统模型元素之间的关系,但在 建立模型时包的嵌套不宜过深,包的嵌套层数一般以2到3 层为宜。 如图5-18所示。 •
• •
构造性
<<system>>
<<subsystem>>
说明
表示正在建模的整个系统
表示正在建模的系统中某个独立的部分。 对于较大的系统,经常需要将其划分为几个独 立的子系统,每个子系统从较低的抽象层次观 察的时候就像一个较小的系统
<<facade>> <<stub>>
描述一个只引用其他包内元素的包,主要 用来为其他一些复杂的包提供简略视图 一个代理包,通常应用于分布式系统的建 模中,它服务于某个其他包的公共内容
体系结构模式
<<framework>> 描述一个领域内的应用系统提供可扩充模板的
5.3 包图中的关系
包之间的关系总的来讲包括:依赖关系和泛化关系。 1、 依赖关系 对于由对象类组成的包,也就是如果两个包中的任意两个类存在 依赖关系,则称为包之间存在依赖关系。
领域
摩托车
车轮
Hale Waihona Puke •在创建包的依赖关系时,尽量避免如图5-14所示的循 环依赖关系。为解决循环依赖关系,需要将Package A包 或者Package B包中的内容进行分解,将依赖于另一个包 中的内容转移到另外一个包中。如图5-15所示,Package A中依赖Package B中的类转移到Package C中。
第五章 包图
本章要点: • • 理解包图和包的关系 理解包和包之间的关系
基础内容:模型的组织结构
重点掌握:包中的模型元素 一般了解:包的嵌套
5.1 包图的定义
包是用于把元素组织成组的通用机制。 UML模型中的组织是通过包(Package)来实现的,包 可以把所建立的各种模型组织起来,形成各种功能或用途 的模块。 在UML中对类或者其它模型元素分组时则使用包图。 包是用来对一个图的元素(如类和用例)进行分组的。把 分组后的元素用一个带有标签的文件夹图标包围起来,就 完成了对其打包。
一个包只能看到其他包中被指定为具有公共可见性 的元素。具有受保护可见性的元素只对包含它的包的后代 包具有可见性。 • 一个类的后代可以看到它的祖先中具有公共或受保 护可见性的成员,而其他类则只能看到具有公共可见性的 成员。 •
5.2.3 构造型
在UML中所有的扩展机制都适用于包,可以用标记值 描述包的新特性,用构造性描述包的新种类。包具有不同 的构造型,表现为不同的特殊类型的包。
在Rational Rose 中,支持4种包的构造型,如图5-6~
5-9。
5.2.4 子系统

系统是组织起来以完成一定目的的连结单元的集合,由 一个高级子系统建模,该子系统间接包含共同完成现实世 界目的的模型元素的集合。 子系统是指有单独说明和实现部分的包。它表示具有 对系统其他部分存在接口的连贯模型单元。 子系统使用具有构造型关键字subsystem的包表示,如 下图所示。
5.2 包的组成

在UML中,包的标准形式是使用两个矩形来表示的, 即一个小矩形(标签)和一个大矩形,小矩形紧紧连结 在大矩形的左上角上,包的名称位于大矩形的中间,如 图所示。
UtilityPackage
5.2 包的组成
• 和其他模型元素的名称一样,每个包都必须有一个 与其他包相区别的名称。包的名称是一个字符串,它有两 种形式:简单名(Simple Name)和路径名(Path Name)。 如:包名domain就是一个简单名 路径名com::bookshop::domain
包图举例
财务子系统
数据库子系统
数据库操作
数据库接口
Oracle 接口
Sybase接口
包图举例
包图举例
订单获 取界面 AWT 邮件发 送界面 用户接口包
订单获 取应用
邮件发 送应用
应用层包
订单
其中:AWT是Java中管理GUI类的包。
顾客
问题域包
包图另一种划分方式
用户接口
订单获 取界面 系 统应用

包的可见性
包的可见性用来控制包外元素对包内元素的访问权限。 包的可见性: (1) - 被private关键字定义的私有元素对包外部元 素完全不可见。意味着包中的元素只能被拥有或引用该元 素的包存取和使用。 (2)# 被protected关键字定义的被保护的元素只对那 些与包含这些元素的包有泛化关系的包可见。 (3)+ 被 public定义的公共元素对所有引入的包以及 它们的后代都可见。即允许其他元素存取和使用包中内容。

业务逻辑层是用来处理系统的业务流程,它接受用 户界面请求的数据,并根据系统的业务规则返回最终的处 理结果。它将系统的业务规则抽象出来,按照一定的规则 形成在一个应用层上。
数据访问层是程序中和数据库进行交互的层。

包图和包

包是包图中最重要的概念,它包含了一组模型元素和图, 如图5-2所示。

组成包图的元素有:包、子系统、依赖关系
相关文档
最新文档