您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 高级软件工程(第九章)-软件体系结构(2017课件)
第九章软件体系结构什么是软件体系结构?软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括:构件、构件性质和构件之间的关系。软件体系结构是构件和连接件之间相互作用的形式化说明,用以指导将多个模块组织成一个完整的应用程序。2软件体系结构描述语言软件体系结构描述语言(ArchitecturalDescriptionLanguage,简称ADL)是用来描述软件密集型系统的总体结构的语言,说明系统众多构件之间的结构关系。代表性的体系结构描述语言包括:WrightRapideDarwinUniconACMEABC/ADLXYZ/ADLXADL大部分结构描述语言都有构件、连接子、配置等概念。3几种典型的软件体系结构风格软件体系结构表示系统的框架结构,用于从较高的层次上来描述各部分之间的关系和接口,主要包括:构件、构件性质和构件之间的关系。不同系统的设计方案存在着许多共性问题,把这些共性部分抽取出来,就形成了具有代表性的和可广泛接受的体系结构风格。4几种典型的软件体系结构风格软件体系结构风格也称为软件体系结构惯用模式,是指不同系统所拥有的共同组织结构和语义特征。软件体系结构风格定义了用于系统描述的术语表和一组用于指导系统构建的规则。5几种典型的软件体系结构风格管道/过滤器风格数据共享风格客户机/服务器风格浏览器/服务器风格MVC体系结构风格6管道/过滤器体系结构风格管道/过滤器结构主要包括过滤器和管道两种元素;构件被称为过滤器,负责对数据进行加工处理;每个过滤器都有一组输入端口和输出端口,从输入端口接收数据,经过内部加工处理之后,传送到输出端口上;数据通过相邻过滤器之间的连接件进行传输,连接件可以看作输入数据流和输出数据流之间的通路,这就是所谓的管道。7管道/过滤器体系结构风格管道/过滤器结构将数据流处理分为几个顺序的步骤来进行,一个步骤的输出是下一个步骤的输入,每个处理步骤由一个过滤器来实现;每个过滤器独立完成自己的任务,不同过滤器之间不需要进行交互;在管道/过滤器结构中,数据输出的最终结果与各个过滤器执行的顺序无关。8当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。管道/过滤器、批处理序列都属于数据流风格。管道/过滤器结构如下图所示。管道/过滤器体系结构风格管道/过滤器结构•每个过滤器都是一个独立的个体元素,各个过滤器的状态互不相关,非邻近过滤器不共享任何信息;•运行结果的正确性与各个过滤器运行的先后顺序无关。9管道/过滤器体系结构风格管道/过滤器风格具有以下优点:简单性,允许将系统的输入和输出看作是各个过滤器行为的简单组合,独立的过滤器能够减小构件之间的耦合程度;系统具有可扩展性和可进化性,各个过滤器是相互独立的,因此可以很容易地将新过滤器添加到现有的系统之中,以扩展系统的业务处理能力,原有过滤器可以很方便地被改进的过滤器所替代;10管道/过滤器体系结构风格支持复用,如果一个过滤器的输出数据格式与另一个过滤器的输入数据格式是一致的,就可以将这两个过滤器连接在一起;系统并发性,各个过滤器能够独立运行,因此,不同子任务可以并行执行,提高了系统运行效率;便于系统分析,由于系统是独立构件的组合,具有清晰的拓扑结构,因而有利于对数据吞吐量、死锁和计算准确性进行分析。11管道/过滤器体系结构风格管道/过滤器风格也存在着一定的问题:系统处理过程是批处理方式,过滤器具有很强的独立性,对于每一个过滤器,设计者必须考虑从输入到输出的转换过程,这种方式会造成过滤器对输入数据的批量转换处理;不适合用来设计交互式应用系统;由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据,添加和去除标记需要花费一定的时间,从而导致了系统性能下降,增加了过滤器设计的复杂性。12分层体系结构风格在分层风格中,系统将划分为一个层次结构;每一层都具有高度的内聚性,包含抽象程度一致的各种构件,支持信息隐藏;分层有助于将复杂系统划分为独立的模块,从而简化程序的设计和实现;通过分解,可以将系统功能划分为一些具有明确定义的层,较高层是面向特定应用问题的,较低层更具有一般性。13分层体系结构风格每层都为上层提供服务,同时又利用了下层的逻辑功能;每层只对相邻层可见,层次之间的连接件是协议和过程调用,用以实现各层之间的交互;上层通过下层提供的接口来使用下层的功能,而下层却不能使用上层的功能;良好的层次结构将有助于对逻辑功能实施灵活的增加、删除和修改。14分层体系结构风格利用接口,可以将下层实现细节隐藏起来,从而有助于抽象设计,形成松散耦合的结构模型15分层体系结构风格分层体系结构风格具有以下优点:设计者可以将系统分解为一个增量的步骤序列,从而完成复杂的业务逻辑;每一层至多和相邻的上下两层进行交互,每一层的功能变化最多只影响相邻两层,便于实现系统功能的扩展;只要给相邻层提供相同的接口,就可以使用不同的方法来实现每一层,支持软件资源的复用。16分层体系结构风格分层体系结构风格也存在着一些问题:并非所有系统都能够按照层次来进行划分,即使一个系统的逻辑结构是层次化的,但是出于对系统性能的考虑,需要把不同抽象程度的功能合并到一层,破坏了逻辑独立性;很难找到一种合适和正确的层次划分方法,其应用范围受到限制;在传输数据时,需要经过多个层次,导致了系统性能下降;多层结构难以调试,往往需要通过一系列的跨层次调用来实现。17数据共享体系结构风格数据共享风格也称为仓库风格,有两种不同类型的软件元素:一种是中央数据单元,也称为资源库,用于表示系统的当前状态,另一种是相互依赖的构件组中央数据单元和构件之间可以进行信息交换,这是数据共享体系结构的技术实现基础;根据所使用的控制策略不同,数据共享体系结构可以分为两种类型:一种是传统的数据库,另一种是黑板18数据共享体系结构风格如果由输入流中的事件来驱动系统进行信息处理,把执行结果存储到中央数据单元中,则这个系统就是数据库应用系统;如果由中央数据单元的当前状态来驱动系统运行,则这个系统就是黑板应用系统;黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源。19客户机/服务器体系结构风格客户机向服务器发送操作请求,期待服务器的响应;二者之间具有一定的连接机制,遵循公共的通信协议,都需要处理请求表达、返回结果表示、连接关系和状态表达等一系列问题。数据库服务器用户1用户2用户n……Internet/Intranet打印机调制解调器其他公用设备20客户机/服务器体系结构风格数据和业务处理分布在一定范围内的多个构件上,包括客户机程序中的构件和服务器程序中的构件,构件与构件之间是通过网络进行连接的;定义了工作站与服务器的连接方法,从而使数据存储和逻辑计算可以分布到物理上的多个处理器上;服务器负责存储和管理数据信息,客户机负责数据显示、用户交互以及对业务逻辑的处理。21客户机/服务器体系结构风格C/S系统可以分为前台客户机程序和后台服务器程序两部分;服务器程序负责管理客户机程序的数据,而客户机程序负责完成与用户之间的交互,发送请求消息,接收和分析从服务器返回的数据;客户机程序是表示层,包括用户界面和业务处理程序;服务器程序是数据层,包括中心数据库、数据查询程序、数据存储程序和数据更新程序。22客户机/服务器体系结构风格服务器程序负责管理系统资源,包括:管理数据库的安全性、控制数据库访问的并发性、定义全局数据完整性规则以及备份恢复数据库;服务器永远处于激活状态,监听用户请求,为客户提供服务操作;客户机程序的主要任务包括:提供用户与数据库交互的界面、向服务器提交用户请求、接收来自服务器的信息以及对客户机数据执行业务逻辑操作。23客户机/服务器体系结构风格C/S体系结构具有以下优点:客户机构件和服务器构件分别运行在不同的计算机上,有利于分布式数据的组织和处理;构件之间的位置是相互透明的,客户机程序和服务器程序都不必考虑对方的实际存储位置;客户机侧重数据的显示和分析,服务器则注重数据的管理,因此,客户机程序和服务器程序可以运行在不同的操作系统上,便于实现异构环境和多种不同开发技术的融合。24客户机/服务器体系结构风格构件之间是彼此独立和充分隔离的,这使得软件环境和硬件环境的配置具有极大的灵活性,易于系统功能的扩展;将大规模的业务逻辑分布到多个通过网络连接的低成本的计算机上,降低了系统的整体开销。C/S体系结构也逐渐暴露出一些问题:开发成本较高,客户机的软件配置和硬件配置的要求比较高,随着软件版本的升级,对硬件性能的要求也越来越高,从而增加了系统成本,使客户机变得臃肿;25客户机/服务器体系结构风格在开发C/S结构系统时,大部分工作都集中在客户机程序的设计上,增加了设计的复杂度,客户机负荷太重,难以应对客户端的大量业务处理,降低了系统性能;信息内容和形式单一,传统应用一般都是事务处理型,界面基本上遵循数据库的字段解释,在开发之初就已经确定,用户无法及时获取办公信息和文档信息,只能获得单纯的字符和数字,非常枯燥和死板。26客户机/服务器体系结构风格如果对C/S体系结构的系统进行升级,开发人员需要到现场来更新客户机程序,同时需要对运行环境进行重新配置,增加了维护费用;两层C/S结构采用了单一的服务器,同时以局域网为中心,因此难以扩展到Intranet和Internet;数据安全性不高,客户机程序可以直接访问数据库服务器,因此,客户机上的其它恶意性程序也有可能访问到数据库,无法保证中心数据库的安全。27客户机/服务器体系结构风格为了克服两层C/S结构的缺点,可以将客户机和服务器中的部分业务逻辑抽取出来,形成功能层,放在应用服务器上,这就是所谓的三层C/S体系结构;三层C/S结构包括:客户机、应用服务器和数据库服务器三个部分。28客户机/服务器体系结构风格在三层C/S结构中,针对一类应用问题建立了中间层,即功能层,配置在应用服务器上;应用服务器负责处理客户机与数据库服务器之间的交互,而不是直接让客户机与中心数据库相连,因此减少了同数据库服务器相连的客户机的数目,提高了系统安全性;由于将数据存取构件放在应用服务器上,客户机只存放系统的表示层,因此,客户机程序不必关心数据的操作细节,便于实现软件的安装与维护;29客户机/服务器体系结构风格在三层C/S体系结构中,通过增加应用服务器,在不增加数据库服务器负担的情况下,使客户机变“瘦”,这种风格又被称为“瘦客户机”C/S结构;在三层C/S结构中,减小了数据库服务器的工作量,应用服务器可以建立数据备份,因此,提高了系统的可靠性;在三层C/S结构的软件系统中,可以将系统划分为表示层、业务逻辑层和数据层3个部分。30客户机/服务器体系结构风格与两层C/S结构相比,三层C/S体系结构具有以下优点:如果合理地划分三层结构的功能,可以使系统的逻辑结构更加清晰,提高了软件的可维护性和可扩充性;在实现三层C/S结构时,可以更有效地选择运行平台和硬件环境,从而使每一层都具有清晰的逻辑结构、良好的负荷处理能力和较好的开放性,清晰和合理地划分三层C/S结构,使各层之间保持相互独立,可以降低每一层应用的修改难度;31客户机/服务器体系结构风格在三层C/S结构中,可以分别选择合适的编程语言来并行地开发每一层的逻辑功能,以提高开发效率,同时,每一层的维护也更加容易;系统具有较高的安全性,可以充分利用功能层来将数据层和表示层分隔开来,使未授权用户难以绕过功能层,无法利用数据库工具和黑客手段来非法访问数据层,从而保证了中心数据库的安全性,整个系统也更加便于控制,管理层次也更加合理。32浏览器/服务器体系结构风格浏览器/服务器(Browser/Server,B/S),是三层C/S体系结构的一种实现方式,主要包括:浏览器、Web服务器和数据库服务器;B/S结构主要利
本文标题:高级软件工程(第九章)-软件体系结构(2017课件)
链接地址:https://www.777doc.com/doc-4207390 .html