软件体系结构风格PPT课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件体系结构风格PPT课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 风格 PPT 课件
- 资源描述:
-
1、软件体系结构风格3.1 软件体系结构风格概述o 软件体系结构是随着软件工程的发展而逐步发展起来的。20世纪90年代,人们开始对软件体系结构进行研究,当时,软件系统程度的提高和规模的扩大使得软件开发人员开始感到很困难,而且,开发出软件的质量也难以保证。软件体系结构概念给人们进行软件开发带来了曙光,至今它已成为现代软件开发过程中一个至关重要的部分。o MarShaw和DavidGarlan 中提出的软件体系结构定义为:能够用来具体描述软件系统控制结构和整体组织的一种体系结构,能够表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口。由于软件体系结构作为软件工程的一个独立研究领域出现时
2、间不长,对于软件体系结构概念并没有统一的定义。但研究者们对软件体系结构也达成了一些共识:(1)软件体系结构是对系统的一种高层次的抽象描述。主要是反映拓扑属性,有意忽略细节;(2)软件体系结构是由构件和构件之间的联系组成,构件又有它自身的体系结构;(3)构件的描述有3个方面:计算功能、结构特性及其他特性。由此,产生了软件体系结构风格的概念。硬件、操作系统、数据库和网络差异的屏蔽;解释器只接收符合语法规则的程序作为它的输入,经过每个状态的执行,最终得出它的结果是否为真。如果为真,则找到它的一个模型,如果为假,则会提示错误。通用核心层完成的是软件的一些通用的公共操作,这此操作能够尽量做到不与具体的数
3、据库和表结构相关。客户端摆脱了业务逻辑的束缚,对业务逻辑的变更不再敏感,给应用程序的维护带来了便利;管道/过滤器风格的优点:从过程控制的角度来分析和解释构件之间的交互,同时,应用这种交互来改善系统性能。需要新的功能构件时也只需要按规定独立开发,完成后组装到原软件平台中即可使用,实现了一种二进制的软件集成方法。硬件、操作系统、数据库和网络差异的屏蔽;应用的负载均衡和管理功能;三层C/S结构同样包括客户机、应用服务器和数据库服务器三个部分。事件驱动架构是由Gartner公司于2003年提出的。这种模式的构件是对象,或者也可以称为抽象数据类型的实例。维修收银功能需要涉及维修时的派工、外出服务和维修用
4、料,因此,适当放宽了要求,采用了非完全正交体系结构,允许线索之间有适当的调用,不同线索之间可以共享构件。o 从软件体系结构的定义可以看出,软件体系结构主要涉及构件、构件之间的联系与约束、由构件通过相互交互形成的系统架构三个方面的内容。可用下图来简单表示软件体系结构。o 通过使用软件体系结构,可以有效地分析用户需求、方便系统的修改以及减小程序构造风险。随着软件规模的不断增大和复杂程度日益提高,系统框架结构的设计变得越来越关键。o 软件框架设计的核心问题是:能否重用已经成型的体系结构方案。由此,产生了软件体系结构风格的概念。软件体系结构风格包括构件、连接件和一组将它们结合在一起的约束限制,诸如:拓
5、扑限制和语义限制等。3.2 常用的软件体系结构风格常用的软件体系结构风格 o 软件体系结构的风格是在开发软件的过程中不断积累起来的,是多年探索研究和工程实践的结果。它由组织规则及结构构成,是描述领域中系统组织方式的惯用模式,是对某一特定领域中系统所共有的结构和语义特性的反映。体系结构风格的分类:o 数据流风格:批处理序列、管道/过滤器;o 仓库风格:数据库系统、超文本系统、黑板系统;o 独立构件风格:进程通迅、事件系统;o 调用/返回风格:主程序/子程序、面向对象风格、层次结构;o 虚拟机构格:解释器、基于规则的系统。管道/过滤器风格o 管道/过滤器架构是典型的数据流软件架构风格。主要包括过滤
6、器和管道两种元素。o 在这种体系结构中,每个模块都有一组输入和一组输出。每个模块从它的输入端接收输入数据流,在其内部经过处理后,按照标准的顺序将结果数据流送到输出端,以达到传递一组完整的计算结果的目的。o 每个部件从输入接口中读取数据,经过处理后将结果数据置于输出接口中,这样的部件称为过滤器。这种模型的连接者将一个过滤器的输出传送到另一个过滤器的输入,这种连接者称为管道。o 过滤器的基本结构如下图所示:o 管道/过滤器结构将数据流处理分为几个顺序的步骤来进行,一个步骤的输出是下一个步骤的输入,每个处理步骤由一个过滤器来实现。o 在管道/过滤器风格中,过滤器必须是相互独立的实体,它们相互之间的状
7、态不可共享。每一个过滤器并不能识别它的数据流上游和下游的过滤器的身份,那么就需要在过滤器的输入输出端口的管道必须来保证输入数据和输出数据类型的衔接的正确性。管道/过滤器风格的系统架构图如下图所示。管道/过滤器风格的优点:o 设计人员将整个系统的输入输出行为理解为单个过滤器行为的叠加与组合。o 任何两个过滤器,只要它们之间传送的数据遵守共同的规约就可以相连接。o 整个系统易于维护和升级。o 支持并发执行。o 传统的编译器是管道/过滤器体系结构风格的另一个著名的例子。编译器由词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成等几个模块组成,一个模块的输出是另一个模块的输入。源程
8、序经过各个模块的独立处理之后,最终将产生目标程序。编译器的框架结构,如图所示。面向对象体系结构风格o 抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。o 面向对象体系结构风格建立在数据抽象和面向对象的基础上,数据表示和相关的基本操作封装在抽象数据类型或对象中。这种模式的构件是对象,或者也可以称为抽象数据类型的实例。对象是一类可称之为管理者的构件实例,因为它负责维护一种资源的完整性。o 数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的组件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的组件,因为它负责保持资源的完整性。对象是通过函
9、数和过程的调用来交互的,面向对象体系结构如图所示。面向对象系统的优点:o 一个对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象;o 对象将数据和操作封装在一起,提高了系统内聚性,减小了模块之间的耦合程度,使系统更容易分解为既相互作用又相互独立的对象集合;o 继承和封装方法为对象重用提供了技术支持。分层体系结构风格o 分层体系结构风格是调用/返回风格的一个代表。层次风格组织成一个层次结构,通过分解,能够将复杂系统划分为多个独立的层次,每一层都具有高度的内聚性,并要求每一层为上层服务,并作为下层的客户,较高层面向特定应用问题,较低层则更具有一般性。o 在分层结构中,层间的
10、连接器通过层间交互的协议来定义的,且上下层之间是单向调用关系,即上层通过下层提供的接口来使用下层的功能,而下层却不能使用上层的功能。o 分层体系结构结构如图所示:分层体系结构风格的优点:o 支持基于抽象程度递增的系统设计。o 支持功能增强。o 支持重用。o 在实际开发过程中,分层体系结构具有很高的应用价值,提高了系统的可变性、可维护性、可靠性和可重用性。分层体系结构应用的实例很多,例如:ZigBee协议栈标准采用的是OSI的分层结构,ZigBee协议栈由高层应用规范、应用汇聚层、网络层、数据链路层和物理层组成。用户应用程序(User App)应用层框架(APF)设备对象(ZDO)应用支持子层(
11、APF)应用层(APL)链路层(LLC)网络层(NWK)802.15.4 LLC802.2 LLCSSCS媒体接入层(MAC)物理层(PHY)(2.4GHz、868/915MHz)Zigbee 联盟IEEE802.15.4用户线索之间是相互独立的(正交的);主要是反映拓扑属性,有意忽略细节;由于非完全正交结构的范围不大,因此,对整个系统框架的影响可以忽略。Ext框架是一个典型的RIA应用于客户端方面的富客户端应用。解释器作为一种体系结构,主要用于构建虚拟机,以弥合程序语义和计算机硬件之间的间隙。现今的空域容量日益成为制约航空业快速发展的瓶颈之一,对飞机在航线飞行中偏离航线情况进行研究,建立碰撞
12、危险模型是间隔标准研究的基础理论。三层结构(也称多层结构)的基本思想是在分布式技术的基础上,将用户界面同应用的企业逻辑分离,把信息系统按功能划分为表示、应用及数据三大块,分别放置在相同或不同的硬件平台上。如图所示,客户请求用户信息的服务,返回结果页面中包含有该用户的表述。ExtJS由一系列的类库组成,一旦页面成功加载了ExtJS库后,就可以在页面中通过JavaScript调用ExtJS的类及控件来实现需要的功能。每一个过滤器并不能识别它的数据流上游和下游的过滤器的身份,那么就需要在过滤器的输入输出端口的管道必须来保证输入数据和输出数据类型的衔接的正确性。从正在应用的Web上讲,Web上的每个资
13、源通过一个URI来标识,可以通过简洁通用的接口来操作Web上的资源。上面的ADT构件负责存储二叉树的抽象数据类型(ADT)。传统的编译器是管道/过滤器体系结构风格的另一个著名的例子。数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。可将正交软件体系结构的核心模型表示为下图。客户机/服务器体系结构风格o 客户机/服务器(C/S)就是Client/Server模式,主要针对资源不对等问题而提出的一种共享策略。o Client是请求服务的部分,而Server是提供服务的部分,C/S结构通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,充分利用两端硬件环境的优势。o
14、 Client 和Server 一般是相距很远的两台计算机,Client 程序将用户的请求提交给Server 程序,再将 Server 程序处理结果返回给用户;Server 程序接收客户程序提出的服务请求,处理后将结果返回给客户程序。o 在C/S体系结构中,主要包括三个部分:数据库服务器、客户机和网络。服务器处理与应用和数据库相关的请求,客户端负责显示数据、处理部分数据的功能以及将用户输入的数据传送给服务器。o 实现两层结构应用时,一个应用的三大组成部件-描述、处理和数据,被分离于两个实体(客户应用代码和数据库服务器)或层次中。一般说来,对于数据库应用程序,DBMS可以为应用程序提供针对底层结
15、构的管理。应用的服务器部分是运行在远程主机上的数据库引擎。而该应用的客户部分则是运行在本地计算机上的数据库查询程序,它们之间的通信是借助于DBMS提供的网络协议实现的。如下图所示。两层C/S体系结构的处理流程如下图:尽管C/S体系结构具有强大的数据操作和事务处理能力,其模型构造简单,并且易于理解,但是,随着企业规模的日益扩大和软件复杂程度的不断提高,C/S体系结构也逐渐暴露出一些问题:n 开发成本较高。n 在开发C/S结构系统时,大部分工作都集中在客户机程序的设计上,增加了设计的复杂度。n 信息内容和形式单一。n 如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要
16、对运行环境进行重新配置,增加了维护费用;从概念上讲,中间件是客户从服务器获得服务的粘合剂。实际上,解释器是利用软件来创建的一种虚拟机,因此,解释器风格又被称为虚拟机风格。如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用;应用程序服务器是整个系统的核心所在,系统所提供的功能基本上都是由应用程序服务器所完成的。仓库风格:数据库系统、超文本系统、黑板系统;两层C/S体系结构的处理流程如下图:应用的服务器部分是运行在远程主机上的数据库引擎。可以将这些不同的组件细分为五类,在某个具体实现中,可能会包涵这五个中的多个:编译器的框架结构,
17、如图所示。两层C/S体系结构的处理流程如下图:一个基于事件驱动构架的应用程序系统,各个功能设计为封装的、模块化的、可用于共享的事件服务组件,并在这些独立非耦合的组件之间将事件所触发信息进行传递。事件工具:由事件开发工具和事件管理工具两种组成。不同子系统采用了不同的体系结构。若要应用反馈控制策略提供性能确保,首先要设计出满足用户需求的反馈控制环,该过程如图所示。公共对象请求代理(CORBA)是由对象管理组织(OMG)提出来的,是一套完整的对象技术规范,其核心包括标准语言、接口和协议。n两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet;n数据安
18、全性不高。n为了克服两层C/S结构的缺点,可以将客户机和服务器中的部分业务逻辑抽取出来,形成功能层,放在应用服务器上,这就是所谓的三层C/S体系结构。o 三层结构(也称多层结构)的基本思想是在分布式技术的基础上,将用户界面同应用的企业逻辑分离,把信息系统按功能划分为表示、应用及数据三大块,分别放置在相同或不同的硬件平台上。o 三层C/S结构将应用的三部分(表示部分、应用逻辑部分、数据访问部分)明确地进行分割,使其在逻辑上各自独立,并且单独加以实现,分别称之为客户、应用服务器、数据库服务器。三层C/S结构同样包括客户机、应用服务器和数据库服务器三个部分。三层C/S体系结构如图所示。三层C/S结构
19、体系结构的处理流程如下图所示:由于业务逻辑层是三层结构的灵魂,它把商业逻辑和数据规则从客户端分离出来,自成独立的一层,从而很好地解决了二层结构中突现出来的弊病:o Client从与数据库服务器直接连接转变为与中间层的应用服务器连接,通过中间层的服务得到数据。o 客户端摆脱了业务逻辑的束缚,对业务逻辑的变更不再敏感,给应用程序的维护带来了便利;并且业务逻辑以组件方式存在与中间层服务器上,提高了代码重用的机会。o 在实际的应用中,可能会有多种应用和平台加入到这个Client/Server模型中去。这就要求在客户和服务器之间有一组正式的接口以支持这些应用。从结构上讲这一层位于客户和服务器之间,因而被
20、称为中间件(Middleware)。o 从概念上讲,中间件是客户从服务器获得服务的粘合剂。它的引入使原来较为简单的两层分布模型(客户-服务器)被更加精确的三层模型(客户-中间件-服务器)所替代。o 从理论上讲,中间件具有以下的工作机制:客户端上的应用程序需要从网络中的某个地方获取一定的数据或服务,这些数据或服务可能处于一个运行着不同操作系统和特定查询语言数据库的服务器中,客户/服务器应用程序中负责寻找数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而传输客户请求、重组答复信息,最后将结果送回应用程序的任务。中间件的工作机制可用如下图表示。o 近年来,以中间件为框架基础
21、的三层结构C/S模式已被广泛证实为建立开放式关键业务应用系统的最佳环境。因为,作为构造三层结构业务应用系统的基础平台,中间件提供了以下两个主要功能:n负责客户机与服务器之间的联系和通讯,提供了表示层与功能层之间、功能层与功能层之间、功能层与数据层之间、数据层与数据层之间的联接和完善的通信机制;n提供了一个三层结构应用开发和运行的平台,包括:支持模块化应用开发的框架;硬件、操作系统、数据库和网络差异的屏蔽;保证事务完整性和数据一致性的事务管理机制;应用的负载均衡和管理功能;应用的高可用性及安全控制机制等。浏览器/服务器体系结构风格o 浏览器/服务器结构(Browser/Server,B/S)的出
22、现在很大程度弥补了C/S结构的缺陷,它是对C/S结构的一种变化或者改进的结构。o 在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。并结合了浏览器的多种Script语言和ActiveX技术,形成所谓三层结构,其用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。o B/S体系结构如图所示。o 在整个B/S结构模式中,用户使用客户浏览器通过互联网向Web服务器发送HTTP请求,Web服务器将与用户建立连接,然后根据发来的HTTP请求的不同,建立不同的
23、配置。o 如果请求对象是HTML脚本、静态图像等静态资源,Web服务器将所需的资源从本地的文件系统中读出,然后返回给用户。如果请求的是CGI、ASP、PHP等动态资源,Web服务器将请求发送给相应的CGI程序或脚本解释器。o 应用程序服务器是整个系统的核心所在,系统所提供的功能基本上都是由应用程序服务器所完成的。它的作用是寻找能够提供服务的应用对象,并为客户端和服务对象之间提供通道。在B/S结构模式中,数据库是存储数据的主要场所,客户端提交的数据都将保存在数据库中,应用对象通过与数据库建立连接之后,才能对数据库进行相关的操作。o B/S结构模式如下图所示。o 利用B/S架构开发某大学的教务在线
24、管理平台时,组织机构、工作职责等各级菜单可使用客户端的浏览器通过Internet访问网站Web服务器,提交相关的HTTP请求,Web服务器响应处理后,根据需要对数据库进行访问操作,将调取的数据再处理后生成结果页面返回给用户浏览器。同时根据安全需要,可对数据库进行系统备份。o B/S结构的一个典型的例子是某大学的教务在线和各级菜单系统,如下图所示。o 教务在线管理平台的系统架构如下图所示。B/S结构具有以下优点:o 系统开发、维护和升级方便且经济。o 具有很强的开放性。o 具有易扩展性。o 用户界面的一致性。o 具有更强的信息系统集成性。o 提供灵活的信息交流和信息发布服务。事件驱动体系结构风格
25、o 事件驱动架构是由Gartner公司于2003年提出的。其基本思想是:系统对外部的行为表现可以通过它对事件的处理来实现。o 一个基于事件驱动构架的应用程序系统,各个功能设计为封装的、模块化的、可用于共享的事件服务组件,并在这些独立非耦合的组件之间将事件所触发信息进行传递。o 事件驱动架构是由一系列的系统组件构成的,组件之间共同作用完成系统的功能。如图所示,这些组件之间的联接是管道化的和多模块化的,通过形成并发的事件流对企业业务事件进行处理。o 事件驱动架构的组成如图所示。可以将这些不同的组件细分为五类,在某个具体实现中,可能会包涵这五个中的多个:o事件元数据:用来实现事件定义和事件处理规则预
展开阅读全文