已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系结构 1 1概述 我们要学的这个是什么玩意 我们为什么要学这个玩意 我们将来会怎么干 其他人是怎么玩的 2 1概述 软件工程师需要一种更好的视角来理解软件 并试图找到一种新的方法来构建更复杂的大型软件系统SA softwarearchitecture 一个简单程序到复杂系统软件的距离是十年 3 1概述 需求开发的主要困难 4 1概述 软件危机的原因 软件规模越来越大随着软件应用范围的增广 软件规模愈来愈大 大型软件项目需要组织一定的人力共同完成 而多数管理人员缺乏开发大型软件系统的经验 而多数软件开发人员又缺乏管理方面的经验 各类人员的信息交流不及时 不准确 有时还会产生误解 软件项目开发人员不能有效地 独立自主地处理大型软件的全部关系和各个分支 因此容易产生疏漏和错误 5 1概述 软件危机的原因 软件复杂度越来越高软件不仅仅是在规模上快速地发展扩大 而且其复杂性也急剧地增加 软件产品的特殊性和人类智力的局限性 导致人们无力处理 复杂问题 所谓 复杂问题 的概念是相对的 一旦人们采用先进的组织形式 开发方法和工具提高了软件开发效率和能力 新的 更大的 更复杂的问题又摆在人们的面前 6 1 1whatisSA 这种全局结构的设计和规划问题包括全局组织结构 全局控制结构 通信和同步以及数据存取协议 规定设计元素的功能 设计元素的组合 物理分布 规模和性能 演化的维度 设计方案的选择等 1随着软件系统的规模和复杂性不断增加 系统的全局结构的设计和规划变得比算法的选择以及数据结构的设计更加重要 2人们普遍认为 为系统设计一个合适的体系结构是系统取得长远的成功的关键因素 7 1 1whatisSA 首先 软件工程师在长期的实践中已经拥有了一套共享的 语义丰富的词典 它由软件系统的习惯用语 模式 软件系统组织结构风格组成 通过识别一个管道过滤器体系结构风格的实例 一个软件工程师传达了这样的事实 这个系统的主要功能就是进行数据流的转换 系统的主要功能由各种独立实体的过滤器分别来实现 系统的响应时间和吞吐量能用一种直接的方式计算出来 8 1 1whatisSA e g 每个Filter都有输入端和输出端 例如一个MPEG 1解码Filter它的输入是MPEG编码的流数据 它的输出端是一解码过的流数据 DirectShow正是通过将不同的Filter连接在一起完成特定的功能的 我们将这些Filter的连接叫做FilterGraph 如下图A给出是播放AVI的FilterGraph 图A播放AVI文件的GraphFilter图上图中每个模块分别代表了不同的Filter 媒体文件Filter从硬盘读取AVI文件 AVI分离Filter将文件分离为音频流和视频流 AVI解码Filter对视频流进行解码并送往Video表现Filter 由后者将各帧在显示器上显示 默认的DirectSound设备用DirectSound将音频流输出 9 1 1whatisSA 其次 体系结构的描述的作用好像一个框架 系统属性在这个框架下进行扩充 并且 它在考察一个系统实现其整体需求的能力中扮演了非常重要的作用 软件体系结构是非常抽象的 可以理解更大范围的 系统级的关注点 比如吞吐量 通信模式 执行控制结构 可伸缩性 以及系统演化的扩展方式 提供一个自然的框架 10 1 1whatisSA 软件设计层次体系结构级 系统性能与构件之间的整体联系 这个级别的构成元素是模块 模块通过各种方式互连 通过操作算子将子系统组装成一个系统 代码级 这个级别的设计问题包括算法和数据结构 其构成元素是编程语言原语 执行级 这个级别的设计问题包含存储器的映射 数据格式配置 堆栈和寄存器的分配 11 软件各级抽象 高级程序设计语言 数据结构与算法 软件结构研究的开始 抽象数据类型 程序族 软件体系结构 汇编语言 宏替换 高级语言编译器 数据类型 程序 数据结构 算法 软件划分与构造 方便系统的开发与维护 数据类型抽象 封装 信息隐藏 多态性 程序族在信息隐藏和软件结构设计上具有相同的模式 设计模式抽象 软件体系结构使系统在体系结构级达到重用 12 1 2软件体系结构研究的内容和范畴 风格 设计模式 框架1 体系结构风格 architecturestyles 体系结构风格独立于实际问题 强调了软件系统中通用的组织结构 比如管道线 分层系统 客户机 服务器等等 13 1 2软件体系结构研究的内容和范畴 风格 设计模式 框架2 设计模式设计模式是软件问题高效和成熟的设计模板 模板包含了固有问题的解决方案 设计模式可以看成规范了的小粒度的结构成分 并且独立于编程语言或编程范例 设计模式的应用对软件系统的基础结构没有什么影响 但可能对子系统的组织结构有较大影响 每个模式处理系统设计或实现一种特殊的重复出现的问题 它为解决抽象部分和实现部分独立变化的问题提供了一种通用结构 因此 设计模式更强调直接复用的程序结构 14 1 2软件体系结构研究的内容和范畴 风格 设计模式 框架3 应用框架 applicationframework 应用框架是整个或部分系统的可重用设计 表现为一组抽象构件的集合以及构件实例间交互的方法 可以说 一个框架是一个可复用的设计构件 它规定了应用的体系结构 阐明了整个设计 协作构件之间的依赖关系 责任分配和控制流程 15 1 2软件体系结构研究的内容和范畴 体系结构风格 设计模式和应用框架的概念是从不同的目的和出发点讨论软件体系结构 它们之间的概念经常互相借鉴和引用 16 1 3体系结构设计原则 抽象分而治之封装和信息隐藏模块化高内聚和低耦合关注点分离策略和实现的分离接口和实现的分离 17 1 3体系结构设计原则 体系结构是指软件系统的基本和主体的形态 也就是软件系统中 最本质 的东西 一个软件系统的体系结构设计得好不好 可以用 合适性 结构稳定性 可扩展性 可复用性 这些特征量来评估 18 1 3体系结构设计原则 合适性 即体系结构是否适合于软件的 功能性需求 和 非功能性需求 设计师可以充分发挥主观能动性 根据需求的特征 通过推理和归纳的方法设计出合适的体系结构 经验不丰富的设计师往往把注意力集中在 功能性需求 而疏忽了 非功能性需求 殊不知后者恰恰是最能体现设计水平的地方 高水平的设计师高就高在 设计出恰好满足客户需求的软件 并且使开发方和客户方获取最大的利益 而不是不惜代价设计出最先进的软件 以设计住宅为例 对于软件系统而言 能够满足需求的设计方案可能有很多种 究竟该选哪一种 此时商业目标是决策依据 即选择能够为开发方和客户方带来最大利益的那个设计方案 大部分软件开发人员天生有使用新技术的倾向 而这种倾向对开发商业产品而言可能是不利的 切记切记 19 结构稳定性 当前中国有几句流行的至理名言 稳定压倒一切 发展是硬道理 发展的前提条件是稳定 社会如此 开发软件产品也是如此 体系结构一旦设计完成 应当在一定的时间内保持稳定不变 只有这样才能使后续工作顺利开展 如果体系结构经常变动 那么建筑在体系结构之上的用户界面 数据库 模块 数据结构等等也跟着经常变动 用 树倒猢狲散 来比喻很恰当 这将导致项目发生混乱 高水平的设计师应当能够分析需求文档 判断出哪些需求是稳定不变的 哪些需求是可能变动的 于是根据那些稳定不变的需求设计体系结构 而根据那些可变的需求设计软件的 可扩展性 20 可扩展性是指软件扩展新功能的容易程度 可扩展性越好 表示软件适应 变化 的能力越强 可扩展性越来越重要 这是由现代软件的商业模式决定的 社会的商业越发达 需求变化就越快 现代软件产品通常采用 增量开发模式 开发商不断地推出软件产品的新版本 从而不断地获取增值利润 稳定性和可扩展性之间存在辨证的关系 如果系统不可扩展的话 那么就没有发展前途 所以不能只关心稳定性而忽视可扩展性 而软件系统 可扩展 的前提条件是 保持结构稳定 否则软件难以按计划开发出来 稳定性是使系统能够持续发展的基础 所以稳定性和可扩展性都是体系结构设计的要素 如果每次变化都导致体系结构发生大的变动 那简直就是 伤筋动骨 这样的体系结构无疑是败笔之作 例如房屋装修 21 复用就是指 重复利用已经存在的东西 被复用的对象可以是有形的物体 也可以是无形的知识财富 复用不是人类懒惰的表现而是智慧的表现 因为人类总是在继承了前人的成果 不断加以利用 改进或创新后才会进步 复用的有利于提高产品的质量 提高生产率和降低成本 由经验可知 通常在一个新系统中 大部分的内容是成熟的 只有小部分内容是创新的 一般地可以相信成熟的东西总是比较可靠的 即具有高质量 而大量成熟的工作可以通过复用来快速实现 即具有高生产率 勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上 而把小部分的时间用在大比例的成熟工作中 这样才能把工作做得又快又好 22 复用的意义很容易理解 人们也乐意复用以前的成果 但是前提条件是该成果具有比较好的可复用性 可复用性是指成果被复用的容易程度 可复用性是设计出来的 而不是偶然碰到的 要使体系结构具有良好的可复用性 设计师应当分析应用域的共性问题 然后设计出一种通用的体系结构模式 这样的体系结构才可以被复用 23 2 1体系结构风格 数据流系统虚拟机批处理序列解释器管道和过滤器基于规则系统调用和返回系统数据中心系统 知识库 主程序和子程序数据库面向对象系统超文本系统多级分层黑板独立构件通讯进程事件系统 24 2 1体系结构风格 7种通用的风格管道和过滤器 对象 隐式调用 层 知识库 解释器和过程调用 25 2 2管道过滤器 pipes filters 构件对输入流进行内部转换和增量计算 在输入数据流全部处理之前 输出就已经开始了 重要特点是每个filter必须是一个独立实体 特别是filter之间无需共享状态 26 2 2管道过滤器 pipes filters 典型的例子 Unix的shell中编写的程序通过提供的符号表示要连接的构件和提供运行时机制实现管道 传统的编译器 词法分析 句法分析 词义分析 代码生成阶段信号处理领域并行计算功能编程分布式系统 27 2 2管道过滤器 pipes filters 管道过滤器的优点 设计者可以将整个系统的输入和输出特性理解为各个过滤器功能的简单合成 支持功能模块的重用 只要相互传输的数据格式达成一致 就可以连接在一起 系统容易维护和扩展 新的过滤器可以加进来 旧的可以被替换支持某些特定的分析 如吞吐量和死锁检测具有天然的并发特性 可以独立运行 也可以和其他过滤器并发执行 28 2 2管道过滤器 pipes filters 管道过滤器模式的缺点 过滤器独立性强 处理过程成批处理 不适合交互性强的应用维持两个相对独立但有不存在某种关系的数据流之间的通讯可能很困难 根据实际应用的要求 设计者也需要在数据传输时被迫使用底层公共命名 增加过滤器本身的复杂性 29 2 3数据抽象和面向对象组织结构 对象通过函数和过程调用来实现交互 这种模式有两个重要的方面 对象维护自身表示的完整性 通常是通过保持其表示上的一些不变式来实现的 这种表示对其他对象是隐藏的 30 2 3数据抽象和面向对象组织结构 面向对象系统有很多众所周知的优点 由于对象的对客户隐藏了实现的细节 所以可以在不影响其客户的情况下改变对象实现 另外 由于把操作的数据和一组存取例程绑定在一起 使得设计者能够把问题分解成交互作用的代理集合 31 2 3数据抽象和面向对象组织结构 最大的缺点 当一个对象和其他对象交互 过程调用 它必须知道其他对象的标识 而在过滤器系统中 过滤器是不需要知道其他过滤器的存在 每当一个对象的标识改变的时候 必须修改那些显式调用它的对象 在模块化语言中 当一个模块改变后需要修改每一个引用了这个模块的 导入 列表 32 2 4事件驱动 隐式调用 隐式调用 响应集成 选择性广播 这种模式起源于基于角色的系统 约束满足性检查 后台程序和包交换网络 思想是 不直接调用一个过程 而是发布或广播一个或多个事件 系统中的其他构件通过注册与一个事件关联起来的过程 来表示对某一个事件感兴趣 当这个事件发生时 系统本身会调用所有注册了这个事件的过程 这样一个事件的激发会导致其他模块中过程的隐式调用 33 2 4事件驱动 隐式调用 主要特点 事件发布者不知道哪些构件会受到事件的影响 这样 构件不能对事件的处理顺序 或者事件发生后的处理结果做任何假设 许多隐式调用系统也包含显示调用 正常的过程调用 以此作为构件交互的补充形式 34 2 4事件驱动 隐式调用 例子 编程环境中工具集成数据库管理系统中的一致性约束用户界面中数据表示与管理数据的应用程序的分离语法导向的增量语义检查 35 2 4事件驱动 隐式调用 优点 它提供了对重用非常好的支持 通过注册一个系统事件 任何一个构件可以很容易的引入到系统中来 能简化系统的演化 在不改变系统中其他构件接口的情况下 构件可以非常容易的被其他构件取代 36 2 4事件驱动 隐式调用 缺点 构件放弃了自身对系统的计算的控制 当一个构件发布一个事件 它不能保证保证其他构件会对其作出响应 即使它能够肯定该事件会被其他构件响应 它也不能依赖事件被处理的先后顺序 在数据交换方面 有时数据通过事件传递 但在某些情况下 事件系统必须依赖一个共享缓冲区 这样整体的性能和资源的管理可能成为关键性问题 ip 正确性验证也可能是问题 因为发布事件的过程的具体含义与事件激发的上下文有关 37 2 5分层系统 LAYEREDSYSTEMS 一个分层系统是按照层次结构组织的 每一层向它的上层提供服务 同时它又是下层的客户 在某些分层系统中 内层只对其相邻的层和某些用于输出的函数是可见的 对其他外部的层是隐藏的 在这些系统中 构件在某些层中实现虚拟机 38 2 5分层系统 LAYEREDSYSTEMS 应用系统层 用户 基本功能层 内核层 过程调用 过程调用 39 2 5分层系统 LAYEREDSYSTEMS 例子 最著名的例子是分层通信协议数据库系统操作系统 40 2 5分层系统 LAYEREDSYSTEMS 性质特点 它支持逐级抽象的系统设计它支持扩展 每层最多和上下两层交互它支持重用 这使得定义标准层接口成为可能 在此接口上可建立不同实现 OSI的ISO模型和XWINDOWSYSTEM 41 2 5分层系统 LAYEREDSYSTEMS 缺点 并不是所有的系统都容易用这种模式来构建 从性能的考虑 也需要将逻辑上高层次的功能与相对低层次的实现结合起来 很难找到一个合适的 正确的层次抽象方法 42 2 6知识库 REPOSITORIES 由两种截然不同的功能构件 一个是中央数据结构构件 代表系统当前状态 另一个是一些相对独立的构件的集合 这些构件对中央数据存储进行操作 控制方式的选择将知识库分成了两种主要的子类 输入流中事务触发系统相应的进程执行 是传统的数据库型知识库 由中心数据结构的当前状态触发系统相应的进程执行 这种称为黑板知识库 43 2 6知识库 REPOSITORIES 黑板体系结构 黑板 共享数据 KS1 KS8 KS7 KS6 KS5 KS4 KS3 KS2 Knowledgesource 直接存取 计算 44 2 6知识库 REPOSITORIES 黑板体系结构 黑板系统传统上应用在复杂信号处理解释上 比如语音和模式识别 通过松散连接代理共享数据集成编程环境编译器 以共享信息为基础 45 2 7解释器 INTERPRETERS 通常有一个虚拟机 一个解释器包括正在被解释执行的伪码和解释引擎本身 包含四个部分 完成解释工作的解释引擎 一个包含将被解释的伪码的存储区 一个纪录解释引擎当前工作状态的数据结构 以及一个纪录源代码被解释执行的进度的数据结构 46 2 7解释器 INTERPRETERS 被解释的程序 伪码 数据 程序状态 解释引擎 内部解释器状态 选择的指令和数据 输入 输出 47 5流行的软件体系结构 Sun Oracle 的java平台Microsoft的 NET平台 48 5流行的软件体系结构 这两种体系结构提供的技术服务 例如 事务的完整性 消息传递和目录服务 安全 异常处理 远程访问 以及许多其他服务 它们使开发人员能够将注意力集中在构件的功能上 而无需关注工作需要的所有底层技术基础 49 5 2基于JAVA的分布式构件技术 客户端应用程序 动态HTML页面 动态HTML页面 客户层 JSP页面 EJB JSP页面 EJB WEB层 业务层 EIS层 数据库 数据库 数据库 50 5 3基于 NET平台的分布式构件技术 VBC C PERL WEB服务用户界面 数据和XML ADO NET 类库 CLASSLIBRARY 通用语言运行时 CommonLanguageRuntime V 51 C S软件体系结构是基于资源不对等 且为实现共享而提出来的 是20世纪90年代成熟起来的技术 C S体系结构定义了工作站如何与服务器相连 以实现数据和应用分布到多个处理机上 C S体系结构有三个主要组成部分 数据库服务器 客户应用程序和网络 第3章软件体系结构风格 C S风格 概述 52 RIA结合了C S架构反应速度快 交互性强的优点 以及B S架构传播范围广及容易传播的特性RIA简化并改进了B S架构的用户交互数据能够被缓存在客户端 从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面RIA可以继续使用现有的应用程序模型 包括J2EE和 NET 因而无需大规模替换现有的Web应用程序 通过RIA技术 可以轻松构建更为直观 易于使用 反应更迅速并且可以脱机使用的应用程序RIA可以帮助企业提供多元化的重要业务效益 包括提高产品销量 提高品牌忠诚度 延长网站逗留时间 较频繁的重复访问 减少带宽成本 减少支持求助以及增强客户关系等 RIA的概念 RIA的优点 53 RIA模型 54 RIA客户端开发技术 55 RIA客户端开发技术 AJAX 56 第3章软件体系结构风格 C S风格 模型 57 服务器数据库安全性的要求 数据库访问并发性的控制 数据库前端的客户应用程序的全局数据完整性规则 数据库的备份与恢复 第3章软件体系结构风格 C S风格 任务分配 58 客户应用程序提供用户与数据库交互的界面 向数据库服务器提交用户请求并接收来自数据库服务器的信息 利用客户应用程序对存在于客户端的数据执行应用逻辑要求 第3章软件体系结构风格 C S风格 任务分配 59 第3章软件体系结构风格 C S风格 处理流程 60 C S体系结构具有强大的数据操作和事务处理能力 模型思想简单 易于人们理解和接受 系统的客户应用程序和服务器构件分别运行在不同的计算机上 系统中每台服务器都可以适合各构件的要求 这对于硬件和软件的变化显示出极大的适应性和灵活性 而且易于对系统进行扩充和缩小 在C S体系结构中 系统中的功能构件充分隔离 客户应用程序的开发集中于数据的显示和分析 而数据库服务器的开发则集中于数据的管理 不必在每一个新的应用程序中都要对一个DBMS进行编码 将大的应用处理任务分布到许多通过网络连接的低成本计算机上 以节约大量费用 第3章软件体系结构风格 C S风格 优点 61 开发成本较高 客户端程序设计复杂 信息内容和形式单一 用户界面风格不一 使用繁杂 不利于推广使用 软件移植困难 软件维护和升级困难 新技术不能轻易应用 第3章软件体系结构风格 C S风格 缺点 62 第3章软件体系结构风格 三层C S风格 模型 63 第3章软件体系结构风格 三层C S风格 处理流程 64 第3章软件体系结构风格 三层C S风格 物理结构 65 允许合理地划分三层结构的功能 使之在逻辑上保持相对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年物业清洁与维护服务合同3篇
- 2024年检测领域咨询服务协议精简版版
- 2024年协议离婚合作的艺术与法律框架3篇
- 2024事业单位青年英才招聘合同3篇
- 2025营业执照抵押合同范本格式
- 2024年新型城镇化建设项目投标书范本合同3篇
- 2025年开封货运上岗资格证模拟考试
- 洛阳师范学院《包装材料学》2023-2024学年第一学期期末试卷
- 房地产销售顾问聘用合同样本
- 环保产业授权经营的管理办法
- Minitab培训教程课件
- 技术需求信息表
- 乐山大佛介绍课件
- 血透室运用PDCA循环降低血透病人长期深静脉留置导管的感染率品管圈成果汇报
- 云南省昆明一中2024年高二上数学期末质量检测试题含解析
- 网络安全攻防演练防守方方案
- 教育政策与法规全套完整教学课件
- 关注心灵快乐成长心理健康教育主题班会
- 数胎动那些事儿胎动与胎儿安全孕妇学校课件PPT
- 冲刺高考主题班会
- 小型谷物烘干机设计
评论
0/150
提交评论