好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《软件体系结构》PPT课件.ppt

71页
  • 卖家[上传人]:ni****g
  • 文档编号:587859071
  • 上传时间:2024-09-06
  • 文档格式:PPT
  • 文档大小:867KB
  • / 71 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 软件体系结构 1概述•我们要学的这个是什么玩意?•我们为什么要学这个玩意?•我们将来会怎么干?•其他人是怎么玩的? 1概述•软件工程师需要一种更好的视角来理解软件,并试图找到一种新的方法来构建更复杂的大型软件系统•SA (software architecture)•一个简单程序到复杂系统软件的距离是十年  1概述-需求开发的主要困难 1概述-软件危机的原因•软件规模越来越大软件规模越来越大 • 随着软件应用范围的增广,软件规模愈来愈大大型随着软件应用范围的增广,软件规模愈来愈大大型软件项目需要组织一定的人力共同完成,而多数管理人软件项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验各类人员的信息交流不及时、又缺乏管理方面的经验各类人员的信息交流不及时、不准确、有时还会产生误解不准确、有时还会产生误解• 软件项目开发人员不能有效地、独立自主地处理大型软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误软件的全部关系和各个分支,因此容易产生疏漏和错误。

      1概述-软件危机的原因•软件复杂度越来越高软件复杂度越来越高 • 软件不仅仅是在规模上快速地发展扩大,而且其复杂软件不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加软件产品的特殊性和人类智力的局限性也急剧地增加软件产品的特殊性和人类智力的局限性,导致人们无力处理性,导致人们无力处理“复杂问题复杂问题”• 所谓所谓“复杂问题复杂问题”的概念是相对的,一旦人们采用先的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们的面前能力,新的、更大的、更复杂的问题又摆在人们的面前 1.1what is SA ?•这种全局结构的设计和规划问题包括 全局组织结构;全局控制结构;通信和同步以及数据存取协议;规定设计元素的功能;设计元素的组合;物理分布;规模和性能;演化的维度;设计方案的选择等•1随着软件系统的规模和复杂性不断增加,系统的全局结构的设计和规划变得比算法的选择以及数据结构的设计更加重要•2人们普遍认为,为系统设计一个合适的体系结构是系统取得长远的成功的关键因素。

      1.1what is SA ?•首先,软件工程师在长期的实践中已经拥有了一套共享的,语义丰富的词典,它由软件系统的习惯用语,模式,软件系统组织结构风格组成•通过识别一个管道过滤器体系结构风格的实例,一个软件工程师传达了这样的事实:这个系统的主要功能就是进行数据流的转换,系统的主要功能由各种独立实体的过滤器分别来实现,系统的响应时间和吞吐量能用一种直接的方式计算出来 1.1what is SA ?e.g.       每个Filter都有输入端和输出端,例如一个MPEG-1解码Filter它的输入是MPEG编码的流数据,它的输出端是一解码过的流数据DirectShow正是通过将不同的Filter连接在一起完成特定的功能的,我们将这些Filter的连接叫做Filter Graph,如下图A给出是播放AVI的Filter Graph:                                                                       图A 播放AVI文件的Graph Filter图  上图中每个模块分别代表了不同的Filter,媒体文件Filter从硬盘读取AVI文件,AVI分离Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter,由后者将各帧在显示器上显示,默认的DirectSound设备用DirectSound将音频流输出。

      1.1what is SA ?•其次,体系结构的描述的作用好像一个框架,系统属性在这个框架下进行扩充,并且,它在考察一个系统实现其整体需求的能力中扮演了非常重要的作用•(软件体系结构是非常抽象的,可以理解更大范围的,系统级的关注点,比如吞吐量,通信模式,执行控制结构,可伸缩性,以及系统演化的扩展方式,提供一个自然的框架 1.1what is SA ?•软件设计层次•体系结构级:系统性能与构件之间的整体联系这个级别的构成元素是模块,模块通过各种方式互连,通过操作算子将子系统组装成一个系统•代码级:这个级别的设计问题包括算法和数据结构;其构成元素是编程语言原语•执行级:这个级别的设计问题包含存储器的映射、数据格式配置、堆栈和寄存器的分配 软件各级抽象高级程序设计语言数据结构与算法软件结构研究的开始抽象数据类型程序族软件体系结构汇编语言、宏替换、高级语言编译器、数据类型程序=数据结构+算法软件划分与构造、方便系统的开发与维护数据类型抽象、封装、信息隐藏、多态性程序族在信息隐藏和软件结构设计上具有相同的模式(设计模式抽象)软件体系结构使系统在体系结构级达到重用 软件体系结构研究的内容和范畴•风格、设计模式、框架•1.体系结构风格(architecture styles)•体系结构风格独立于实际问题,强调了软件系统中通用的组织结构。

      比如管道线,分层系统,客户机-服务器等等 软件体系结构研究的内容和范畴•风格、设计模式、框架•2.设计模式•设计模式是软件问题高效和成熟的设计模板,模板包含了固有问题的解决方案设计模式可以看成规范了的小粒度的结构成分,并且独立于编程语言或编程范例设计模式的应用对软件系统的基础结构没有什么影响,但可能对子系统的组织结构有较大影响每个模式处理系统设计或实现一种特殊的重复出现的问题它为解决抽象部分和实现部分独立变化的问题提供了一种通用结构因此,设计模式更强调直接复用的程序结构 软件体系结构研究的内容和范畴•风格、设计模式、框架•3.应用框架(application framework)•应用框架是整个或部分系统的可重用设计,表现为一组抽象构件的集合以及构件实例间交互的方法可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程 软件体系结构研究的内容和范畴•体系结构风格、设计模式和应用框架的概念是从不同的目的和出发点讨论软件体系结构,它们之间的概念经常互相借鉴和引用 体系结构设计原则•抽象•分而治之•封装和信息隐藏•模块化•高内聚和低耦合•关注点分离•策略和实现的分离•接口和实现的分离 体系结构设计原则体系结构是指软件系统的基本和主体的形态,也就是软件系统中“最本质”的东西。

      一个软件系统的体系结构设计得好不好,可以用“合适性、结构稳定性、可扩展性、可复用性”这些特征量来评估 体系结构设计原则合适性:即体系结构是否适合于软件的“功能性需求”和“非功能性需求”设计师可以充分发挥主观能动性,根据需求的特征,通过推理和归纳的方法设计出合适的体系结构经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的地方က 高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件以设计住宅为例)…က 对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选哪一种?此时商业目标是决策依据,即选择能够为开发方和客户方带来最大利益的那个设计方案大部分软件开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的,切记切记 结构稳定性当前中国有几句流行的至理名言:“稳定压倒一切”、“发展是硬道理”发展的前提条件是稳定,社会如此,开发软件产品也是如此•体系结构一旦设计完成,应当在一定的时间内保持稳定不变,只有这样才能使后续工作顺利开展如果体系结构经常变动,那么建筑在体系结构之上的用户界面、数据库、模块、数据结构等等也跟着经常变动,用“树倒猢狲散”来比喻很恰当,这将导致项目发生混乱。

      •高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性” 可扩展性是指软件扩展新功能的容易程度可扩展性越好,表示软件适应“变化”的能力越强可扩展性越来越重要,这是由现代软件的商业模式决定的:••社会的商业越发达,需求变化就越快••现代软件产品通常采用“增量开发模式”,开发商不断地推出软件产品的新版本,从而不断地获取增值利润••稳定性和可扩展性之间存在辨证的关系:如果系统不可扩展的话,那么就没有发展前途,所以不能只关心稳定性而忽视可扩展性;而软件系统“可扩展”的前提条件是“保持结构稳定”,否则软件难以按计划开发出来,稳定性是使系统能够持续发展的基础所以稳定性和可扩展性都是体系结构设计的要素••如果每次变化都导致体系结构发生大的变动,那简直就是“伤筋动骨”,这样的体系结构无疑是败笔之作例如房屋装修) •复用就是指“重复利用已经存在的东西”被复用的对象可以是有形的物体,也可以是无形的知识财富复用不是人类懒惰的表现而是智慧的表现因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。

      •က 复用的有利于提高产品的质量、提高生产率和降低成本由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好 •复用的意义很容易理解,人们也乐意复用以前的成果,但是前提条件是该成果具有比较好的可复用性可复用性是指成果被复用的容易程度•က 可复用性是设计出来的,而不是偶然碰到的要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用 体系结构风格•数据流系统             虚拟机•批处理序列                              解释器•管道和过滤器                           基于规则系统•调用和返回系统       数据中心系统(知识库)•主程序和子程序                      数据库•面向对象系统                         超文本系统•多级分层                               黑板•独立构件•通讯进程•事件系统 体系结构风格•7种通用的风格•管道和过滤器、对象、隐式调用、层、知识库、解释器和过程调用。

      管道过滤器(pipes &filters)•构件对输入流进行内部转换和增量计算,在输入数据流全部处理之前,输出就已经开始了•重要特点是每个filter必须是一个独立实体特别是filter之间无需共享状态 管道过滤器(pipes &filters•典型的例子:•Unix的shell中编写的程序通过提供的符号表示要连接的构件和提供运行时机制实现管道•传统的编译器 :词法分析、句法分析、词义分析、代码生成阶段•信号处理领域•并行计算•功能编程•分布式系统 管道过滤器(pipes &filters•管道过滤器的优点:•设计者可以将整个系统的输入和输出特性理解为各个过滤器功能的简单合成•支持功能模块的重用:只要相互传输的数据格式达成一致,就可以连接在一起•系统容易维护和扩展:新的过滤器可以加进来,旧的可以被替换•支持某些特定的分析,如吞吐量和死锁检测•具有天然的并发特性,可以独立运行,也可以和其他过滤器并发执行 管道过滤器(pipes &filters•管道过滤器模式的缺点:•过滤器独立性强,处理过程成批处理,不适合交互性强的应用•维持两个相对独立但有不存在某种关系的数据流之间的通讯可能很困难。

      •根据实际应用的要求,设计者也需要在数据传输时被迫使用底层公共命名增加过滤器本身的复杂性 数据抽象和面向对象组织结构•对象通过函数和过程调用来实现交互这种模式有两个重要的方面:•对象维护自身表示的完整性(通常是通过保持其表示上的一些不变式来实现的)•这种表示对其他对象是隐藏的 数据抽象和面向对象组织结构•面向对象系统有很多众所周知的优点由于对象的对客户隐藏了实现的细节,所以可以在不影响其客户的情况下改变对象实现另外,由于把操作的数据和一组存取例程绑定在一起,使得设计者能够把问题分解成交互作用的代理集合 数据抽象和面向对象组织结构•最大的缺点:当一个对象和其他对象交互(过程调用),它必须知道其他对象的标识而在过滤器系统中,过滤器是不需要知道其他过滤器的存在每当一个对象的标识改变的时候,必须修改那些显式调用它的对象在模块化语言中,当一个模块改变后需要修改每一个引用了这个模块的“导入”列表 事件驱动,隐式调用•隐式调用,响应集成,选择性广播这种模式起源于基于角色的系统,约束满足性检查,后台程序和包交换网络•思想是,不直接调用一个过程,而是发布或广播一个或多个事件系统中的其他构件通过注册与一个事件关联起来的过程,来表示对某一个事件感兴趣。

      当这个事件发生时,系统本身会调用所有注册了这个事件的过程这样一个事件的激发会导致其他模块中过程的隐式调用 事件驱动,隐式调用•主要特点:•事件发布者不知道哪些构件会受到事件的影响,这样,构件不能对事件的处理顺序,或者事件发生后的处理结果做任何假设•许多隐式调用系统也包含显示调用(正常的过程调用)以此作为构件交互的补充形式 事件驱动,隐式调用•例子:•编程环境中工具集成•数据库管理系统中的一致性约束•用户界面中数据表示与管理数据的应用程序的分离•语法导向的增量语义检查 事件驱动,隐式调用优点:它提供了对重用非常好的支持通过注册一个系统事件,任何一个构件可以很容易的引入到系统中来能简化系统的演化在不改变系统中其他构件接口的情况下,构件可以非常容易的被其他构件取代 事件驱动,隐式调用•缺点:•构件放弃了自身对系统的计算的控制当一个构件发布一个事件,它不能保证保证其他构件会对其作出响应即使它能够肯定该事件会被其他构件响应,它也不能依赖事件被处理的先后顺序•在数据交换方面,有时数据通过事件传递,但在某些情况下,事件系统必须依赖一个共享缓冲区,这样整体的性能和资源的管理可能成为关键性问题ip)•正确性验证也可能是问题,因为发布事件的过程的具体含义与事件激发的上下文有关。

      分层系统(LAYERED SYSTEMS)•一个分层系统是按照层次结构组织的,每一层向它的上层提供服务,同时它又是下层的客户在某些分层系统中,内层只对其相邻的层和某些用于输出的函数是可见的,对其他外部的层是隐藏的在这些系统中,构件在某些层中实现虚拟机 分层系统(LAYERED SYSTEMS)应用系统层用户基本功能层内核层过程调用过程调用 分层系统(LAYERED SYSTEMS)•例子:•最著名的例子是分层通信协议•数据库系统•操作系统 分层系统(LAYERED SYSTEMS)•性质特点:•它支持逐级抽象的系统设计•它支持扩展,每层最多和上下两层交互•它支持重用 这使得定义标准层接口成为可能,在此接口上可建立不同实现OSI的ISO模型和X WINDOW SYSTEM) 分层系统(LAYERED SYSTEMS)•缺点:•并不是所有的系统都容易用这种模式来构建从性能的考虑,也需要将逻辑上高层次的功能与相对低层次的实现结合起来  很难找到一个合适的、正确的层次抽象方法 知识库(REPOSITORIES)•由两种截然不同的功能构件:一个是中央数据结构构件,代表系统当前状态,另一个是一些相对独立的构件的集合,这些构件对中央数据存储进行操作。

      •控制方式的选择将知识库分成了两种主要的子类输入流中事务触发系统相应的进程执行,是传统的数据库型知识库由中心数据结构的当前状态触发系统相应的进程执行,这种称为黑板知识库 知识库(REPOSITORIES)-黑板体系结构黑板(共享数据)KS1KS8KS7KS6KS5KS4KS3KS2Knowledge source直接存取计算 知识库(REPOSITORIES)-黑板体系结构•黑板系统传统上应用在复杂信号处理解释上,比如语音和模式识别•通过松散连接代理共享数据•集成编程环境•编译器(以共享信息为基础) 解释器(INTERPRETERS)•通常有一个虚拟机一个解释器包括正在被解释执行的伪码和解释引擎本身包含四个部分:完成解释工作的解释引擎,一个包含将被解释的伪码的存储区,一个纪录解释引擎当前工作状态的数据结构,以及一个纪录源代码被解释执行的进度的数据结构 解释器(INTERPRETERS)被解释的程序(伪码)数据(程序状态)解释引擎内部解释器状态选择的指令和数据输入输出 5流行的软件体系结构•Sun(Oracle)的java平台•Microsoft的.NET平台 5流行的软件体系结构•这两种体系结构提供的技术服务,•例如:事务的完整性、消息传递和目录服务、安全、异常处理、远程访问,以及许多其他服务,它们使开发人员能够将注意力集中在构件的功能上,而无需关注工作需要的所有底层技术基础。

      基于JAVA的分布式构件技术客户端应用程序客户端应用程序动态动态HTML页面页面动态动态HTML页面页面客户层客户层JSP页面页面EJBJSP页面页面EJBWEB层层业务层业务层EIS层层数据库数据库数据库数据库数据库数据库 基于.NET平台的分布式构件技术VB C++ C# PERL WEB 服务服务 用户界面用户界面 数据和数据和XML(ADO.NET) 类库(类库(CLASS LIBRARY)) 通用语言运行时(通用语言运行时(Common Language Runtime)) Visual studio .net ØC/S软件体系结构是基于资源不对等,且为实现共享而提出来的,是20世纪90年代成熟起来的技术,C/S体系结构定义了工作站如何与服务器相连,以实现数据和应用分布到多个处理机上￿ØC/S体系结构有三个主要组成部分:数据库服务器、客户应用程序和网络第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 概述 ØRIA结合了C/S架构反应速度快、交互性强的优点,以及B/S架构传播范围广及容易传播的特性ØRIA简化并改进了B/S架构的用户交互Ø数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面ØRIA可以继续使用现有的应用程序模型(包括J2EE和.NET),因而无需大规模替换现有的Web应用程序。

      通过RIA技术,可以轻松构建更为直观、易于使用、反应更迅速并且可以脱机使用的应用程序ØRIA可以帮助企业提供多元化的重要业务效益,包括提高产品销量、提高品牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助以及增强客户关系等]RIA的概念￿– RIA的优点 ]RIA模型 ]RIA客户端开发技术FlexLaszloJavaAJAXXULBindowsRIA ]RIA客户端开发技术￿– AJAX 第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 模型 服务器服务器Ø 数据库安全性的要求;数据库安全性的要求;Ø 数据库访问并发性的控制;数据库访问并发性的控制;Ø 数据库前端的客户应用程序的全局数据完整性规则;数据库前端的客户应用程序的全局数据完整性规则;Ø 数据库的备份与恢复数据库的备份与恢复第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 任务分配 客户应用程序Ø￿￿提供用户与数据库交互的界面;Ø￿￿向数据库服务器提交用户请求并接收来自数据库服务器的信息;Ø￿￿利用客户应用程序对存在于客户端的数据执行应用逻辑要求第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 任务分配 第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 处理流程 ØC/S￿体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。

      Ø系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小Ø在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用￿第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 优点 ◎￿￿开发成本较高◎￿￿客户端程序设计复杂◎￿￿信息内容和形式单一◎￿￿用户界面风格不一,使用繁杂,不利于推广使用◎￿￿软件移植困难◎￿￿软件维护和升级困难◎￿￿新技术不能轻易应用第第3 3章章 软件体系结构风格软件体系结构风格]C/S风格 – 缺点 第第3 3章章 软件体系结构风格软件体系结构风格]三层C/S风格 – 模型 第第3 3章章 软件体系结构风格软件体系结构风格]三层C/S风格 – 处理流程 第第3 3章章 软件体系结构风格软件体系结构风格]三层C/S风格 – 物理结构 Ø允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性。

      Ø允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性Ø应用的各层可以并行开发,可以选择各自最适合的开发语言Ø利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段去非法地访问数据层,为严格的安全管理奠定了坚实的基础第第3 3章章 软件体系结构风格软件体系结构风格]三层C/S风格 – 优点 Ø三层C/S结构各层间的通信效率若不高,即使分配给各层的硬件能力很强,其作为整体来说也达不到所要求的性能Ø设计时必须慎重考虑三层间的通信方法、通信频度及数据量这和提高各层的独立性一样是三层C/S结构的关键问题第第3 3章章 软件体系结构风格软件体系结构风格]三层C/S风格 – 要注意的问题 Ø浏览器/服务器(B/S)风格就是上述三层应用结构的一种实现方式,其具体结构为:浏览器/Web服务器/数据库服务器ØB/S体系结构主要是利用不断成熟的WWW浏览器技术,结合浏览器的多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节约了开发成本。

      从某种程度上来说,B/S结构是一种全新的软件体系结构第第3 3章章 软件体系结构风格软件体系结构风格]三层B/S风格 – 概述 第第3 3章章 软件体系结构风格软件体系结构风格]三层B/S风格 – 模型 Ø基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级ØB/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础第第3 3章章 软件体系结构风格软件体系结构风格]三层B/S风格 – 优点 ØB/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能ØB/S体系结构的系统扩展能力差,安全性难以控制Ø采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构ØB/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于事务处理(OLTP)应用第第3 3章章 软件体系结构风格软件体系结构风格]三层B/S风格 – 缺点 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.