软件体系结构Chap03风格(上).ppt_第1页
软件体系结构Chap03风格(上).ppt_第2页
软件体系结构Chap03风格(上).ppt_第3页
软件体系结构Chap03风格(上).ppt_第4页
软件体系结构Chap03风格(上).ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,课 程 内 容,第1章 绪论 第2章 软件体系结构概论 第3章软件体系结构风格 第4章软件体系结构建模 第5章 软件体系结构描述 第6章 基于体系结构的软件开发 第7章 流行的软件体系结构 第8章 案例分析,2,第三章 软件体系结构风格, 3.1 概述 3.2 经典软件体系结构风格 3.3 公共对象请求代理体系结构 3.4 正交体系结构 3.5 基于层次消息总线的体系结构风格 3.6 异构结构风格 3.7 互联系统构成的系统及其体系结构 3.8 面向体系结构的架构(SOA),3,3.1 概述,软件体系结构风格(Style):描述特定系统组织方式的惯用范例,强调组织模式和惯用范例。组织模式即静态表述的样例,惯用范例则是反映群众多系统共有的结构和语义。 软件体系结构设计的核心问题:能否达到体系结构级的软件重用; 对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。,PS:体系结构模式 体系结构惯用描述和体系结构风格是同一个意思,目的:展示软件体系结构丰富的选择空间,在此基础上对风格选择的一些权衡,4,使用软件体系结构风格的优点: 促进设计重用; 带来巨大的代码重用; 使系统更易于被他人理解; 使用标准化的风格有利于系统的互操作性; 便于利用特有的体系结分析方法; 提供特定风格的可视化。,5,在体系结构层次上,常出现客户机服务器系统、管道过滤器设计或者分层体系结构等软件风格术语,这些术语一般与特定的设计方法和符号相关,如面向对象和数据流等,虽然还没有对体系结构惯用模式实现分类,但是这种分类的轮廓已开始出现,如下部分主要种类:,6,软件体系结构风格是反复出现的组织模式和习惯用法,是对一系列体系结构设计的抽象; 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束; 词汇表包括一些构件和连接件,约束指出系统如何将这些构件和连接件组合起来;,一个软件体系结构风格定义了构件和连接件类型的符号集,以及规定它们怎样组合起来的约束集合。,7,讨论体系结构风格时要回答的问题: 设计词汇表是什么? 构件和连接件的类型是什么? 可容许的结构模式是什么? 基本的计算模型是什么? 风格的基本不变性是什么? 其使用的常见例子是什么? 其优缺点是什么? 体系结构风格最关键的四个要素:提供一个词汇表、定义一套配置规则、定义一套语义解释原则和定义对基于这种风格的系统所进行的分析。 分析7种通用的风格,8,Garlan和Shaw对通用体系结构风格的分类: (1)数据流风格:批处理序列、管道/过滤器 (2)调用/返回风格:主程序/子程序、面向对象系统、多级分层 (3)独立构件风格:进程通讯、事件系统; (4)虚拟机风格:解释器、基于规则的系统; (5)知识库风格:数据库系统、超文本系统、黑板系统,PS: 知识库风格也称为数据中心系统或仓库系统,9,3.2 经典软件体系结构,3.2.1 管道和过滤器 3.2.2 数据抽象和面向对象组织 3.2.3 基于事件的隐式调用 3.2.4 分层系统 3.2.5 知识库 3.2.6 模型-视图-控制器(MVC)风格 3.2.7 解释器风格 3.2.8 客户/服务器风格(C/S) 3.2.9 三层C/S结构风格 3.2.10 浏览器/服务器风格(B/S),10,3.2.1 管道和过滤器(PIPES AND FILTER),产生于UNIX操作系统,适用于对有序数据进行一系列已经定义的独立计算的应用程序; 每个构件(过滤器)都有一组输入和输出,构件读输入的数据流,经内部处理,产生输出数据流; 连接件位于过滤器之间,起到信息流导管的作用,称为管道; 管道和过滤器系统的输出的正确性不依赖于过滤器的递进处理顺序。,11,管道过滤器通用结构: 过滤器是一个独立实体,其间无需共享状态 管线(Pipelines):限制系统的拓扑结构只能是过滤器的线性序列 有界管线(Bounded Pipes):限制了在管道中能容纳的数据量 类型定义管道(Type Pipes):明确定义在两个过滤器间的数据类型,12,管道和过滤器风格的例子: UNIX的shell程序,如命令: cat file | grep xyz | sort | uniq out 在文件file中查找包括xyz的行 排序 去掉重行 输出到out文件中; 编译器:词法分析 句法分析 语义分析 代码生成。,13,管道和过滤器的实现: 将系统任务分成几个独立的处理阶段; 定义每个管道传输的数据格式; 决定管道的连接; 设计和实现过滤器; 设计出错处理; 建立处理流水线。,14,管道和过滤器的优点: 每个过滤器都是独立的整体,相互之间的状态互不影响;只要具备输入条件即可独立地完成自己的处理 支持功能模块的重用;过滤器并不知道它的上游和下游的过滤器的特性;它的设计和实现不会对与它相连的过滤器加以限制。 系统容易维护和扩展 支持某些特定的分析,如吞吐量和死锁检测 并发性,15,管道和过滤器的缺点: 管线或流水线(Pipe Line):过滤器严格限制为单输入、单输出类型,系统拓扑结构只能是线性序列; 交互性比较弱 兼容性相对弱;维持两个相对独立但又存在某种关系的数据流之间的通信可能比较困难; 有名管道:在过滤器之间通过有名的管道来进行数据传送,增加了解析或反馈工作,从而降低系统的效率。,16,3.2.2 数据抽象和面向对象组织,建立在数据抽象和面向对象的基础上,数据表示方法及其相应操作被装到一个抽象数据类型(对象)中; 对象(构件)负责保持资源的完整性,对象通过函数和过程调用(连接件)来交互; 适用于以相互关联的数据实体的标识和保护为中心问题的应用程序。,17,面向对象风格的优点: 封装:对象具有信息隐藏特性,内部结构对外不可见; 继承:从具有通用特征的对象开始,逐渐定义更具体对象多态:不同类型的对象可以对相同的激励做出不同的响应,18,PS: 数据抽象是特殊化的面向对象风格:ADT (Abstract Data Type)只有封装特点,没有继承和多态的特点。,面向对象风格的缺点: 1、对象调用过程中必须要知道对象的标识,只要一个对象的标识改变,就必须修改所有其他明确调用它的对象。 2、同时要修改每一个引用了这个模块的“导入”列表,这样会带来不可预料的副作用。,19,3.2.3 基于事件的隐式调用,基于事件(Event-Based)的风格又称为隐式调用(Implicit Invocation)风格,构件不直接调用一个过程,而是触发或广播一个或多个事件,由系统调用为这一事件注册的其他构件的过程; 每个构件的接口不仅提供一个过程的集合,也提供一个事件的集合;一个构件可注册多个事件,一个事件可触发对多个构件过程的调用; 适用于涉及低耦合构件集合的应用程序,如在用户界面系统中管理数据,在数据库管理系统中确保数据的一致性,在编辑器中支持语法检查。,20,隐式调用风格的优点 为软件重用提供了强大的支持 为改进系统带来了方便 隐式调用风格的缺点 构件放弃了对系统计算的控制 数据交换的问题 既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题,21,3.2.4 分层系统,系统组织为层次结构,每一层为上层提供服务,作为下层的客户,通常不允许跨层交互; 适应于可以按照层次结构来组织不同类别的相关服务的应用程序; 系统中构件在一些层实现了虚拟机的功能; 连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束; 如分层通信协议,每一层提供一个抽象的功能作为上层通信的基础,最低层只定义硬件物理连接。,22,例:ISO的OSI/RM (Open Systems Interconnection Reference Model) 7层模型,23,分层系统的实现: 为分层定义抽象准则,定义抽象层次; 给每一层命名并指定它们的任务和提供的服务; 为每个层定义接口、实现独立的层; 确定相邻层通信、降低相邻层的耦合程度; 设计错误处理策略。,24,基于微内核模式构建的Windows NT系统: 系统服务层:子系统与NT执行程序间的接口层; 资源管理层:包括对象管理、安全引用监视、进程管理、I/O管理、虚拟存储管理、局部过程调用等模块; 内核:负责基本功能,如中断和异常处理,多处理器同步,线程调度; 硬件抽象层:隐藏不同处理器系列机器间硬件的差异; 硬件层; 非严格分层结构,内核和I/O管理需要直接访问硬件。,25,分层系统风格的优点 可以把一个复杂系统按递增的步骤进行分解 支持功能强,因为每一个层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。 支持重用,定义一组标准接口允许各种不同的实现方法。 分层系统风格的缺点 层次的划分不太容易 很难找到一个合适的、正确的层次抽象方法,26,3.2.5 知识库,适用于无确定性求解策略的问题:实践中许多复杂问题难以用数学精确地描绘和严格地分析,如医疗诊断、法律推理、军事分析等; 解决方法依赖于积累了人类知识和经验的知识库; 知识库风格的体系结构由两种构件组成: 一个中央数据结构,表示系统当前状态; 一个独立构件的集合,对中央数据结构进行操作。,27,对于系统中数据和状态的控制方法分两种: 由输入事务选择进行何种处理,并把执行结果作为当前状态存储到中央数据结构中,知识库为传统的数据库型知识库; 由中央数据结构的当前状态决定进行何种处理,知识库为一黑板体系结构。 黑板反映的一种信息共享的系统,传统应用是信号处理领域,源于1970s人工智能的自然语言处理系统HEARSAY-II。,28,黑板体系结构模型通常由3部分组成: 知识源:包含独立的、与应用程序相关的知识; 黑板数据结构:反映应用程序求解状态的数据,按照与应用程序相关的层次来组织; 控制器:一组对公共数据结构进行协同操作的独立程序集合,由黑板的状态驱动。,29,黑板结构实现: 定义问题:指出问题的领域、确定系统输入、输出,细化系统与用户的交互要求; 定义问题解空间:确定目标解的构成,列出解决方案的不同抽象等级,找出能独立工作的完整解的部分解; 求解过程:如何将低级中间解转换成高等解,定义在某抽象层上如何进行启发性搜索,定义黑板词汇集,设计系统控制,实现知识库。,黑板系统传统上应用在复杂信号处理解释上,如语音和 模式识别,现代编译器也是以共享信息为基础的,30,解释器风格中通常有一个虚拟机,弥合程序语义所期望的与硬件提供的计算引擎之间的差距 解释器包括正在被解释执行的伪码和解释引擎本身 伪码由需要解释的源代码和解释引擎分析所得到的中间代码组成。 解释引擎:语法、解释器的定义和解释器当前执行状态,3.2.6 解释器,31,3.2.7 模型-视图-控制器(MVC)风格,许多应用系统使用图形用户界面,MVC主要用于处理软件用户界面开发中所面临的问题: 用户界面需要经常改变; 不同的用户对用户界面的表示和使用有不同的要求; 同样的数据希望能以不同的形式显示给用户; 为方便界面修改和移植,应把计算模型和显示模型独立。,32,Model-View-Controller将交互式应用划分为3种构件: 模型:应用程序的核心,封装内核数据与状态; 视图:为用户显示模型信息,一个模型可对应多个视图; 控制器:提供给用户进行操作的接口,每个视图与一个控制器构件相关联。 例:Microsoft提供的Windows应用程序的文档视图结构(Document-View Architecture)。,33,MVC的实现: 分析应用问题,将人机交互从核心功能中分离开来; 设计应用程序的模型构件; 设计和实现每个视图; 设计和实现每个控制器; 创建“可安装”的控制器,增加系统灵活性。,34,3.2.8 客户/服务器风格(C/S),客户/服务器风格(Client/Server):数据和处理分布在一定范围内的多个构件上,构件通过网络连接。 特征: 服务器构件:向多个客户提供服务,永远处于激活状态,监听用户请求; 客户构件:向服务器构件请求服务; 连接件:某种通信机制,通常是基于RPC (Remote Procedure Call protocol )的交互协议; 理解情况下,访问是透明的。,35,服务器负责有效地管理系统的资源: 数据库安全性的要求; 数据库访问并发性的控制; 数据库前端的客户应用程序的全局数据完整性规则; 数据库的备份与恢复; 客户应用程序的主要任务: 提供用户与数据库交互的界面; 向数据库服务器提交用户请求并接收来自数据库服务器的信息 利用客户应用程序对存在于客户端的数据执行应用逻辑要求。 C/S特点 C/S结构将应用一分为二,服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务 服务器为多个客户应用程序管理数据,而客户程序发送、请求和分析服务器接收的数据,属“胖客户机(fat client)”,或称为“瘦服务器(thin server)”体系结构,36,C/S体系结构风格的优点 强大的数据操作和事务处理能力 通过局域网络连接低成本计算机,可以节约大量费用 易于系统的扩充和缩小 C/S体系结构风格的缺点 开发成本高 客户端程序设计复杂 信息内容和形式单一 用户界面风格不一,使用繁杂,不易推广使用 软件移植困难 软件维护和升级困难 新技术不能轻易应用,37,3.2.9 三层C/S结构风格,传统二层C/S结构的局限性: 以单一服务器为局域网中心,难以扩展至大型企业广域网或Internet; 软、硬件的组合及集成能力有限; 客户机的负荷重,难以管理大量的客户机,系统性能容易变坏; 客户端程序可直接访问数据库服务器,数据安全性不好; 三层C/S结构增加一个应用服务器,分为表示层、功能层和数据层;,38,表示层 应用的用户接口部分,担负着用户与应用间的对话功能; 方便用户使用,如GUI; 检查输入数据合法性; 功能层 应用的主体,具体的业务处理逻辑; 用户对应用和数据的存取权限,处理日志。 数据层 数据库管理系统,负责管理对数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论