您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 第3章-软件体系结构风格
第三章软件体系结构风格本章内容3.1软件体系结构风格概述3.2常用的软件体系结构风格3.3新型体系结构风格3.1软件体系结构风格概述软件体系结构是随着软件工程的发展而逐步发展起来的。20世纪90年代,人们开始对软件体系结构进行研究,当时,软件系统程度的提高和规模的扩大使得软件开发人员开始感到很困难,而且,开发出软件的质量也难以保证。软件体系结构概念给人们进行软件开发带来了曙光,至今它已成为现代软件开发过程中一个至关重要的部分。MarShaw和DavidGarlan中提出的软件体系结构定义为:能够用来具体描述软件系统控制结构和整体组织的一种体系结构,能够表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口。由于软件体系结构作为软件工程的一个独立研究领域出现时间不长,对于软件体系结构概念并没有统一的定义。但研究者们对软件体系结构也达成了一些共识:(1)软件体系结构是对系统的一种高层次的抽象描述。主要是反映拓扑属性,有意忽略细节;(2)软件体系结构是由构件和构件之间的联系组成,构件又有它自身的体系结构;(3)构件的描述有3个方面:计算功能、结构特性及其他特性。从软件体系结构的定义可以看出,软件体系结构主要涉及构件、构件之间的联系与约束、由构件通过相互交互形成的系统架构三个方面的内容。可用下图来简单表示软件体系结构。构件1构件2构件n联系约束架构...通过使用软件体系结构,可以有效地分析用户需求、方便系统的修改以及减小程序构造风险。随着软件规模的不断增大和复杂程度日益提高,系统框架结构的设计变得越来越关键。软件框架设计的核心问题是:能否重用已经成型的体系结构方案。由此,产生了软件体系结构风格的概念。软件体系结构风格包括构件、连接件和一组将它们结合在一起的约束限制,诸如:拓扑限制和语义限制等。3.2常用的软件体系结构风格软件体系结构的风格是在开发软件的过程中不断积累起来的,是多年探索研究和工程实践的结果。它由组织规则及结构构成,是描述领域中系统组织方式的惯用模式,是对某一特定领域中系统所共有的结构和语义特性的反映。体系结构风格的分类:数据流风格:批处理序列、管道/过滤器;仓库风格:数据库系统、超文本系统、黑板系统;独立构件风格:进程通迅、事件系统;调用/返回风格:主程序/子程序、面向对象风格、层次结构;虚拟机构格:解释器、基于规则的系统。管道/过滤器风格管道/过滤器架构是典型的数据流软件架构风格。主要包括过滤器和管道两种元素。在这种体系结构中,每个模块都有一组输入和一组输出。每个模块从它的输入端接收输入数据流,在其内部经过处理后,按照标准的顺序将结果数据流送到输出端,以达到传递一组完整的计算结果的目的。每个部件从输入接口中读取数据,经过处理后将结果数据置于输出接口中,这样的部件称为过滤器。这种模型的连接者将一个过滤器的输出传送到另一个过滤器的输入,这种连接者称为管道。过滤器的基本结构如下图所示:输入数据接口处理中心输入数据接口数据输入数据输出管道/过滤器结构将数据流处理分为几个顺序的步骤来进行,一个步骤的输出是下一个步骤的输入,每个处理步骤由一个过滤器来实现。在管道/过滤器风格中,过滤器必须是相互独立的实体,它们相互之间的状态不可共享。每一个过滤器并不能识别它的数据流上游和下游的过滤器的身份,那么就需要在过滤器的输入输出端口的管道必须来保证输入数据和输出数据类型的衔接的正确性。管道/过滤器风格的系统架构图如下图所示。过滤器过滤器过滤器过滤器过滤器管道管道管道管道管道/过滤器风格的优点:设计人员将整个系统的输入输出行为理解为单个过滤器行为的叠加与组合。任何两个过滤器,只要它们之间传送的数据遵守共同的规约就可以相连接。整个系统易于维护和升级。支持并发执行。传统的编译器是管道/过滤器体系结构风格的另一个著名的例子。编译器由词法分析、语法分析、语义分析、中间代码生成、中间代码优化和目标代码生成等几个模块组成,一个模块的输出是另一个模块的输入。源程序经过各个模块的独立处理之后,最终将产生目标程序。编译器的框架结构,如图所示。中间代码生成中间代码优化目标代码生成语义分析语法分析词法分析源程序目标程序面向对象体系结构风格抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据表示和相关的基本操作封装在抽象数据类型或对象中。这种模式的构件是对象,或者也可以称为抽象数据类型的实例。对象是一类可称之为管理者的构件实例,因为它负责维护一种资源的完整性。数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的组件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的组件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的,面向对象体系结构如图所示。对象对象对象对象对象抽象数据类型过程调用面向对象的系统有许多的优点:一个对象对其他对象隐藏它的表示,所以可以改变一个对象的表示,而不影响其他的对象;对象将数据和操作封装在一起,提高了系统内聚性,减小了模块之间的耦合程度,使系统更容易分解为既相互作用又相互独立的对象集合;继承和封装方法为对象重用提供了技术支持。分层体系结构风格分层体系结构风格是调用/返回风格的一个代表。层次风格组织成一个层次结构,通过分解,能够将复杂系统划分为多个独立的层次,每一层都具有高度的内聚性,并要求每一层为上层服务,并作为下层的客户,较高层面向特定应用问题,较低层则更具有一般性。在分层结构中,层间的连接器通过层间交互的协议来定义的,且上下层之间是单向调用关系,即上层通过下层提供的接口来使用下层的功能,而下层却不能使用上层的功能。分层体系结构结构如图所示。分层体系结构风格有许多的优点:支持基于抽象程度递增的系统设计。支持功能增强。支持重用。协议应用层功能层核心层各种构件过程调用在实际开发过程中,分层体系结构具有很高的应用价值,提高了系统的可变性、可维护性、可靠性和可重用性。分层体系结构应用的实例很多,例如:ZigBee协议栈标准采用的是OSI的分层结构,ZigBee协议栈由高层应用规范、应用汇聚层、网络层、数据链路层和物理层组成。用户应用程序(UserApp)应用层框架(APF)设备对象(ZDO)应用支持子层(APF)应用层(APL)链路层(LLC)网络层(NWK)802.15.4LLC802.2LLCSSCS媒体接入层(MAC)物理层(PHY)(2.4GHz、868/915MHz)Zigbee联盟IEEE802.15.4用户客户机/服务器体系结构风格所谓的客户机/服务器(C/S)就是Client/Server模式,主要针对资源不对等问题而提出的一种共享策略。Client是请求服务的部分,而Server是提供服务的部分,C/S结构通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,充分利用两端硬件环境的优势。Client和Server一般是相距很远的两台计算机,Client程序将用户的请求提交给Server程序,再将Server程序处理结果返回给用户;Server程序接收客户程序提出的服务请求,处理后将结果返回给客户程序。在C/S体系结构中,主要包括三个部分:数据库服务器、客户机和网络。服务器处理与应用和数据库相关的请求,客户端负责显示数据、处理部分数据的功能以及将用户输入的数据传送给服务器。实现两层结构应用时,一个应用的三大组成部件-描述、处理和数据,被分离于两个实体(客户应用代码和数据库服务器)或层次中。一般说来,对于数据库应用程序,DBMS可以为应用程序提供针对底层结构的管理。应用的服务器部分是运行在远程主机上的数据库引擎。而该应用的客户部分则是运行在本地计算机上的数据库查询程序,它们之间的通信是借助于DBMS提供的网络协议实现的。如下图所示。客户端应用服务器数据库服务器请求响应两层C/S体系结构的处理流程如下图:输入数据请求按钮输出数据业务处理开始数据存储请求业务处理结束业务处理请求和业务处理所需的全部输入数据业务处理结束表示层业务处理程序数据存取开始数据存取请求数据存取结束数据存取程序SQL请求开始DBMS执行SQL语句SQL请求结束数据层登陆/查询/修改/插入/删除请求登陆/查询/修改/插入/删除结果尽管C/S体系结构具有强大的数据操作和事务处理能力,其模型构造简单,并且易于理解,但是,随着企业规模的日益扩大和软件复杂程度的不断提高,C/S体系结构也逐渐暴露出一些问题:开发成本较高。在开发C/S结构系统时,大部分工作都集中在客户机程序的设计上,增加了设计的复杂度。信息内容和形式单一。如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用;两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet;数据安全性不高。为了克服两层C/S结构的缺点,可以将客户机和服务器中的部分业务逻辑抽取出来,形成功能层,放在应用服务器上,这就是所谓的三层C/S体系结构。三层结构(也称多层结构)的基本思想是在分布式技术的基础上,将用户界面同应用的企业逻辑分离,把信息系统按功能划分为表示、应用及数据三大块,分别放置在相同或不同的硬件平台上。三层C/S结构将应用的三部分(表示部分、应用逻辑部分、数据访问部分)明确地进行分割,使其在逻辑上各自独立,并且单独加以实现,分别称之为客户、应用服务器、数据库服务器。三层C/S结构同样包括客户机、应用服务器和数据库服务器三个部分。三层C/S体系结构如图所示。客户端应用服务器请求响应请求响应数据库服务器三层C/S结构体系结构的处理流程如下图所示:输入数据请求按钮输出数据业务处理开始数据存储请求业务处理结束业务处理请求和业务处理所需的全部输入数据业务处理结束表示层业务处理程序数据存取开始数据存取请求数据存取结束数据存取程序SQL请求开始DBMS执行SQL语句SQL请求结束数据层登陆/查询/修改/插入/删除请求登陆/查询/修改/插入/删除结果功能层由于业务逻辑层是三层结构的灵魂,它把商业逻辑和数据规则从客户端分离出来,自成独立的一层,从而很好地解决了二层结构中突现出来的弊病:Client从与数据库服务器直接连接转变为与中间层的应用服务器连接,通过中间层的服务得到数据。客户端摆脱了业务逻辑的束缚,对业务逻辑的变更不再敏感,给应用程序的维护带来了便利;并且业务逻辑以组件方式存在与中间层服务器上,提高了代码重用的机会。在实际的应用中,可能会有多种应用和平台加入到这个Client/Server模型中去。这就要求在客户和服务器之间有一组正式的接口以支持这些应用。从结构上讲这一层位于客户和服务器之间,因而被称为中间件(Middleware)。从概念上讲,中间件是客户从服务器获得服务的粘合剂。它的引入使原来较为简单的两层分布模型(客户-服务器)被更加精确的三层模型(客户-中间件-服务器)所替代。从理论上讲,中间件具有以下的工作机制:客户端上的应用程序需要从网络中的某个地方获取一定的数据或服务,这些数据或服务可能处于一个运行着不同操作系统和特定查询语言数据库的服务器中,客户/服务器应用程序中负责寻找数据的部分只需访问一个中间件系统,由中间件完成到网络中找到数据源或服务,进而传输客户请求、重组答复信息,最后将结果送回应用程序的任务。中间件的工作机制可用如下图表示。服务器1服务器2服务器N客户1客户2客户N......中间件客户端服务器端近年来,以中间件为框架基础的三层结构C/S模式已被广泛证实为建立开放式关键业务应用系统的最佳环境。因为,作为构造三层结构业务应用系统的基础平台,中间件提供了以下两个主要功能:负责客户机与服务器之间的联系和通讯,提供了表示层与功能层之间、功能层与功能层之间、功能层与数据层之间、数据层与数据层之间的联接和完善的通信机制;提供了一个三层结构应用开发
本文标题:第3章-软件体系结构风格
链接地址:https://www.777doc.com/doc-2329596 .html