《包图构件图与部署.ppt》由会员分享,可在线阅读,更多相关《包图构件图与部署.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第10章章 包图、构件图与部署图包图、构件图与部署图(Package/Component/Deployment Diagram)冯国奇冯国奇1为什么要包为什么要包o在面向对象软件开发的视角中,类显然是构在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但是对于庞大的建整个系统的基本构造块。但是对于庞大的应用系统而言,其包含的类将是成百上千,应用系统而言,其包含的类将是成百上千,再加上其间复杂的关联关系、多重性等,必再加上其间复杂的关联关系、多重性等,必然是大大超出了人们可以处理的复杂度。这然是大大超出了人们可以处理的复杂度。这也就是引入了也就是引入了“包包”这种分组事物构造块。这
2、种分组事物构造块。2包的概念包的概念o包是维护和控制系统总体结构的重要建模工包是维护和控制系统总体结构的重要建模工具,有助于方便理解和处理整个模型。具,有助于方便理解和处理整个模型。o分解分解 是软件开发中控制软件复杂性的重要是软件开发中控制软件复杂性的重要手段。手段。o在在OO方法中方法中,需要考虑如何把相关的类放需要考虑如何把相关的类放在一起。在一起。o把语义相近并倾向于同一变化的元素组织起把语义相近并倾向于同一变化的元素组织起来加入同一个包中,以便于理解和处理整个来加入同一个包中,以便于理解和处理整个模型。模型。3为什么要包为什么要包o包的作用是:包的作用是:1)对语义上相关的元素进行分
3、组)对语义上相关的元素进行分组2)定义模型中的)定义模型中的“语义边界语义边界”3)提供配置管理单元)提供配置管理单元4)在设计时,提供并行工作的单元)在设计时,提供并行工作的单元5)提供封装的命名空间,其中所有名称必)提供封装的命名空间,其中所有名称必须唯一须唯一4包的概念5包的表示包的表示oUML中,用文中,用文件夹符号来表示件夹符号来表示一个包。包由一一个包。包由一个矩形表示,它个矩形表示,它包含包含2栏。下面栏。下面是最常见的几种是最常见的几种包的表示法。包的表示法。PageNamePageNameClassName-1ClassName-2.PageName类名类名Rose常常 用用
4、表示法表示法包名放在第包名放在第一栏一栏在在第第二二栏栏画画出出所所包包含含的的类图形表示类图形表示第第二二栏栏列列出出包包含含的的类名类名包名放在第包名放在第二栏二栏System:WebUIclass嵌嵌 套套包包6包的表示包的表示o包的名称包的名称n每个包必须有一个与其他包相区别的名称。标每个包必须有一个与其他包相区别的名称。标识包名称的格式有两种:简单名和全名。识包名称的格式有两种:简单名和全名。n其中,简单名仅包含包一个简单的名称;全名其中,简单名仅包含包一个简单的名称;全名是用该包的外围包的名字作为前缀,加上包本是用该包的外围包的名字作为前缀,加上包本身的名字。身的名字。oRose常
5、用表示方法中,其包名UI就是一个简单名。而包才是一个完整带路径的名称,表示UI这个包是位于命名空间中的。UISystem:Web:UI简单名含路径名(全名)7包的表示o包的元素包的元素n在一个包中可以拥有各种其他元素,包括类、接口、构在一个包中可以拥有各种其他元素,包括类、接口、构件、节点、协作、用例,甚至是其他包或图。这是一种件、节点、协作、用例,甚至是其他包或图。这是一种组成关系,意味着元素是在这个包中声明的,因此一个组成关系,意味着元素是在这个包中声明的,因此一个元素只能属于一个包。元素只能属于一个包。n每一个包就意味着一个独立的命名空间,因此,两个不每一个包就意味着一个独立的命名空间,
6、因此,两个不同的包,可以具有相同的元素名,但由于所位于的包名同的包,可以具有相同的元素名,但由于所位于的包名不同,因此其全名仍然是不同的。不同,因此其全名仍然是不同的。o像类中的属性和方法一样,包中的元素也有可见性,像类中的属性和方法一样,包中的元素也有可见性,包内元素的可见性控制了包外部元素访问包内部元包内元素的可见性控制了包外部元素访问包内部元素的权限。素的权限。8包的表示包的表示o包的可见性有包的可见性有3种:种:n“+”表示表示“public”n“#”表示表示“protected”n“-”表示表示“private”9包的表示-包的构造型o为了表示包的新特性,用构造型来描述包的新特征。为
7、了表示包的新特性,用构造型来描述包的新特征。nsystem:表示整个系统。表示整个系统。nsubsystem:表示正在建模的系统中某个独立的子表示正在建模的系统中某个独立的子系统。系统。nfacade:只是某个其它包的视图,它主要用来为其:只是某个其它包的视图,它主要用来为其它一些复杂的包提供简略视图。它一些复杂的包提供简略视图。nstub:是一个代理包,它服务于某个其他包的公共:是一个代理包,它服务于某个其他包的公共内容,这通常应用于分布式系统的建模中。内容,这通常应用于分布式系统的建模中。n framework:用来表示一个框架的,框架是一个:用来表示一个框架的,框架是一个领域内的应用系统
8、提供可扩充模板的体系结构模式。领域内的应用系统提供可扩充模板的体系结构模式。10包图中的关系包图中的关系o包图中的关系有包图中的关系有2种:依赖关系、泛化关系。种:依赖关系、泛化关系。o1、依赖关系、依赖关系:分为分为4种。把箭尾端的包称为种。把箭尾端的包称为客户包客户包,把箭头端的包称为提供者包。把箭头端的包称为提供者包。11包图中的关系ouse关系关系:use关系是一种默认的依赖关系关系是一种默认的依赖关系,说明客,说明客户包(箭尾端的包)中的元素以某种方式使用提供者包(箭头户包(箭尾端的包)中的元素以某种方式使用提供者包(箭头端的包)的公共元素,也就是说客户包依赖于提供者包。如果端的包)
9、的公共元素,也就是说客户包依赖于提供者包。如果没有指明依赖类型,则默认为没有指明依赖类型,则默认为USE关系。关系。oimport关系:最普遍的包依赖类型,说明提供者包的命关系:最普遍的包依赖类型,说明提供者包的命名空间将被添加到客户包的命名空间中,客户包中的元素也能名空间将被添加到客户包的命名空间中,客户包中的元素也能够访问提供者包的所有公共元素。够访问提供者包的所有公共元素。oaccess关系关系:如果只想使用提供者包中的元素,而不想将如果只想使用提供者包中的元素,而不想将两个包合并,则应使用该关系。在客户包中必须使用路径名两个包合并,则应使用该关系。在客户包中必须使用路径名,才才能访问提
10、供者包中的所有公共元素。能访问提供者包中的所有公共元素。otrace关系关系:想表示一个包到另一个包的历史发展,则需要想表示一个包到另一个包的历史发展,则需要使用使用trace关系来表示关系来表示.12包图中的关系o例如例如,有两个,有两个USE依赖,依赖,Client包将通过包将通过Server包来完包来完成成Order的存储,而的存储,而Server包包使用使用包来实现数据库的存储。包来实现数据库的存储。例如,例如,Client包引用了(包引用了(import)了)了Rule包,包,Rule包又引用了包又引用了GUI包。同包。同时,这还表示时,这还表示Client包间接引用了包间接引用了G
11、UI包。包。13包图中的关系o2、泛化关系、泛化关系o包间的泛化关系类似于类间的泛化关系,使包间的泛化关系类似于类间的泛化关系,使用一般包的地方,可以用特殊包代替。用一般包的地方,可以用特殊包代替。o在系统设计中,对某一个特定的功能,有多在系统设计中,对某一个特定的功能,有多种实现方法。例如,实现多数据库支持;实种实现方法。例如,实现多数据库支持;实现现B/S和和C/S双界面。这时就需要定义一些双界面。这时就需要定义一些高层次的高层次的“抽象包抽象包”和实现高层次功能的和实现高层次功能的“实现包实现包”。14泛化关系例如,说明例如,说明GUI有两有两种风格:一种是基于种风格:一种是基于WinF
12、orm的的C/S风风格,一种是格,一种是WebForm的的B/S风格。风格。15创建包图创建包图o绘制包图的基本过程主要有三个步骤:第一,绘制包图的基本过程主要有三个步骤:第一,寻找包;第二,确定包之间的关系;第三,寻找包;第二,确定包之间的关系;第三,标出包内元素的可见性。标出包内元素的可见性。o绘制包图的绘制包图的“最小化系统间的耦合关系最小化系统间的耦合关系”的的原则:原则:n最大限度减少包之间的依赖,包封装时,避免最大限度减少包之间的依赖,包封装时,避免包之间的循环依赖;最小化每个包的包之间的循环依赖;最小化每个包的public、protected元素的个数,最大化每个包中元素的个数,
13、最大化每个包中private元素的个数。元素的个数。16创建包图创建包图o1标识候选包的原则:标识候选包的原则:n把类图中关系紧密的类放到一个包中;把类图中关系紧密的类放到一个包中;n在类继承类层次中,把不同层次的类放在不同在类继承类层次中,把不同层次的类放在不同的包中。的包中。o也可以把用例模型作为包的来源。然而,用也可以把用例模型作为包的来源。然而,用例横跨分析包是非常普遍的例横跨分析包是非常普遍的一个用例可一个用例可以由几个不同包中的类实现。以由几个不同包中的类实现。17创建包图创建包图o2调整候选包调整候选包o在已经识别一组候选包后,然后减少包间依在已经识别一组候选包后,然后减少包间依
14、赖,最小化每个包的赖,最小化每个包的public、protected元素的个数,最大化每个包中元素的个数,最大化每个包中private元素元素的个数。做法是:的个数。做法是:n在包间移动类;在包间移动类;n添加包或删除包。添加包或删除包。18创建包图创建包图o良好包结构的关键是包内高内聚,包间低耦良好包结构的关键是包内高内聚,包间低耦合。合。n通常,当创建分析包模型时,应该尽量使包模通常,当创建分析包模型时,应该尽量使包模型简单。获得正确的包集合比使用诸如包泛化型简单。获得正确的包集合比使用诸如包泛化和依赖构造型的特征更加重要,这些特征可以和依赖构造型的特征更加重要,这些特征可以以后再添加,仅
15、当使用诸如包泛化和依赖构造以后再添加,仅当使用诸如包泛化和依赖构造型的特征使得模型更加容易理解时,才使用这型的特征使得模型更加容易理解时,才使用这些包整理技术。除了保持简单,还应该避免嵌些包整理技术。除了保持简单,还应该避免嵌套包。物件在嵌套包结构中埋藏得越深,模型套包。物件在嵌套包结构中埋藏得越深,模型变得越晦涩。变得越晦涩。19包图建模包图建模o将一个框架的所有类放置在相同的包中将一个框架的所有类放置在相同的包中o将相同继承层次的类放在相同的包中将相同继承层次的类放在相同的包中o彼此间有聚集或组成关系的类通常放在相同彼此间有聚集或组成关系的类通常放在相同的包中的包中o彼此合作频繁的类、信息
16、能够通过彼此合作频繁的类、信息能够通过UML顺顺序图和序图和UML协作图反映出来的类,通常放协作图反映出来的类,通常放在相同的包中在相同的包中o确定包与包之间的依赖关系或泛化关系确定包与包之间的依赖关系或泛化关系20设计包的原则设计包的原则o重用等价原则重用等价原则(Reuse Equivalency Principle)n把类放入包中时把类放入包中时,应考虑把包作为可重用的单元应考虑把包作为可重用的单元.o共同闭包原则共同闭包原则(Common Closure Principle)n把需要同时改变的类放在同一个包中把需要同时改变的类放在同一个包中.o共同重用原则共同重用原则(Common R
17、euse Principle)n不会一起使用的类不要放在同一个包中不会一起使用的类不要放在同一个包中.o非循环依赖原则非循环依赖原则(Acyclic Dependencies Principl)n包之间的依赖关系不要形成循环包之间的依赖关系不要形成循环.21构件图22构件图构件图o构件是系统的可替代的物理部分,是定义了构件是系统的可替代的物理部分,是定义了良好接口的物理实现单元,它是系统中可以良好接口的物理实现单元,它是系统中可以替代的部分;替代的部分;o每个构件体现了系统设计中的特定类的实现,每个构件体现了系统设计中的特定类的实现,良好定义的构件不直接依赖于其它构件,而良好定义的构件不直接依
18、赖于其它构件,而是依赖于其它构件所支持的接口,在这种情是依赖于其它构件所支持的接口,在这种情况下,系统中的一个构件可以被支持相同的况下,系统中的一个构件可以被支持相同的接口的其它构件所替代。接口的其它构件所替代。23构件图o接口是被软件或硬件所支持的一个操作集合,接口是被软件或硬件所支持的一个操作集合,每个接口有一个名称,通过使用命名的接口,每个接口有一个名称,通过使用命名的接口,可以避免在系统的各个构件之间直接发生依可以避免在系统的各个构件之间直接发生依赖关系,有利于新构件的替换。赖关系,有利于新构件的替换。o从构件组成上看,每个构件定义了从构件组成上看,每个构件定义了2组接口组接口(一组供
19、给接口,一组需求接口一组供给接口,一组需求接口),构件为供,构件为供给接口提供了提供了功能实现部分。给接口提供了提供了功能实现部分。24o对于一个构件而言,它包含对于一个构件而言,它包含5个要素:个要素:n1)接口声明:每个构件包含两组接口,一组是接口声明:每个构件包含两组接口,一组是供给接口,表明它能提供的服务,一组是需求供给接口,表明它能提供的服务,一组是需求接口,表明它需要的服务。接口,表明它需要的服务。n2)接口实现:构件是一个物理部件,它实现了接口实现:构件是一个物理部件,它实现了供给接口声明的服务。供给接口声明的服务。n3)构件标准:在创建构件时,每一个构件必须构件标准:在创建构件
20、时,每一个构件必须遵从某种构件标准。遵从某种构件标准。n4)封装方法:也就是构件遵从的封装标准。封装方法:也就是构件遵从的封装标准。n5)部署方法:一个构件可以有多种部署方法。部署方法:一个构件可以有多种部署方法。25构件与类o从构件的定义上看,构件和类十分相似:从构件的定义上看,构件和类十分相似:n二者都有名称,都可以实现一组接口,都可以参与依赖、泛化二者都有名称,都可以实现一组接口,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都可以参与交互。和关联关系,都可以被嵌套,都可以有实例,都可以参与交互。o构件与类的区别:构件与类的区别:n类表示是对实体的抽象,而构件是对存在于计算
21、机中的物理部类表示是对实体的抽象,而构件是对存在于计算机中的物理部件的抽象。也就是说,构件是可以部署的,而类不能部署。件的抽象。也就是说,构件是可以部署的,而类不能部署。n构件属于软件模块,而非逻辑模块,与类相比,它们处于不同构件属于软件模块,而非逻辑模块,与类相比,它们处于不同的抽象级别。甚至可以说,构件就是由一组类通过协作完成的。的抽象级别。甚至可以说,构件就是由一组类通过协作完成的。n类可以直接拥有操作和属性,而构件仅拥有可以通过其接口访类可以直接拥有操作和属性,而构件仅拥有可以通过其接口访问的操作。问的操作。26构件分类o按照构件在系统中的角色,把构件分为按照构件在系统中的角色,把构件
22、分为3种类型:种类型:n1)配置构件:组成系统的基础构件,是执行其它构件的配置构件:组成系统的基础构件,是执行其它构件的基础平台。如:操作系统、基础平台。如:操作系统、java虚拟机虚拟机(JVM)、数据库、数据库管理系统都属于配置构件。管理系统都属于配置构件。n2)工作产品构件:这类构件主要是开发过程的中间产物,工作产品构件:这类构件主要是开发过程的中间产物,如:创建构件时的源代码文件及数据文件都属于工作产如:创建构件时的源代码文件及数据文件都属于工作产品构件。这些构件并不是直接地参与系统运行。品构件。这些构件并不是直接地参与系统运行。n3)执行构件:在运行时创建的构件。例如由执行构件:在运
23、行时创建的构件。例如由DLL实例化实例化形成的形成的COM+对象、对象、Servlets、XML文档都属于执行文档都属于执行构件。构件。27构件图的概念构件图的概念o构件图提供当前模型的物理视图,对系统的静态实构件图提供当前模型的物理视图,对系统的静态实现视图建模。构件图显示一个系统物理设计时,构现视图建模。构件图显示一个系统物理设计时,构件所映射的类和对象的配置。件所映射的类和对象的配置。o一个构件图可以表示一个系统全部或者部分的构件一个构件图可以表示一个系统全部或者部分的构件体系。从组织内容看,构件图显示软件构件的组织体系。从组织内容看,构件图显示软件构件的组织以及构件之间的依赖关系,包括
24、源代码构件、二进以及构件之间的依赖关系,包括源代码构件、二进制代码构件以及可执行构件。制代码构件以及可执行构件。o构件图是对构件图是对OO系统物理方面建模的系统物理方面建模的2个图之一。个图之一。28构件图的概念构件图的概念o构件图主要用于描述各种软件构件之间的依构件图主要用于描述各种软件构件之间的依赖关系,例如,可执行文件和源文件之间的赖关系,例如,可执行文件和源文件之间的依赖关系,所设计的系统中的构件的表示法依赖关系,所设计的系统中的构件的表示法及这些构件之间的关系构成了构件图。及这些构件之间的关系构成了构件图。o与所有与所有UML的其它图一样,构件图可以包的其它图一样,构件图可以包括注释
25、、约束、包。括注释、约束、包。29构件图的概念30构件图的概念31构件图的作用构件图的作用o构件图的基本目的是:使系统人员和开发人员能够从整构件图的基本目的是:使系统人员和开发人员能够从整体上了解系统的所有物理部件,同时,也使我们知道如体上了解系统的所有物理部件,同时,也使我们知道如何对构件进行打包,以便交付给最终客户,最后,构件何对构件进行打包,以便交付给最终客户,最后,构件图显示了被开发系统所包含的构件之间的依赖关系。图显示了被开发系统所包含的构件之间的依赖关系。o构件图从软件架构的角度来描述一个系统的主要功能,构件图从软件架构的角度来描述一个系统的主要功能,如系统分成几个子系统,每个子系
26、统包括哪些类、包和如系统分成几个子系统,每个子系统包括哪些类、包和构件,它们之间的关系以及它们分配到哪些节点上等。构件,它们之间的关系以及它们分配到哪些节点上等。32构件图的作用构件图的作用o使用构件图可以清楚地看出系统的结构和功使用构件图可以清楚地看出系统的结构和功能。方便项目组的成员制定工作目标和了解能。方便项目组的成员制定工作目标和了解工作情况,同时,最重要的一点是有利于软工作情况,同时,最重要的一点是有利于软件的复用。件的复用。o从宏观的角度上,构件图把软件看作多个独从宏观的角度上,构件图把软件看作多个独立构件组装而成的集合,每个构件可以被实立构件组装而成的集合,每个构件可以被实现相同
27、接口的其它构件替换。现相同接口的其它构件替换。33构件的表示构件的表示o构件是定义了良好接口的物理实现单元,是构件是定义了良好接口的物理实现单元,是系统中可替换的物理部件。系统中可替换的物理部件。o构件可以是源代码构件、二进制构件或一个构件可以是源代码构件、二进制构件或一个可执行的构件。可执行的构件。o在在UML中,构件用一个左侧带有突出两个中,构件用一个左侧带有突出两个小矩形的矩形来表示。小矩形的矩形来表示。带版型的构件带版型的构件34构件的名称构件的名称o每个构件都必须有一个不同于其他构件的名每个构件都必须有一个不同于其他构件的名称。构件的名称是一个字符串,位于构件图称。构件的名称是一个字
28、符串,位于构件图标的内部标的内部o构件名称通常是从现实的词汇表中抽取出来构件名称通常是从现实的词汇表中抽取出来的短名词或名词短语,并依据目标操作系统的短名词或名词短语,并依据目标操作系统添加相应的扩展名,例如添加相应的扩展名,例如java和和dll。35构件的表示构件的表示o没有标识接口的构件表示法没有标识接口的构件表示法n没有标识接口的构件的图形表示方法分三种:没有标识接口的构件的图形表示方法分三种:o表示为标有构造型表示为标有构造型component的矩形;的矩形;o在矩形的右上角放置一个构件图标(一个小矩形,在矩形的右上角放置一个构件图标(一个小矩形,并在左侧加上两个突出的更小的矩形);
29、并在左侧加上两个突出的更小的矩形);o直接使用构件图标。直接使用构件图标。没有标识接口的构件的图形的三种表示法没有标识接口的构件的图形的三种表示法和类的名称相近,构件的名称也是一个正文字符串,它可以是简单名,也可以是和类的名称相近,构件的名称也是一个正文字符串,它可以是简单名,也可以是带路径的全名。带路径的全名。36构件的表示构件的表示o标识接口的构件表示法标识接口的构件表示法n对于一个构件而言,它有两类接口:提供(对于一个构件而言,它有两类接口:提供(provided)接口)接口和所需(和所需(required)的接口。标识接口的构件表示方法也有)的接口。标识接口的构件表示方法也有3种。种。
30、标识接口的构件标识接口的构件3种表示方法种表示方法37构件的表示构件的表示o(1)使用接口分栏表示:也就是将所需的接口和)使用接口分栏表示:也就是将所需的接口和提供的接口直接显示在矩形的分栏中,将构造型提供的接口直接显示在矩形的分栏中,将构造型provided和和required放在每个接口名放在每个接口名之前。之前。o(2)使用图标表示法:将接口的图标连接到矩形)使用图标表示法:将接口的图标连接到矩形的边框上,共给接口表示为通过一条实线链接到矩的边框上,共给接口表示为通过一条实线链接到矩形上的圆圈;而需求接口则表示为一条实线链接到形上的圆圈;而需求接口则表示为一条实线链接到矩形上的上半圆。矩
31、形上的上半圆。o(3)显示表示法:接口也可以用完整的显示形式)显示表示法:接口也可以用完整的显示形式表示,构件和其提供的接口之间是实现关系,而构表示,构件和其提供的接口之间是实现关系,而构件和其所需的接口之间是使用件和其所需的接口之间是使用use关系。关系。38Rose中的扩展构件子程序说明是一组子程序集合名子程序说明是一组子程序集合名,其其中不包括类定义中不包括类定义.子程序体表示子程序的实现子程序体表示子程序的实现.主程序是包含程序根的文件主程序是包含程序根的文件.39构件间的关系构件间的关系o构件有两组接口,供给接口为其它构件提供服务,需求构件有两组接口,供给接口为其它构件提供服务,需求
32、接口使用其它构件提供的服务因此,构件间的关系就接口使用其它构件提供的服务因此,构件间的关系就是依赖关系我们把提供服务的构件称为提供者,把使是依赖关系我们把提供服务的构件称为提供者,把使用服务的构件称为客户。用服务的构件称为客户。o在在UML中,构件图中依赖关系的表示方法与类图中依中,构件图中依赖关系的表示方法与类图中依赖关系相同,都是一个由客户指向提供者的虚线箭头。赖关系相同,都是一个由客户指向提供者的虚线箭头。40接口接口o接口用于描述构件所提供的服务的一组操作接口用于描述构件所提供的服务的一组操作集合,指定了构件的外部可见操作。构件和集合,指定了构件的外部可见操作。构件和接口之间的关系叫做
33、实现关系。可以通过接接口之间的关系叫做实现关系。可以通过接口访问一个构件。口访问一个构件。o接口和构件之间的关系分为两种:接口和构件之间的关系分为两种:n实现关系(实现关系(Realization)n依赖关系(依赖关系(Dependency)o在图中,接口和构件之间用实线连接表示实现关系;在图中,接口和构件之间用实线连接表示实现关系;而接口和构件之间用虚线箭头连接则表示依赖关系。而接口和构件之间用虚线箭头连接则表示依赖关系。41接口接口o在构件图中,常见的两种依赖关系:在构件图中,常见的两种依赖关系:n编译依赖编译依赖n调用依赖调用依赖o使用依赖关系的三种情况:使用依赖关系的三种情况:n客户类
34、要访问一个在提供者类(接口)中定义客户类要访问一个在提供者类(接口)中定义的值(常量或变量);的值(常量或变量);n客户类的操作激活提供者类(接口)的操作;客户类的操作激活提供者类(接口)的操作;n客户类的操作具有返回到提供者类(接口)的客户类的操作具有返回到提供者类(接口)的实例或参量的特征标记。实例或参量的特征标记。42接口构件与接口之间的关系构件与接口之间的关系:实现关系实现关系和和依赖关系依赖关系导出接口导出接口导入接口导入接口为了便于构件之间替换为了便于构件之间替换,建议使用以上依赖关系建议使用以上依赖关系43构件图分类o构件图可以分为两种:简单构件图和嵌套构件图。o简单构件图:把相
35、互协作的类组织成一个构件。利用构件图可以让软件开发者知道系统是由哪些可执行的构件组成的,这样,以构件为单位来看待系统时,让开发者清楚的看到软件系统的体系结构。o例n用户界面层:采用JSP页面实现用户界面。我们通过构造型Java Server page来表示构件。这一部分的构件,主要由边界类组成。n业务逻辑层:在实现上主要采用了JavaBean技术。使用构造型JavaBean来表示这一层的构件。这些构件主要由实体类组合而成。n数据访问层:该层将所有的数据访问操作封装在一个JavaBean中(如果是大型应用,可能封装成为EJB),标明了它是JDBC的一个实现。44构件图分类构件图分类o在这个例子中
36、,对可执行程序的体系结构进行了建模,在这个例子中,对可执行程序的体系结构进行了建模,以帮助开发者了解可执行程序模块之间的关联关系,从以帮助开发者了解可执行程序模块之间的关联关系,从而从宏观上认识系统。而从宏观上认识系统。45构件图分类o2 嵌套的构件图n使用嵌套的构件图来表示构件的内部结构。销售管理服务器中包含两个构件:销售管理服务器中包含两个构件:一个是处理收银机发送来的销售一个是处理收银机发送来的销售消息,完成交易处理;另一个是消息,完成交易处理;另一个是财务接口,负责处理与财务系统财务接口,负责处理与财务系统的连接,这时交易处理程序就委的连接,这时交易处理程序就委托财务接口来完成与财务系
37、统的托财务接口来完成与财务系统的数据传送。数据传送。在图中,销售管理服务器所提供在图中,销售管理服务器所提供的接口和所需的接口与构件连接的接口和所需的接口与构件连接的点上,都有一个小矩形,它表的点上,都有一个小矩形,它表示的是示的是“端口端口”。这些端口将通。这些端口将通过带箭头的实线与具体的子构件过带箭头的实线与具体的子构件连接,表示该接口的提供者或需连接,表示该接口的提供者或需求者。求者。46构件图与类图、包图的关系构件图与类图、包图的关系o基于类与构件之间的区别,也可以看到,类图侧重基于类与构件之间的区别,也可以看到,类图侧重于系统的逻辑设计,而构件图更侧重于系统的物理于系统的逻辑设计,
38、而构件图更侧重于系统的物理设计及实现。设计及实现。o包的设计主要是为了创建方便他人重用的包,因为包的设计主要是为了创建方便他人重用的包,因为人们通常不重用一个类,一般总是重用一组类。绝人们通常不重用一个类,一般总是重用一组类。绝大多数系统都是由许多个包建立的,这些包相互依大多数系统都是由许多个包建立的,这些包相互依赖,建立了一个庞大的依赖关系图,根据发生变化赖,建立了一个庞大的依赖关系图,根据发生变化的敏感度将类分组,基于同一个原因发生变化的类的敏感度将类分组,基于同一个原因发生变化的类放在同一个包中。放在同一个包中。47构件图应用o构件图描述了软件的组成和具体结构,表示了系统的静态部分。它能
39、够帮助开发人员从总体上认识系统。常采用构件图来描述可执行程序的结构、源代码、物理数据库组成和结构。o1 对可执行程序建模o通过构件图,可以清晰地表示出各个可执行文件、链接库、数据库、帮助文件和资源文件等其它可运行的物理构件之间的关系。在对可执行程序的结构进行建模时,通常应遵从以下原则:n(1)首先标识要建模的构件。n(2)理解和标识每个构件的类型、接口和作用。n(3)标识构件间的关系。48构件图应用对可执行文件之间的关系建模49构件图应用o例如,有一个语音呼叫中心程序,使用了三汇的语音卡的驱动程序,以及相应的TTS(文本转语音)引擎,现在我们用构件图来描述这三个构件的关系。50构件图应用构件图
40、应用o2 对源代码进行建模对源代码进行建模o通过构件图可以清晰地表示出软件的所有源文件之通过构件图可以清晰地表示出软件的所有源文件之间的关系,开发者能更好地理解各个源代码文件之间的关系,开发者能更好地理解各个源代码文件之间的依赖关系。在对源程序进行建模时,通常应遵间的依赖关系。在对源程序进行建模时,通常应遵从以下原则:从以下原则:n(1)表示出要重点描述的每个源代码文件,并把每个源代表示出要重点描述的每个源代码文件,并把每个源代码文件标识为构件。码文件标识为构件。n(2)如果系统较大,我们就利用包来对构件进行分组。如果系统较大,我们就利用包来对构件进行分组。n(3)用编译依赖关系来描述构件间的
41、关系。用编译依赖关系来描述构件间的关系。n(4)在构件图中,采用约束来表示源代码的版本号、作者在构件图中,采用约束来表示源代码的版本号、作者和最后的修改日期等信息。和最后的修改日期等信息。51构件图应用构件图应用o例如:是一个头文件,被和引用,其中还引用了另一个例如:是一个头文件,被和引用,其中还引用了另一个头文件,而又对有编译依赖关系。那么用构件图表示它头文件,而又对有编译依赖关系。那么用构件图表示它们间的关系。们间的关系。52部署图53部署图部署图o部署图部署图(deployment diagram,也称为配,也称为配置图置图)是用来显示系统中软件和硬件的物理是用来显示系统中软件和硬件的物
42、理架构。架构。o从部署图中,可以了解到软件和硬件组件之从部署图中,可以了解到软件和硬件组件之间的物理关系以及软件组件在处理节点上的间的物理关系以及软件组件在处理节点上的分布情况。分布情况。o使用部署图可以显示运行时系统的结构,同使用部署图可以显示运行时系统的结构,同时还表明了构成应用程序的硬件和软件元素时还表明了构成应用程序的硬件和软件元素的配置和部署方式。的配置和部署方式。54部署图的概念部署图的概念o部署图描述了系统中包括的计算机和其他的硬件设备,部署图描述了系统中包括的计算机和其他的硬件设备,如这些计算机和设备的位置以及它们之间是如何进行相如这些计算机和设备的位置以及它们之间是如何进行相
43、互连接的,即,部署图描述系统中的硬件节点及节点之互连接的,即,部署图描述系统中的硬件节点及节点之间如何连接的图。间如何连接的图。55部署图的概念部署图的概念o部署图的作用部署图的作用n一个一个UML部署图描述了一个运行时的硬件结点,部署图描述了一个运行时的硬件结点,以及在这些结点上运行的软件构件的静态视图。以及在这些结点上运行的软件构件的静态视图。部署图显示了系统的硬件,安装在硬件上的软部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构机器之间的中间件。件,以及用于连接异构机器之间的中间件。创创建一个部署模型的目的包括建一个部署模型的目的包括 o描述系统与生产环境中的其它系统间的依赖
44、关系,描述系统与生产环境中的其它系统间的依赖关系,这些系统可能是已经存在,或是将要引入的。这些系统可能是已经存在,或是将要引入的。o 描述一个商业应用主要的部署结构。描述一个商业应用主要的部署结构。o 设计一个嵌入系统的硬件和软件结构。设计一个嵌入系统的硬件和软件结构。o 描述一个组织的硬件描述一个组织的硬件/网络基础结构。网络基础结构。56部署图的概念部署图的概念o部署图的组成元素:节点和连接部署图的组成元素:节点和连接o节点节点n节点代表一个运行时计算机系统中的硬件资源。节点代表一个运行时计算机系统中的硬件资源。节点通常拥有一些内存,并具有处理能力。例节点通常拥有一些内存,并具有处理能力。
45、例如一台计算机、一个工作站等其它计算设备都如一台计算机、一个工作站等其它计算设备都属于节点。属于节点。n在在UML中,节点用一个立方体来表示。中,节点用一个立方体来表示。每一个每一个节点都必须有一个区别于其他节点的名称。节点都必须有一个区别于其他节点的名称。n节点的名称有节点的名称有2种表示方法:简单名字和带路径种表示方法:简单名字和带路径的名字。的名字。57部署图的表示部署图的表示o按照节点是否有计算能力,把节点分为两种按照节点是否有计算能力,把节点分为两种类型:处理器和设备,分别用构造型类型:处理器和设备,分别用构造型Processor和构造型和构造型Device表示表示处理器和设备。处理
46、器和设备。n处理器(处理器(Processor):是能够执行软件、具有计算能力的):是能够执行软件、具有计算能力的节点。节点。n设备(设备(Device):是没有计算能力的节点,通常情况下都是:是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务,例如打印机、通过其接口为外部提供某种服务,例如打印机、IC读写器,读写器,如果系统不考虑它们内部的芯片,就可以把它们看作设备。如果系统不考虑它们内部的芯片,就可以把它们看作设备。58部署图的表示部署图的表示(3)节点中的构件)节点中的构件当某些构件驻留在某个节点时,当某些构件驻留在某个节点时,可以在该节点的内部描述这些构可以在该节点的内部
47、描述这些构件。件。对于一张部署图而言,最有价值对于一张部署图而言,最有价值的信息就是节点上的内容,也就的信息就是节点上的内容,也就是安装在节点中的构件。对于这是安装在节点中的构件。对于这些构件,可以直接写在节点中,些构件,可以直接写在节点中,也可以用构件表示也可以用构件表示59部署图的表示部署图的表示对节点内驻留的构件描述对节点内驻留的构件描述60部署图的表示(对上图的解释)部署图的表示(对上图的解释)o直接描述:例如在直接描述:例如在B/S客户端中,必须安装客户端中,必须安装“Web浏览器浏览器”(并通过(并通过约束说明需要以上版本或以上版本)。通常,对于不是由开发团队生约束说明需要以上版本
48、或以上版本)。通常,对于不是由开发团队生成的制品,例如成的制品,例如IIS服务器这种描述方式,也可以通过服务器这种描述方式,也可以通过“约束约束”来描来描述它。述它。oartifact构造型:用来表示文件、构件等制品,例如构造型:用来表示文件、构件等制品,例如IIS服务器服务器上的、及上的、及C/S客户端上的。客户端上的。odatabase构造型:用来表示一个实际的数据库(对应构造型:用来表示一个实际的数据库(对应Oracle的的scheme),例如在数据库服务器上的),例如在数据库服务器上的sw。odeploymentSpec构造型:用来表示部署描述,通常对关键的构造型:用来表示部署描述,通
49、常对关键的配置文件进行建模,还可以在构造块中直接指出具体参数的值。配置文件进行建模,还可以在构造块中直接指出具体参数的值。o对于这些构造型,可以使用依赖关系来表示他们之间的相互关系,甚对于这些构造型,可以使用依赖关系来表示他们之间的相互关系,甚至可以表示跨节点之间的依赖(入到至可以表示跨节点之间的依赖(入到sw之间的依赖连接)。另外,之间的依赖连接)。另外,在图中,使用了一个在图中,使用了一个directory构造型,这并不是一个构造型,这并不是一个UML标标准构造型,它只是使用者的一个扩展。准构造型,它只是使用者的一个扩展。61部署图的表示部署图的表示o节点属性节点属性n象类一样,可以为一个
50、节点提供属性描述,如,处理器象类一样,可以为一个节点提供属性描述,如,处理器速度、内存容量、网卡数量等属性。可以为节点其提供速度、内存容量、网卡数量等属性。可以为节点其提供启动、关机等操作属性启动、关机等操作属性。o节点与构件的区别节点与构件的区别n节点表示一个硬件部件,构件表示一个软件部件。节点表示一个硬件部件,构件表示一个软件部件。n两者有许多相同之处,例如二者都有名称,都可以参与两者有许多相同之处,例如二者都有名称,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都可以参与交互都可以参与交互n但它们之间也存在明显的区别:构件是