第17次课uml08.架构设计-包图组件图部署图.ppt
- 文档编号:11158157
- 上传时间:2023-05-29
- 格式:PPT
- 页数:102
- 大小:5.48MB
第17次课uml08.架构设计-包图组件图部署图.ppt
《第17次课uml08.架构设计-包图组件图部署图.ppt》由会员分享,可在线阅读,更多相关《第17次课uml08.架构设计-包图组件图部署图.ppt(102页珍藏版)》请在冰点文库上搜索。
面向对象分析与设计Object-OrientedAnalysis&Design,第08章面向对象的设计(构架设计),Object-OrientedDesign-RefineArchitecture,-3-,学习路线图,-4-,内容安排,包图构件图部署图,包图,1包图的概念,2包的表示,3包图中的关系,4阅读包图,5创建包图,6包图建模,1包图的概念,1包包就像一个“容器”,可用于组织模型中的相关元素,以便容易理解。
将相关的各种类型的模型元素组织成组的通用机制。
包的实例没有任何语义。
仅在建模时有意义,而不必转换到可执行的系统中。
1包图的概念,2包图描述包及其关系的图。
图5-1是一个典型的包图。
包图(PackageDiagram)是维护和控制系统总体结构的重要建模工具。
1包图的概念,3包的作用对语义上相关的元素进行分组。
提供配置管理单元。
提供并行工作的单元。
提供封装的命名空间,同一个包中,其元素的名称必须唯一。
1包图的概念,3包中的元素包中的元素:
类、接口、构件、节点、协作、用例、图以及其他包。
一个模型元素不能被一个以上的包所拥有。
如果包被撤销,其中的元素也要被撤销。
2包的表示,1包的符号表示UML中,用文件夹符号来表示一个包。
包由一个矩形表示,它包含2栏。
最常见的几种包的表示法,如图2所示:
2包的表示,1包的符号表示嵌套包及其表示,一个包可以包含其他的包;嵌套包可以访问自身的元素;应尽量避免使用嵌套包,一般2-3层最好。
Library,Users,嵌套包,Librarian,Borrower,2包的表示,1包的符号表示嵌套包及其表示,外部表示法,2包的表示,2包的名称每个包必须有一个与其他包相区别的名称。
两种形式:
简单名和路径。
System:
Web:
UI,System.Web.UI,2包的表示,3包的元素在一个包中可以拥有各种其他元素,这是一种组成关系。
每一个包就意味着一个独立的命名空间,两个不同的包,可以具有相同的元素名。
在包中表示拥有的元素时,有两种方法:
一种是在第二栏中列出所属元素名,一种是在第二栏中画出所属元素的图形表示。
2包的表示,4包的可见性公有的(public)“”受保护的(protected)“”私有的(private)“”,2包的表示,4包的可见性包内元素的可见性控制了包外部元素访问包内部元素的权限。
3包图中的关系,包之间可以有两种关系:
引用和访问依赖:
在一个包中引入另一个包输出的元素泛化:
说明包的家族,3包图中的关系,1依赖关系使用关系use:
说明客户包中的元素以某种方式使用提供者包的公共元素。
包含关系import:
提供者包命名空间的公共元素被添加为客户包命名空间上的公共元素访问关系access:
提供者包命名空间的公共元素被添加为客户包命名空间上的私有元素。
客户,提供者,3包图中的关系,1依赖关系跟踪关系trace:
通常表示一个元素历史地发展成为另一个进化版本。
分析模型是设计模型的元模型,元模型的元素进化为设计模型,这时指的是模型之间的关系,不是元素之间的关系。
元模型,3包图中的关系,2泛化关系,包间的泛化关系与类之间的泛化关系类似。
4阅读包图,阅读包图的方法如下:
了解每个包的语义及其包含元素语义。
理解包间的关系。
找到依赖复杂的包,从最复杂的包开始阅读,然后依次是简单的包。
4阅读包图,对上面包的理解如下:
(1)根据use关系可以发现Client包使用Server包,Server包使用System.Data.SqlClient包,根据它们所包含的元素语义,可以得知Client包负责Order(订单)的输入,并通过Server包来管理用户的登录(LoggingService)和数据库存储(DataBase);而Server包还通过.Net的SQLSERVER访问工具包,来实现与数据库的连接和通讯。
(2)看import关系,从RULE包所包含的元素语义可知,该包负责处理一些规则,并引用一个具体的窗体(Window);而Client包通过引用RULE来实现整个窗体和表单的显示,输入等,并且还将暂存Order(订单)信息。
(3)接着来看包的泛化关系。
GUI有两个具体实现:
一个是针对C/S的WindowsGUI,一个是实现B/S的WebGUI.,例子描述分析系统工作流程:
1)通过Internet连接到股票信息服务器,获取实时的股票信息,并存入数据库中。
2)根据用户的输入和选择,从数据库中获取相应的信息,展现在屏幕中。
3)在数据的展现过程中,将需要绘制大量的图表。
举例,举例,根据功能模块组织包:
举例,业务,呈现,数据,设计包的原则,在考虑如何对类进行分组并放入不同的包时,主要依据类之间的依赖关系进行分组。
包中的类应该是功能相关的,在建包时,应把概念上和语义上相近的模型元素纳入一个包。
依赖关系其实是耦合的一种体现,如果两个包中的类之间存在依赖关系,那么这两个包之间就有了依赖关系,也就存在耦合关系。
好的设计要求体现高内聚、低耦合的特性。
设计包的原则,设计包时,应遵循以下原则:
重用等价原则共同闭包原则共同重用原则非循环依赖原则,设计包的原则,重用等价原则把类放入包中时,应考虑把包作为可重用的单元。
共同闭包原则把那些需要同时改变的类放在同一个包中。
若一个类的行为或结构的改变要求另一个类做相应的改变;删除了一个类后,另一个类成多余的;两个类之间有大量的消息发送。
设计包的原则,共同重用原则把不会一起使用的类不要放在同一个包中。
非循环依赖原则包之间的依赖关系不要形成循环。
设计包的原则,合并,分解,消除循环依赖的示例,4创建包图,绘制包图的基本步骤如下:
分析系统的模型元素(通常是对象类),把概念上或语义上相近的模型元素归入同一个包。
对于每一个包,标出其模型元素的可视性,确定包内每个元素的访问属性,是公共、保护或私有。
确定包与包之间的依赖联系,特别是“引入”关系。
确定包与包之间的泛化关系。
绘制包图。
对结果进行精化和细化。
小结,首先解释了几种常见的包图表示法之后,通过了一个简单的例子来说明包的可见性、依赖关系、泛化等概念;其次,概要地说明了五种包的构造型。
说明如何寻找包、确定包之间的依赖关系,从而绘制了出一个表明软件体系结构的包图。
练习题,在“远程网络教学系统”中,假设我们需要三个包,分别是Business包、DataAccess包和Common包,其中Business包依赖DataAccess包和Common包,DataAccess包依赖Common包。
在类图中试着创建这些包,并绘制其依赖关系。
构件图,1构件图的概念,2构件图中的元素,3构件图与类的比较,4构件图的作用,5构件图建模,构件图显示代码本身的逻辑结构配置图显示系统运行时刻的结构,1构件和构件图概述,构件(Component)是系统中遵从一组接口且提供其实现的物理的、可替换的部分.每个构件体现了系统设计中特定类的实现。
构件图(Componentdiagram)显示一组构件以及它们之间的相互关系,包括编译、链接或执行时构件之间的依赖关系.构件图是对OO系统物理方面建模的2个图之一.,构件图实例,构件图实例,构件的类型,部署构件,这类构件是构成一个可执行系统必要和充分的构件,例如动态链接库、可执行文件,另外还包括如COM+、CORBA及企业级JavaBeans、动态Web页、数据库表等.工作产品构件,这类构件主要是开发过程的产物,包括创建实施构件的源代码文件及数据文件。
如:
源代码文件、数据文件等,这些构件可以产生部署构件.执行构件,作为一个正在执行的系统的结果而被创建的.,2构件图中的元素,
(1)构件,基本构件,带版型的构件,2构件图中的元素,
(1)构件Rose中的扩展构件,子程序说明是一组子程序集合名,其中不包括类定义.,子程序体表示子程序的实现.,2构件图中的元素,
(1)构件Rose中的扩展构件,主程序是包含程序根的文件.,2构件图中的元素,
(1)构件Rose中的扩展构件,包说明是类的头文件.,包体包含类的操作代码.,2构件图中的元素,
(2)接口,构件具有它们支持的接口和需要从其他构件得到的接口。
接口是被软件或硬件所支持的一个操作集。
通过使用命名的接口,可以避免在系统中各个构件之间直接发生依赖关系,2构件图中的元素,
(2)接口,构件与接口之间的关系:
实现关系和依赖关系,导出接口,导入接口,供访问操作的构件使用,由提供操作的构件提供,接口实例,将整个“在线酒店预订子系统”作为一个构件,考虑其对外接口。
显然它首先需要提供用户界面;其次还需要与加盟的酒店系统连接,完成预订工作,2构件图中的元素,(3)依赖关系,良好定义的构件不直接依赖于其他构件而依赖于构件所支持的接口。
在这种情况下,系统中的一个构件可以被支持正确接口的其他构件所替代。
3构件与类的比较,wordProcessor.exe,SpellChecker,WordCounter,WordProcessor,component.java,Image.java,ImageObserver,+imageUpdate():
Bool,ImageObserver,Image.java,component.java,构件的实现与依赖接口示例,构件与类的关系示例,字典,拼写检查,同义词,4构件图的作用,
(1)对源代码文件之间的关系建模,4构件图的作用:
源代码建模,识别出感兴趣的相关源代码文件的集合,并把它们建模为构件;对于较大的系统,利用包来进行分组;通过约束来表示源代码的版本号、作者和最后修改日期等信息;用依赖关系来表示这些文件间编译的依赖关系,4构件图的作用,
(2)对可执行文件之间的关系建模,4构件图的作用:
可执行文件建模,首先识别你想建模的构件集合考虑集合中各构件的不同类型对这个集合中的每个构件,分析它们之间的关系,5构件图建模技术,对系统中的构件建模对相应构件提供的接口建模对构件之间的依赖关系建模对建模的结果进行精化和细化,组件图建模实例,对于图书管理系统进行组件图建模,主要从两个方面进行建模:
业务逻辑包组件图建模GUI包组件图建模,业务逻辑包组件图建模主要包括:
借阅组件(Loan.java)书目组件(Title.java)图书组件(Book.java)借阅者组件(Borrower.java)管理员组件(Manager.java)其中,Manager.java组件依赖于系统管理员组件(Administrator.java)和图书管理员组件(Librarian.java)。
业务逻辑包组件图,GUI包包括MainWindow类和ManageWindow类GUI包组件图主界面组件图管理员用户界面组件图,主界面组件图包括:
主窗体组件(MainWindow.java)借书对话框组件(BorrowDialog.java)还书对话框组件(ReturnDialog.java)密码修改对话框组件(ModifyDialog.java)查询对话框组件(QueryDialog.java)显示对话框组件(DisplayDialog.java),管理员用户界面组件图包括:
书目管理对话框组件(TitleDialog.java)图书管理对话框组件(BookDialog.java)借阅者管理对话框组件(BorrowerDialog.java),部署图,1部署图概述,2部署图的基本概念,3结点与构件的比较,4部署图应用,5部署图建模,1部署图概述,部署图(Deploymentdiagram)也称配置图、实施图,是对OO系统进行物理建模的图.部署图用来显示系统中计算结点的拓朴结构和通信路径与结点上运行的软构件等.一个系统只有一个部署图,部署图通常用于理解分布式系统.部署图由体系工程师、网络工程师、系统工程师等描述.,1部署图概述,2部署图中的基本概念,
(1)结点(node),结点是运行时代表计算资源的物理元素,结点通常有内存及处理能力.它可以是物理设备及运行在该设备上的软件系统.,结点有2种类型:
处理器与设备,处理器是能够执行软件、具有计算能力的节点。
设备是没有计算能力的节点,通常情况下都是通过其接口为外部提供某种服务。
结点中的部署,部署图可以将结点和构件结合起来,以建模处理资源和软件实现之间的关系。
当构件驻留在某个节点时,可以将它建模在图上该结点的内部。
为显示构件之间的逻辑通信,需要添加一条表示依赖关系的虚线箭头。
2部署图中的基本概念,
(2)连接(connection),连接表示系统之间进行交互的通信路径,它表示2个硬件之间的关联关系.可以有角色、多重性、约束、版型等.,3结点与构件的比较,部署图的例子,PC和外设与ISP连接的部署图,4如何绘制部署图,绘制部署图主要是为了描述系统中各个物理组成部分的分布、提交和安装过程。
在实际应用中,并不是每一个软件开发项目都必须绘制部署图。
如果项目开发组所开发的软件系统只需要运行于一台计算机并且只需使用此计算机上已经有操作系统管理的标准设备(如键盘、鼠标和显示器等),这种情况下就没有必要绘制部署图。
如果项目开发组所开发的软件系统需要使用操作系统管理以外的设备(如数码相机和路由器等),或者系统中的设备分布在多个处理器上,这时就有必要绘制部署图,以帮助开发人员理解系统中软件和硬件的映射关系。
绘制系统部署图,可以参照如下步骤进行:
(1)对系统中的节点建模;
(2)对节点间的关系建模;(3)对系统中的构件建模,这些构件来自构件图;(4)对构件间的关系建模;(5)对建模的结果进行精化和细化。
如何绘制部署图,以一个IC卡考勤系统的例子来说明部署图的绘制过程。
确定所需的节点及节点间的连接关系
(1)IC卡读卡器:
提供给员工刷卡用,它收集刷卡的事件信息,传给应用系统,并存入数据库中。
(2)应用服务器:
用来负责从IC卡读卡器重收集信息,并对管理人员提供员工设置、考勤查询等功能。
(3)数据库服务器:
用来存储考勤数据,由于该系统比较小,因此在物理上可以与应用服务器合并。
(4)客户端软件:
提供给管理人员使用,连接应用服务器,完成相应操作。
另:
客户端与服务器的连接显然应该是通过网络(假设是百兆以太网),而服务器与IC卡读写器则是通过串口(RS-232C).,如何绘制部署图,如何绘制部署图,2.根据实现描述节点结合具体的实现来描述每个节点,通过约束以及构件来表示他们内部的结构与特点。
假设该系统使用的是Delphi+Access开发的。
(1)客户端:
需要使用Windows操作系统,安装客户端软件(假设名为KaoQin.exe)。
(2)服务器:
包含一个用Delphi开发的服务端软件(假设名为kqServer.exe)它需要与Access数据库交互(假设名为KaoQin.mdb),并且需要通过IC卡读卡器的驱动程序(假设名为cardReader.dll)来实现与IC卡读卡器通信。
(3)IC卡读卡器:
对于本系统而言,它是不执行构件的设备,但为了方便员工,安装了3个。
如何绘制部署图,部署图应用,在实际的应用中,部署图主要用在设计和实现两个阶段。
1.设计阶段在这一阶段,部署图主要用来描述硬件节点以及节点之间的连接。
仅描述硬件节点的部署图,12.4部署图应用,2.实现阶段在实现阶段,已经生产出了软件构件,因此,我们可以把构件分配给对应的节点。
实际应用当中,部署图主要用来对嵌入式系统、客户机/服务器系统、分布式系统进行建模,而且能够起到很好的作用。
描述了节点内部署的构件,部署图应用,3为嵌入式系统建模如果我们采用部署图对嵌入式系统进行了建模,通过部署图,硬件工程师和软件开发者之间就能做更好的交流。
在对嵌入式系统进行建模时,重点在于描述处理器和设备之间的关系;可以考虑对处理器和设备采用更直观的图标。
描述嵌入式系统的部署图,自动加油站系统的部署图,部署图应用,4为客户机/服务器和分布式系统建模当开发的软件要运行在多台计算机上时,就必须将软件构件以合理的方式部署在各个节点上。
其中客户机/服务器结构就是一种典型的分布式系统模型,它包含三层B/S结构和两层C/S结构。
对于大型分布式系统可能还包括负载均衡、集群等部署结构,部署图的引入能够很好地对其进行表述。
公司管理系统的拓扑结构部署图,4部署图建模技术,对系统中的结点建模。
对结点之间的关联关系建模。
对驻留在结点上的构件建模。
对驻留在结点上的构件之间的依赖关系建模。
对建模的结果进行精化和细化。
确定结点和结点间的关联关系,IC卡读卡器:
提供给员工刷卡用,它将收集刷卡的时间信息,传给应用系统,并存入数据库中应用服务器:
用来负责从IC卡读卡器中收集信息,并对管理人员提供员工设置、考勤查询等功能数据库服务器:
用来存储考勤数据,由于该系统比较小,因此在物理上可以与应用服务器合并客户端软件:
提供给管理人员使用,连接应用服务器,完成相应操作,确定结点内的构件和构件间的依赖关联,客户端:
需使用Windows操作系统,安装客户端软件(假设名为KaoQing.exe)服务器:
包含一个用Delphi开发的服务端软件(设为KqServer.exe),它需要与Access数据库交互(设为KaoQing.mdb),并且需要通过IC卡读卡器的驱动程序(假设名为cardReader.dll)来实现与IC卡读卡器通信IC卡读写器:
对于本系统而言,它是不执行构件的设备,不过为了方便员工,安装了3个。
例如:
家用计算机系统,1确定模型范围。
家用计算机2确定分布结构。
计算机为中心3确定节点和它们的连接。
计算机、调制解调器、ISP、显示器、打印机4把组件分布到节点。
计算机中有组件:
windows、office、IE5为不同组件之间的依赖建模。
1、家用计算机系统,2、细缆以太网细缆以太网是:
计算机与网络电缆之间通过一个叫做T形连接器的连接.一个网端可以通过一个中继站(repeater)加入到另一个网段中.中继站(repeater):
信号放大,整形,再转发.,例建模一个网上扫描系统的部署图。
其详细的需求如下所示:
扫描仪用来扫描产品信息。
扫描仪通过内部的PCI总线连接到网卡。
需要编写代码来控制扫描仪,代码驻留在扫描仪内部。
扫描仪通过无线网卡与插入到Web服务器KONG的无线hub通信,服务器通过HTTP协议向客户PC机提供Web页。
Web服务器安装定制的Web服务器软件,通过专用数据访问组件与产品数据库交互。
在客户的PC机上将提供专用的浏览器软件,它运行产品查询插件,只与定制的Web服务器通信。
1添加节点第一项任务是确定系统的节点。
下图演示了上面需求列表中提及的所有硬件。
2.添加通信关联为确定的节点添加通信关联。
从需求列表中可以确定如下所示通信关联:
扫描仪通过内部的PCI总线连接到网卡。
网卡通过无线电波与无线hub通信。
无线hub通过USB连接到名为KONG的服务器实例。
KONGWeb服务器通过HTTP与客户组件通信。
3添加组件、类和对象接下来需要确定组件和其他内容,如类和对象。
需求列表显示下列组件可以用于图中:
控制扫描仪的代码(名为ScanEngine组件)定制的Web服务器软件(名为WebSeverSoft组件)专用的数据访问组件(名为DataAccess组件)专用的浏览器软件(名为Browser组件)产品查询插件(名为ProductLookupAddIn组件)另外,前面还提到了产品数据库,但是它不必像前面的几个项目那样也建模为软件组件。
我们要把产品数据库建模为一个类实例ProductDB。
4添加依赖关系实现部署图的最后一步是添加组件和对象之间的依赖关系。
它们具有下列依赖关系:
WebServerSoft组件依赖于DataAccess组件。
DataAccess组件依赖于ProductDB对象。
专用浏览器软件只通过运行查询插件与定制的Web服务器交互,它提供了下面的依赖关系:
Browser组件依赖于WebServerSoft组件。
ProduciLookupAddln组件依赖于Browser组件。
小结,构件表示一个具体的物理元素构件图用于显示一组构件以及它们之间的相互关系使用构件图可以对源代码文件之间、可执行文件之间的相互关系建模部署图可以显示系统中计算结点的拓扑结构和通信路径、结点上运行的软构件等。
部署图中的结点分处理机和设备两种类型部署图中的连接表示的是两个硬件之间的关联关系,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 17 uml08 架构 设计 组件 部署