第三章-软件体系结构风格.ppt
《第三章-软件体系结构风格.ppt》由会员分享,可在线阅读,更多相关《第三章-软件体系结构风格.ppt(113页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第三章 软件体系结构风格本章内容o 3.1 软件体系结构风格概述o 3.2 常用的软件体系结构风格o 3.3 管道/过滤器体系结构风格o 3.4 面向对象体系结构风格o 3.5 事件驱动体系结构风格o 3.6 分层体系结构风格o 3.7 C2体系结构风格o 3.8 数据共享体系结构风格本章内容o 3.9 解释器体系结构风格o 3.10 反馈控制环体系结构风格o 3.11 客户机/服务器体系结构风格o 3.12 浏览器/服务器体系结构风格o 3.13 公共对象请求代理体系结构风格o 3.14 正交体系结构风格o 3.15 基于层次消息总线的体系结构风格o 3.16 MVC体系结构风格o 3.17
2、 异构体系结构集成3.1 软件体系结构风格概述o 软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括:构件、构件性质和构件之间的关系o 软件框架设计的核心问题是:能否复用已经成型的体系结构方案o 不同系统的设计方案存在着许多共性问题,把这些共性部分抽取出来,就形成了具有代表性的和可广泛接受的体系结构风格3.1 软件体系结构风格概述o 软件体系结构风格也称为软件体系结构惯用模式,是指不同系统所拥有的共同组织结构和语义特征o 软件体系结构是构件和连接件之间相互作用的形式化说明,用以指导将多个模块组织成一个完整的应用程序o 软件体系结构风格定义了用于系统描述的术
3、语表和一组用于指导系统构建的规则3.1 软件体系结构风格概述o 软件体系结构风格包括构件、连接件和一组将它们结合在一起的约束限制,诸如:拓扑限制和语义限制等o 对于高质量的软件产品而言,首先要为其选择合适的体系结构风格,这样就能够更好地重用已有的设计方案和实现方案o 利用软件体系结构风格中的不变部分,可以使系统大粒度地重用已有的实现代码3.2 常用的软件体系结构风格o 数据流风格:批处理和管道/过滤器o 调用/返回风格:主程序/子程序、层次结构和客户机/服务器o 面向对象风格o 独立部件风格:进程通讯和事件驱动o 虚拟机风格:解释器和基于规则的系统o 数据共享风格:数据库系统和黑板系统3.3
4、管道/过滤器体系结构风格o 管道/过滤器结构主要包括过滤器和管道两种元素o 构件被称为过滤器,负责对数据进行加工处理o 每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上o 数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是所谓的管道3.3 管道/过滤器体系结构风格o 管道/过滤器结构将数据流处理分为几个顺序的步骤来进行,一个步骤的输出是下一个步骤的输入,每个处理步骤由一个过滤器来实现o 每个过滤器独立完成自己的任务,不同过滤器之间不需要进行交互o 在管道/过滤器结构中,数据输出的最终结果与各个过滤器执行
5、的顺序无关3.3 管道/过滤器体系结构风格o 每个过滤器都是一个独立的个体元素,各个过滤器的状态互不相关,非邻近过滤器不共享任何信息o 运行结果的正确性与各个过滤器运行的先后顺序无关3.3 管道/过滤器体系结构风格o 管道/过滤器风格具有以下优点:n 简单性,允许将系统的输入和输出看作是各个过滤器行为的简单组合,独立的过滤器能够减小构件之间的耦合程度n 系统具有可扩展性和可进化性,各个过滤器是相互独立的,因此可以很容易地将新过滤器添加到现有的系统之中,以扩展系统的业务处理能力,原有过滤器可以很方便地被改进的过滤器所替代3.3 管道/过滤器体系结构风格n 支持复用,如果一个过滤器的输出数据格式与
6、另一个过滤器的输入数据格式是一致的,就可以将这两个过滤器连接在一起n 系统并发性,各个过滤器能够独立运行,因此,不同子任务可以并行执行,提高了系统运行效率n 便于系统分析,由于系统是独立构件的组合,具有清晰的拓扑结构,因而有利于对数据吞吐量、死锁和计算准确性进行分析3.3 管道/过滤器体系结构风格o 管道/过滤器风格也存在着一定的问题:n 系统处理过程是批处理方式,过滤器具有很强的独立性,对于每一个过滤器,设计者必须考虑从输入到输出的转换过程,这种方式会造成过滤器对输入数据的批量转换处理n 不适合用来设计交互式应用系统n 由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据,
7、添加和去除标记需要花费一定的时间,从而导致了系统性能下降,增加了过滤器设计的复杂性3.3 管道/过滤器体系结构风格n 难以进行错误处理,管道/过滤器结构的固有特性,决定了很难制定错误处理的一般性策略o 传统的编译器是管道/过滤器体系结构风格的一个实例3.4 面向对象体系结构风格o 在这种体系结构中,数据表示和相关原语操作都被封装在抽象数据类型中o 对象是构件,也称为抽象数据类型的实例o 对象是一种被称为管理器的构件,负责保持资源的完整性o 在对象和对象之间,通过函数调用和过程调用来进行交互3.4 面向对象体系结构风格o 面向对象风格具有以下优点:n 一个对象对外界隐藏了自己的详细信息,改变一个
8、对象的表示,不会影响系统的其它部分n 继承和封装方法为对象复用提供了技术支持3.4 面向对象体系结构风格n 对象将数据和操作封装在一起,提高了系统内聚性,减小了模块之间的耦合程度,使系统更容易分解为既相互作用又相互独立的对象集合o 面向对象体系结构风格也存在着一些问题:n 如果一个对象要调用另一个对象,则必须知道它的标识和名称n 会产生连锁反应,如果一个对象的标识发生改变,那么必须修改所有显式调用它的其它对象,并消除由此引发的副作用3.5 事件驱动体系结构风格o 事件驱动就是在当前系统的基础之上,根据事件声明和发展状况来驱动整个应用程序运行o 系统对外部的行为表现可以通过它对事件的处理来实现o
9、 构件不再直接调用过程,而是声明事件o 系统其它构件的过程可以在这些事件中进行注册,当触发一个事件时,系统会自动调用在这个事件中注册的所有过程3.5 事件驱动体系结构风格o 事件驱动系统的构件提供了一个过程集合和一组事件o 过程可以使用显示方法进行调用,同时,也可以由构件在系统事件中注册o 在消息机制的控制下,系统作为一个整体与外界环境进行交互o 事件驱动体系结构风格具有以下优点:3.5 事件驱动体系结构风格n 事件声明者不需要知道哪些构件会响应事件,因此,不能确定构件处理的先后顺序,甚至不能确定事件会引发哪些过程调用n 提高了软件复用能力,只要在系统事件中注册构件的过程,就可以将该构件集成到
10、系统中n 便于系统升级,只要构件名和事件中所注册的过程名保持不变,原有构件就可以被新构件所替代o 事件驱动体系结构风格也存在着一些问题:3.5 事件驱动体系结构风格n 构件放弃了对计算的控制权,完全由系统来决定,当构件触发一个事件时,它不知道其余构件是如何对其进行处理的n 存在数据传输问题,数据可以通过事件来进行传输,但是,在大多数情况下,系统本身需要维护一定的存储空间,这将对系统的逻辑功能和资源管理有一定影响3.6 分层体系结构风格o 在分层风格中,系统将划分为一个层次结构o 每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏o 分层有助于将复杂系统划分为独立的模块,从而简化
11、程序的设计和实现o 通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面向特定应用问题的,较低层更具有一般性3.6 分层体系结构风格o 每层都为上层提供服务,同时又利用了下层的逻辑功能o 每层只对相邻层可见,层次之间的连接件是协议和过程调用,用以实现各层之间的交互o 上层通过下层提供的接口来使用下层的功能,而下层却不能使用上层的功能o 良好的层次结构将有助于对逻辑功能实施灵活的增加、删除和修改3.6 分层体系结构风格o 利用接口,可以将下层实现细节隐藏起来,从而有助于抽象设计,形成松散耦合的结构模型3.6 分层体系结构风格o 分层体系结构风格具有以下优点:n 设计者可以将系统分解为一
12、个增量的步骤序列,从而完成复杂的业务逻辑n 每一层至多和相邻的上下两层进行交互,每一层的功能变化最多只影响相邻两层,便于实现系统功能的扩展n 只要给相邻层提供相同的接口,就可以使用不同的方法来实现每一层,支持软件资源的复用o 分层体系结构风格也存在着一些问题:3.6 分层体系结构风格n 并非所有系统都能够按照层次来进行划分,即使一个系统的逻辑结构是层次化的,但是出于对系统性能的考虑,需要把不同抽象程度的功能合并到一层,破坏了逻辑独立性n 很难找到一种合适和正确的层次划分方法,其应用范围受到限制n 在传输数据时,需要经过多个层次,导致了系统性能下降n 多层结构难以调试,往往需要通过一系列的跨层次
13、调用来实现3.6 分层体系结构风格o 分层体系结构应用实例:n 开放系统互联国际标准组织(Open Systems Interconnection-International Standards Organization,OSI-ISO)所指定的分层通信协议、计算机网络协议TCP/IP、操作系统和数据库系统n 引文管理系统是采用分层体系结构来进行设计的o 主要包括3种类型的构件:用户界面构件、引文格式化构件以及引文存储和检索构件3.7 C2体系结构风格o C2结构是一个层次网络,包括构件和连接件两种软件元素o 构件和连接件都是包含顶部和底部的软件元素o 构件与构件之间只能通过连接件进行连接,连
14、接件之间则可以直接进行连接o 构件的顶部、底部分别与连接件的底部、顶部相连,连接件的顶部、底部也分别与连接件的底部、顶部相连3.7 C2体系结构风格o 构件之间的所有通讯必须使用消息传递机制来实现,构件之间所传递的消息可以分为两种:n 一种是向上层构件发出服务请求的请求消息,一种是向下层构件发送指示状态变化的通知消息o 连接件负责消息的过滤、路由、广播、通信和相关处理o 构件只能使用其上层构件所提供的服务,而不能感知下层构件的存在3.7 C2体系结构风格o 上下层的含义与一般情况相反,最下层构件是用户界面和IO设备,上层构件则是比较低级的逻辑操作3.7 C2体系结构风格o C2体系结构风格具有
15、以下优点:n 可以使用任何编程语言来开发构件,构件重用和替换比较容易实现n 具有一定的扩展能力,可以有多种不同粒度的构件,构件之间相对独立,且依赖性较小,构件可以在分布式和异构坏境中运行,利用构件来实现应用需求,对任意复杂的逻辑功能进行封装n 构件不需要共享地址空间,避免了共享全局变量所造成的复杂关系,构件可以有自己的控制线程,即构件可以是多线程的3.7 C2体系结构风格n 具有良好的适应性,可以实现多个用户和多个系统之间的交互,能够同时激活多个对话并使用不同的形式来进行表示n 可以使用多个工具集和多种媒体类型,能够动态地更新系统的框架结构o 在构件和连接件之间,存在着以下关系:n 构件顶部与
16、连接件底部相连,构件底部与连接件顶部相连,构件与构件之间不允许直接相连n 与某一个连接件相关联的构件和连接件的数目没有限制3.8 数据共享体系结构风格o 数据共享风格也称为仓库风格,有两种不同类型的软件元素:n 一种是中央数据单元,也称为资源库,用于表示系统的当前状态,另一种是相互依赖的构件组o 中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础o 根据所使用的控制策略不同,数据共享体系结构可以分为两种类型:n 一种是传统的数据库,另一种是黑板3.8 数据共享体系结构风格o 如果由输入流中的事件来驱动系统进行信息处理,把执行结果存储到中央数据单元中,则这个系统就是数据库
17、应用系统o 如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统o 黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源3.8 数据共享体系结构风格o 黑板经常被用于信号处理,例如:语音和模式识别,同时,在自然语言处理领域中也有广泛的应用,诸如:机器翻译和句法分析3.8 数据共享体系结构风格o 黑板系统主要包括3部分:n 知识源是主要的信息来源,知识源在逻辑上和物理上都是独立的,知识源只与产生它们的应用有关,通过中央数据单元,多个知识源相互配合,完成相关业务逻辑,这一过程对外部环境是透明的n 中央数据单元,黑板系统的运行完全依赖于中央数据单元的状态
18、变化,中央数据单元是整个系统的核心部分,反映了业务逻辑的求解状态,在多个知识源之间,中央数据单元起到了通信机制的作用3.8 数据共享体系结构风格n 控制单元是由中央数据单元的状态来驱动的,知识源的执行导致了中央数据单元的状态发生变化,控制单元根据预先定义的策略,启动相应的知识源,以完成系统的控制任务o 黑板体系结构有以下优点:n 便于多客户共享大量数据,而不必关心数据是何时产生的、由谁提供的以及通过何种途径来提供n 便于将构件作为知识源添加到系统中来3.8 数据共享体系结构风格o 黑板体系结构风格也存在着一些问题:n 对共享数据结构,不同知识源要达成一致,因为要考虑各个知识源的调用问题,这会使
19、得共享数据结构的修改变得非常困难n 需要同步机制和加锁机制来保证数据的完整性和一致性,增大了系统设计的复杂度3.9 解释器体系结构风格o 解释器作为一种体系结构,主要用于构建虚拟机,以弥合程序语义和计算机硬件之间的间隙o 解释器是利用软件来创建的一种虚拟机,因此,解释器风格又被称为虚拟机风格o 程序的逻辑功能很复杂,用户需要采用复杂的方式来进行操作,一个较好的解决方案是提供面向领域的虚拟机语言3.9 解释器体系结构风格o 解释器体系结构具有以下优点:n 能够提高应用程序的移植能力和编程语言的跨平台移植能力n 实际测试工作可能非常复杂,测试代价极其昂贵,具有一定的风险性,可以利用解释器对未实现的
20、硬件进行仿真o 解释器体系结构风格也存在着一些问题:n 由于使用了特定语言和自定义操作规则,因此增加了系统运行的开销n 解释器系统难以设计和测试3.9 解释器体系结构风格o 解释器体系结构有许多现实应用,可以将其作为整个软件系统的一个组成部分,以下是一些具体的应用实例:n Java和Smalltalk的编译器n 基于规则的系统,诸如:专家系统领域中的Prolog语言n 脚本语言,例如:Awk和Perl3.10 反馈控制环体系结构风格o 反馈控制环是一种特定的数据流结构,传统数据流结构是线性的,控制连续循环过程的体系结构应该是环形的o 在反馈控制环系统中,主要包括以下3个部分:n 过程,指操纵过
21、程变量的相关机制n 数据元素,指连续更新的过程变量,包括:输入变量、控制变量、操纵变量和相关参考值3.10 反馈控制环体系结构风格n 控制器,通过控制规则来修正变量,收集过程的实际状态和目标状态,调节变量以驱动实际状态朝目标状态前进o 反馈控制环结构能够处理复杂的自适应问题,机器学习就是一个典型的实例3.10 反馈控制环体系结构风格o 将训练样本输入到学习构件中,作为被查询的基本数据和知识源o 然后输入真实数据,经过学习构件的分析和计算,输出学习结果o 检测构件要检查学习结果与预期结果之间的差异,并反馈给学习构件3.11 客户机/服务器体系结构风格o 在集中计算时代,主要采用大型机/小型机模型
22、,在这种模型中,通过与宿主机相连的非智能终端来实现宿主机程序的逻辑功能o 个人计算机和工作站的采用,改变了这种协作计算模式,导致了分散计算模型的出现o 分散计算模型的主要优点是:用户可以选择适合自己的工作站、操作系统和应用程序,在这一时期,集中计算模式逐渐被以PC机为主的网络计算模式所取代3.11 客户机/服务器体系结构风格o 客户机/服务器(Client/Server,C/S)是20世纪90年代开始成熟的一项技术,主要针对资源不对等问题而提出的一种共享策略o 客户机/服务器是两个相互独立的逻辑系统,为了完成特定任务,它们形成了一种协作关系o 在C/S体系结构中,主要包括三个部分:服务器、客户
23、机和网络3.11 客户机/服务器体系结构风格o 客户机向服务器发送操作请求,期待服务器的响应o 二者之间具有一定的连接机制,遵循公共的通信协议,都需要处理请求表达、返回结果表示、连接关系和状态表达等一系列问题3.11 客户机/服务器体系结构风格o 数据和业务处理分布在一定范围内的多个构件上,包括客户机程序中的构件和服务器程序中的构件,构件与构件之间是通过网络进行连接的o 定义了工作站与服务器的连接方法,从而使数据存储和逻辑计算可以分布到物理上的多个处理器上o 服务器负责存储和管理数据信息,客户机负责数据显示、用户交互以及对业务逻辑的处理3.11 客户机/服务器体系结构风格o C/S系统可以分为
24、前台客户机程序和后台服务器程序两部分o 服务器程序负责管理客户机程序的数据,而客户机程序负责完成与用户之间的交互,发送请求消息,接收和分析从服务器返回的数据o 客户机程序是表示层,包括用户界面和业务处理程序o 服务器程序是数据层,包括中心数据库、数据查询程序、数据存储程序和数据更新程序3.11 客户机/服务器体系结构风格3.11 客户机/服务器体系结构风格o 服务器程序负责管理系统资源,包括:管理数据库的安全性、控制数据库访问的并发性、定义全局数据完整性规则以及备份恢复数据库o 服务器永远处于激活状态,监听用户请求,为客户提供服务操作o 客户机程序的主要任务包括:提供用户与数据库交互的界面、向
25、服务器提交用户请求、接收来自服务器的信息以及对客户机数据执行业务逻辑操作3.11 客户机/服务器体系结构风格o 网络通信软件的主要功能是完成服务器程序和客户机程序之间的数据传输o 在代理风格中,服务器将其服务和数据发布到代理服务器上,客户机通过代理服务器来访问服务,提高了系统的安全性3.11 客户机/服务器体系结构风格o C/S体系结构具有以下优点:n 客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理n 构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置n 客户机侧重数据的显示和分析,服务器则注重数据的管理,因此,客户机程序和服务器程序可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 软件 体系结构 风格
限制150内