第7章 软件体系结构风格与设计模式.ppt_第1页
第7章 软件体系结构风格与设计模式.ppt_第2页
第7章 软件体系结构风格与设计模式.ppt_第3页
第7章 软件体系结构风格与设计模式.ppt_第4页
第7章 软件体系结构风格与设计模式.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章软件体系结构样式和设计模式、1、前言、1、软件体系结构是软件工程的重要研究内容2、软件体系结构设计是软件开发的核心部分,是软件质量的重要保证。3.软件体系结构已经成为一个重要的研究方向和独立的科系分支。4、软件体系结构明确说明和分析软件的整体结构,并用于指导软件的后续开发。5.模式的本质:可解决和重复使用的解决方案、内容、7.1基本概念7.2软件体系结构说明语言7.3软件体系结构样式7.4设计模式、基本概念、软件设计模式:广义定义:可解决和重复使用软件问题的软件设计方案的狭义定义:设计模式是在特定方案中用于解决一般设计问题的类和对象级别说明的可重复使用的软件设计问题解决方案。基本概念,软

2、件体系结构样式:组件和连接器层中介绍的可重复使用的软件设计问题解决方案。基本概念,共性和差异:差异:1,设计模式在类和对象级别说明问题,粒度较小。2、体系结构风格是在组件和连接器级别说明问题,粒度大。建筑风格是广泛的设计模式。通用性:全部可重复使用的软件设计问题解决、内容、1.1基本概念1.2软件体系结构说明语言1.3软件体系结构样式1.4设计模式、软件体系结构说明语言、软件体系结构说明语言体系结构说明语言architectural description language,ADL是描述软件密集型系统的完整体系结构说明语言、写意图Wright ADL“组件”(Component)“连接器”(c

3、onnector)“通信端口”(Ports)“组件规范”(Component-spec)“计算”(Computation)“配置”(Connector) 图形体系结构说明语言GADL调用实例的GADL体系结构说明协议类图和序列图表GADL语言使用组件、类图表、序列图表等说明系统的软件体系结构,行为的说明GADL使用顺序图,而Wright使用代数CSP。内容,1.1基本概念1.2软件体系结构说明语言1.3软件体系结构样式1.4设计模式、软件体系结构样式、组件和连接器层中介绍的可重用软件设计问题解决管道/过滤器样式层次结构样式客户/服务器样式、核心特征、应用的场景、需要注意的问题、(1)管道/过滤

4、器样式、案例分析:计算a.txt中的字数,打印:shell命令:“cat a.txt |计算输入流中的字数,输出3配置图表命令用于组件,管道用于连接器,(1)管道/过滤器样式,实例解析:shell命令:“CAT a.txt | WC-实例解析:shell命令:”cat a.txt | WC-w | lpr”其他常见应用节目:编译器、信号处理等其他说明:牙齿模型在实施中可能会有很多其他变化,如主动和被动、多出口管道等。、(2)层次结构样式;实例解析:数据库系统;(2)层次结构样式;实例解析:数据库系统;数据库服务通信端口db;(2)层次结构样式;特征:从外部提供服务的组件开始;牙齿设计风格容易分

5、解复杂的系统。此外,更换零部件也很容易。只要界面保持一致,就可以更换一个级别的软件,而不会影响系统的其他部分。、(2)分层样式,其他常见应用程序:开放系统互连(OSI) 7层网络模型,Windows NT操作系统的内核结构。、(2)分层样式,其他说明:优点是结构明确、可替换性好、易于控制复杂性。但是也有缺点,例如效率低下。换句话说,分层中较高层的数据将分层传递和传递,从而降低系统效率。、(3)客户/服务器样式,案例分析:FTP系统、(3)客户/服务器样式,特征这些样式被广泛使用,因为它们集中了服务功能的实现并促进了系统的实现。(3)客户/服务器样式和其他常见应用程序:电子邮件系统、WWW系统、

6、telnet系统、CVS版本控制系统等;数据库服务器可以为多个浏览器实例提供服务,并为CVS系统提供服务。(3)客户/服务器风格,其他说明:在客户/服务器风格系统中,服务器通过集中资源和计算,很容易成为存储和计算瓶颈,实际应用程序可以采用群集处理,以提高服务器性能。与此同时,这些系统容易受到拒绝服务攻击,因此必须针对设计和应用程序的用途进行考虑。(David assell、Northern Exposure(美国电视电视剧)、Northern Exposure(美国电视电视剧)、Northern Exposure(电视),牙齿风格的系统经常需要在服务器中存储更多客户的状态信息,因此大量使用并行

7、执行技术,如多进程、多线程等。)。这还包括进程、线程的动态生成、调度、删除等问题。这些问题的好坏直接影响服务器的性能。内容、1.1基本概念1.2软件体系结构说明语言1.3软件体系结构样式1.4设计模式、设计模式、文档7-2中的23种设计模式,并将它们分为三种茄子类型:生成设计模式、结构设计模式和行为设计模式。,设计模式,工厂方法Abstract Factory Singleton Composite Proxy Iterator(1)Factory Method,动机和示例:“龙珠”游戏,魔术管道:弹球(,(1) Factory Method,动机和案例:“龙珠”游戏-设计2,newball动

8、作包虚拟函数MakeBallFactoryMethod子类(描述各种马力管道)此时,如果每种类型的小实体的说明构成了类层次结构,则可以使用工厂方法模式将每种类型的大实体也描述为类层次结构。(1)工厂方法;结构:(1)工厂方法;核心思想摘要:将父类中的对象创建任务打包为虚拟函数。通过在子类中复盖虚拟函数创建的对象,间接自定义公共行为。虚拟函数的多态机制允许父类集中描述公共行为,并从子类中提取特殊行为(其他对象的创建)。(2) Abstract Factory、动机和示例:魔法管线。在前面的设计中,三个MakeBallFactoryMethod工厂方法分布在三个MagicPipe类中。为了降低复杂

9、性,可以单独考虑所有生成行为。换句话说,创建球的行为是通过形成单独的工厂类来创建对象。(2) Abstract Factory、动机和实例:设计3、(2) Abstract Factory、动机和实例:设计4、球、长方体和其他小实体,抽象工厂类专门创建各种小实体(2) Abstract Factory,如果适用:如果需要创建多种样式的小实体集,并且可以灵活地调整特定的创建方法,则可以使用Abstract Factory方案将公共创建行为描述为抽象类,并将特定创建方法描述为该抽象类的子类。(2) Abstract Factory,结构:(2) Abstract Factory,核心思想摘要:提取

10、需要创建以提供灵活性的同一样式的小型实体组的一般特征,并将其描述为一组抽象产品类,从而使BigEntity和特定产品特性具有特定的生成行为和特定的产品特性、(3) Singleton、动机和实例:日志记录功能,通常应用程序节目中只需要一个日志实例。实施方案1,(3) Singleton,实施方案1,(3) Singleton,实施方案1,(3) Singleton,实施方案1:通常只需要两个茄子缺陷(如果只有一个日志文件),这样做g,(3) Singleton,实施方案2:使用Singleton模式,(3) Singleton,实施方案2:使用Singleton模式,(3) Singleton

11、,实施方案2:,(3) Singleton,结构:如果需要确定只有一个实例的类是否为Singleton,则类Singleton将设置静态成员函数,以创建自己的实例,并提供外部访问接口。(4) Composite、动机和案例:幻灯片制作软件。一张幻灯片可以有多种元对象,如文本框、图形、图像、影片和声音。图元具有重复组合性质。(4) Composite,如果适用:如果需要说明的对象具有“重复组合”要素,并且您希望用户忽略主对象和合并对象之间的差异,则适用此选项。结构:(4) Composite,核心思想摘要:提供表示基础对象和组合对象中所有对象的公共抽象超类,并通过建立从该抽象超类到组合对象类的聚

12、集关联间接设置“递归组合”特性。(5)代理、动机和实例:网络中间件。在这些程序中,实际工作的对象可以在与客户端应用程序不同的地址空间中在远程主机上运行。为了方便编程,使用了很多代理模式。设定代理主机物件:与Server物件相同的介面,与Client物件位于相同的系统、相同的位址空间,而且所有传送的工作要求最终都会传送Server物件。使客户端对象的设计开发变得容易。与本地编程一样,网络交互的许多细节集中在代理对象实现上。(5)代理,如果适用:在上例中,代理模式属于“远程代理”,因为该模式用于阻止网络交互细节和使远程访问透明。为了提高性能和减少开销,有时会设置“虚拟代理”,例如文档文件的图像代理

13、。牙齿代理仅说明有关映像位置、大小等的基本信息。特定图像档案详细信息仅在需要时创建和描述实际图像对象。此外,如果访问的目标的内部结构复杂,需要智能分析、决策和协调,则可以使用“智能代理”来阻止智能医生决策(如“调度”代理)的细节。也就是说,根据多家航空公司的预订服务,可以智能地选择符合用户要求的预订体系。(5)代理、结构、(5)代理、核心思想摘要:创建具有相同接口的代理对象,然后将操作请求转发给实际对象,以便向客户隐藏“转发流程”详细信息(如远程网络交互、智能),设计方案1,(6) Iterator、动机和实例:横向支持列表设计。设计情景1问题:首先,牙齿设计只能说明一种茄子横移方法,例如向前或向后横移,但不能同时说明多种横移方法。也许你认为列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论