![[理学]C3风格四.ppt_第1页](http://file.renrendoc.com/FileRoot1/2019-1/2/577d40de-1be0-4000-b9e2-c871dd8794f0/577d40de-1be0-4000-b9e2-c871dd8794f01.gif)
![[理学]C3风格四.ppt_第2页](http://file.renrendoc.com/FileRoot1/2019-1/2/577d40de-1be0-4000-b9e2-c871dd8794f0/577d40de-1be0-4000-b9e2-c871dd8794f02.gif)
![[理学]C3风格四.ppt_第3页](http://file.renrendoc.com/FileRoot1/2019-1/2/577d40de-1be0-4000-b9e2-c871dd8794f0/577d40de-1be0-4000-b9e2-c871dd8794f03.gif)
![[理学]C3风格四.ppt_第4页](http://file.renrendoc.com/FileRoot1/2019-1/2/577d40de-1be0-4000-b9e2-c871dd8794f0/577d40de-1be0-4000-b9e2-c871dd8794f04.gif)
![[理学]C3风格四.ppt_第5页](http://file.renrendoc.com/FileRoot1/2019-1/2/577d40de-1be0-4000-b9e2-c871dd8794f0/577d40de-1be0-4000-b9e2-c871dd8794f05.gif)
已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 软件体系结构的风格 (四),张友生、覃征、李千目 清华大学出版社,3.6 虚拟机风格 3.7 反馈控制环风格 3.8 七种经典软件体系风格比较 3.12 异构风格(一),3.6 虚拟机风格,虚拟机风格: 解释器、基于规则的系统,3.6.1 虚拟机,从Java入手,Write Once, Run Anywhere 一次书写,多处运行,JAVA如何支持 Platform Independence,Java虚拟机,What is Virtual Machine?, 虚拟机是一种软件; 它创建了一种虚拟的环境; 将用户与底层平台隔离开来。,JVM:执行Java字节码的虚拟机 JVM可适应所有的硬件与OS平台,从而使得Java具有“一次书写,到处运行”的能力 在JVM上运行的程序必须首先被编译为标准的二进制格式的文件:.class,Java Virtual Machine (JVM),注意:Java class文件并不是机器代码或目标代码,而是一种具有标准中间格式的二进制文件,无法直接在任何OS平台上执行; Java Class必须在JVM的支持下才能真正执行; java class文件在JVM下运行,运行策略可能为: 解释器 JIT编译器,Java Class在JVM上的执行,JVM的执行机制,每个特定的OS需要实现自己的JVM 在执行具体的class代码之前,JVM需要针对特定的OS环境,进行以下转换 Load and store Type conversion Object creation and manipulation Operand stack management (push / pop) Control transfer (branching) Method invocation and return Throwing exceptions 将JAVA CLASS代码转化为特定OS所能支持的程序运行模式,JVM的功能与作用,总结:基于JVM的Java程序开发与执行过程,3.6.2 解释器 Interpreter,问题 不管何种类别的虚拟机,本质上都是在高层次抽象的用户与低层次抽象的OS/硬件之间建立一道屏障。 但是,如何把上层应用的请求映射到下层OS/硬件系统的执行? 解释器(Interpreter) 基于规则的系统(Rule-based System),解释器是一个用来执行其他程序的程序。 解释器针对不同的硬件平台实现了一个虚拟机。 将高抽象层次的程序翻译为低抽象层次所能理解的指令,以消除在程序语言与硬件之间存在的语义差异。,3.6.2 解释器 Interpreter,3.6.2 解释器,解释器通常用来在程序语言定义的计算和有效硬件操作确定的计算之间建立对应和联系。 简单和小规模的解释器只完成基本的信息识别和转换 复杂的解释器需要从词法到句法、到语法的复杂识别和处理,例如要在手机上进行应用开发: 通常手机上都有一些小型的操作系统。要在手机上写应用程序。 如果直接在手机上写,是非常痛苦的。如代码的输入、程序的调试、编译、运行都非常困难。 但是手机上的应用程序与PC机上的完全不同,它跑在不同的操作系统上面,使用的是不同的处理器,同时也涉及到不同的处理指令。 即使想在PC机上进行应用开发,也会碰到一个问题。手机上的指令在PC机上找不到,手机上调用的指令在PC机上是不被支持的。 这时,就需要一个能在PC机上模拟手机程序的嵌入式系统,使手机的特殊指令能在PC机运行。 也就是需要一个解释器或是模拟器,它的功能是通过在PC机上模拟手机上的指令,从而在PC机上能够运行手机上的程序。这样就可以在PC机上开发好后,再放到手机上运行。进而使整个手机上的应用程序开发变得容易。,3.6.2 解释器,3.6.2 解释器,作为一种体系结构,解释器已经被广泛应用在从系统到应用软件的各个层面, 包括各类语言环境、Internet浏览器、数据分析与转换等; LISP、Prolog、JavaScript、VBScript、HTML、产生式系统、数据库系统(SQL解释器)、各种通信协议等。,基本构件:(1个作为执行引擎的状态机和3个存储器) 解释器引擎 存储区 被解释的源代码 解释器引擎当前的内部控制状态的表示:在某个时刻需要执行哪些指令 程序当前执行状态的表示 连接器:过程调用和直接存储器访问。,解释器组成,解释器在软件中的应用由来已久,早期的程序语言环境就分为编译(Compilation)和解释(Interpretation)两大类。 二者在目标、功能与实现上有何差别? 二者的性能有何差别?,解释器和编译器 Interpreter versus compiler,Compiler (编译器) 编译器不会执行输入的源程序代码,而是将其翻译为另一种语言,通常是可执行的机器码或目标码,并输出到文件中以便随后链接为可执行文件并加以执行,Interpreter (解释器) 在解释器中,程序源代码被解释器直接加以执行。,解释器和编译器 Interpreter versus compiler,解释器的执行速度要慢于编译器产生的目标代码的执行速度,但是却低于编译器“编译+链接+执行”的总时间 解释器通常省略了链接与编译的步骤,从而降低编程时间 edit-interpret-debug (编辑源代码-解释-调试) edit-compile-link-run-debug (编辑源代码-编译-链接-运行-调试) 解释器执行速度之所以慢,是因为每次解释执行的时候,都需要分析程序的结构,而编译代码则直接执行而无需重复编译 解释器对内存的分配是在解释时才进行的;而编译器则是在编译时进行,因此运行时直接将程序代码装入内存并执行即可,解释器和编译器 Interpreter versus compiler,传统解释器(traditionally interpreted) 纯粹的解释执行 基于字节码的解释器(compiled to bytecode which is then interpreted) 编译解释执行 实时编译器Just-in-Time (JIT) 编译|解释执行,解释器的三种策略,解释器直接读取源代码并加以执行; ASP Excel JavaScript MATLAB etc,传统解释器,JVM中的解释器 Java的源程序不是直接交给解释器解释,而是先经过一个编译过程,把Java源程序翻译成一种特定的二进制字节码文件(Bytecode),再把这个字节码文件交给Java解释器来解释执行; javac 程序将Java源代码编译为字节码 Java编译器所生成的可执行代码可以不基于任何具体的硬件平台,而是基于JVM。 C/C+要的源程序要在不同的平台上运行,必须重新进行编译,字节码解释器Bytecode interpreter,JVM中的解释器,在该类解释器下,源代码首先被“编译”为高度压缩和优化的字节码,但并不是真正的机器目标代码,因而与硬件平台无关; 编译后得到的字节码然后被解释器加以解释; 例如: Java Perl PHP Python etc,字节码解释器 Bytecode interpreter,JIT模糊了解释器、字节码解释器和编译器之间的边界与区分,实时编译JIT中,字节码在运行时被编译为本机的目标代码 第一步是编译得到字节码 字节码被 配置到目标系统中 当字节码被执行时,运行环境下的编译器将其翻译为本地机器码) JIT模糊了解释器、字节码解释器和编译器之间的边界与区分,实时编译器JIT (Just-in-time) Complier,需编译哪些部分? 只有当某个函数要被执行时,才被编译,因此称为JIT 而且,JIT并不是编译全部的代码,而是只编译那些被频繁执行的代码段) 被执行多次的方法; 包含多次循环的方法.,实时编译器JIT (Just-in-time) Complier,适用的应用程序: 应用程序并不能直接运行在最适合的机器上,或不能直接以最适合的语言执行 优点: 有助于应用程序的可移植性和程序设计语言的跨平台能力 可以对未实现的硬件进行仿真,在测试上提供一个安全的和低成本的解决方案,提供了更多的灵活性。 缺点: 额外的间接层次(运行都是模拟的),带来了系统性能的下降(执行的速度) 解释的程序比编译的程序慢很多 比硬件实现慢更多 在解释器风格下进行测试,需要额外的构建软件,3.6.2 解释器,3.6.3基于规则的系统 Rule-based System,3.6.3基于规则的系统 Rule-based System,几个例子,if-else分支结构,当if-else结构越来越多时,业务逻辑与程序代码之间的“语义鸿沟”,业务逻辑的频繁变化,如何解决上述问题?,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,3.6.2 基于规则的系统,规则的分类,3.6.2 基于规则的系统,应用:基于规则的专家系统 (Rule-based Expert System),3.6.2 基于规则的系统,应用:一般专家系统结构下图:,3.6.2 基于规则的系统,应用:业务规则引擎(Business Rule Engine),3.7 反馈控制环风格,3.7 反馈控制环风格,源自于控制理论中的模型框架,将事务处理看做输入、加工、输出、反馈、再输人的一个持续的过程模型。 反馈控制系统:通过度量受控制变量来调控其他过程变量的闭环系统。 反馈控制环风格能处理复杂的自适应问题,尤其广泛应用于产品线的自动机械控制软件领域中。 如生产管理系统、工控系统、供电、水利甚至可以推广到商务软件中体现的管理模型中。,56,2019/5/3,3.7 反馈控制环风格,机器学习的基本模型 第一步,训练样本被输入到学习内容中,这一部分包含基本的将被查询的基本数据。 第二步,真正的数据被输入并得到结果。,57,2019/5/3,3.7 反馈控制环风格,在学习构件的分析和计算之后,学习结果被输出。但同时,学习内容将会检查结果的有效性,然后学习结果会回馈到学习构件当中。通过这一反馈,学习构件的学习能力得到提高,知识得到增长。,3.8 七种经典软件体系风格比较,不同的结构风格分别具有各自的特点、优劣和用途。以下从特点、优势、缺陷和应用4个方面对7种体系结构风格进行分析比较。 1. 管道过滤器风格 每个功能性构件都有一组输入和输出。每个过滤器都是独立的,不需要与其他过滤器建立联系。每个过滤器从它的输入接口读取数据,对这些数据进行处理,然后通过输出接口输出。 这种体系结构风格便于支持重复使用,易于维护和评估,支持有针对性的分析和并发。 但同时,这种结构必须在两个独立的过滤器问处理联系数据,缺乏交互性。 这种结构常用于通信领域和编译器。,59,2019/5/3,3.8 七种经典软件体系风格比较,2. 面向对象风格 在这种风格中,数据表示和相关操作被封装;类的对象负责它们的整合。对于某个对象来说,其他的对象是透明的,仅仅暴露出接口。 这种风格的优点是高模块化、代码封装、代码共享、易维护以及良好的扩展性。 缺点是调用者必须知道被调对象的引用。当对象引用改变时,必须通知所有可能调用其方法的对象。这一特点使系统具有比较高的耦合。 此风格广泛运用于用面向对象语言实现的系统中,如Java和C。,60,2019/5/3,60,2019/5/3,3.8 七种经典软件体系风格比较,3. 事件驱动风格 基于此风格的系统由许多子系统或元素组成。整个系统有许多目标,并利用消息协作的方式来工作。在这些子系统中,有一个主子系统负责整个系统的运行。每个元素拥有事件接收和处理机制。 这种风格易于完成并发多任务,拥有良好的延展性。子系统通过复合可以构成更复杂的系统。与面向对象风格不同的是,这种风格具有良好的交互特性。 缺点是:它对系统计算控制能力弱,很难共享大量数据,对象之间的逻辑也较复杂。 集成开发环境(Integrated Development EnVironment,IDB) 应用了此风格。,61,2019/5/3,61,2019/5/3,61,2019/5/3,3.8 七种经典软件体系风格比较,4.分层风格 整个的系统被分解成许多层。每层为上层提供服务,同时接受来自较低层的服务。 这类型的风格支持抽象化和软件重用性,而且有不错的扩展性。 但是因为方法调用的间接性,可能影响整个系统的性能。 典型的分层系统是网络协议。,62,2019/5/3,62,2019/5/3,62,2019/5/3,3.8 七种经典软件体系风格比较,5. 数据共享,也称为库风格 中央的数据单元被共享,它为一些单元提供存储和访问服务。整个的系统有一个控制单元。 这种风格具备良好的知识库扩展性,能解决具体领域的问题。 因此这种风格通常用于专家系统,如自然语言处理和模式识别。,63,2019/5/3,63,2019/5/3,63,2019/5/3,3.8 七种经典软件体系风格比较,6.解释器风格 具有固定的结构、伪代码和解释器引擎。解释器引擎包括它的定义及其操作状态。 以这种风格为基础的系统能处理具体领域的问题,典型的应用是解释性语言的解释器。,64,2019/5/3,64,2019/5/3,64,2019/5/3,64,2019/5/3,3.8 七种经典软件体系风格比较,7.反馈控制环风格 最典型特性是:通过其学习构件和决策者构件的运用,能利用学习和信息更新增强自身的功能。 它的典型的应用是生产管理系统。,65,2019/5/3,65,2019/5/3,65,2019/5/3,3.8 七种经典软件体系风格比较,从这7种结构风格的比较中,能发现这些风格具有的一个共同性质属性:良好的扩展性。实际上,基于软件工程学的原则,好的软件总是倾向于可变化、易扩展。扩展困难的软件当然不是好软件,因此一种不能支持系统扩展的结构风格将不具备可扩展性。 每种风格只能在特定环境中使用。它们趋向于以牺牲其他质量属性为代价得到其中一个好的质量属性。 如,管道过滤器风格有不好的交互性,但事件驱动风格却对这种交互有不错的支持。事件驱使风格很难共享数据,但数据共享风格最大的优势正是对数据共享的支持。,3.12 异构风格,3.12 异构风格 的集成 案例一,3.12 异构风格 的集成,所有的体系结构不仅有很紧密的联系,而且在大多数情况下是被一起使用的。 对于一个实际的系统,甚至不能判断它是A风格、B风格还是C风格,因为没有足够的理由把它归为任何一种独立的体系结构风格。 这种系统类型可以被称为复合系统,这种系统的构建模式被称为异构风格的集成。,上图展示了一个虚拟系统,它整合了许多体系结构风格。可以把整个系统当成一个分层系统。这样它可以被分成两层:第1层是原始数据生成层,第2层是解释层。 在第1层,主要的组成部分是管道过滤器子系统。 (1)第1个过滤器中的数据能够被送到第2个过滤器中。 (2)当第2个过滤器收到数据时,将会产生相应的信息,然后将此信息传送到事件队列构件和服务提供对象构件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025人力资源管理聘用合同书范本
- 2025关于泉州市房地产代理合同(乙种本)
- 2025年甘肃省平凉华亭市山寨回族乡招聘行政村村文书模拟试卷(含答案详解)
- 2025广东农信社校园招聘考前自测高频考点模拟试题及答案详解(典优)
- 《2025年以自有车辆抵债合同》
- 2025江苏苏州市轨道交通集团有限公司专业化青年人才定岗特选人员考前自测高频考点模拟试题及答案详解(全优)
- 2025年三环集团留学生招聘考前自测高频考点模拟试题(含答案详解)
- 2025福建省梧凤文旅集团有限公司招聘1名工作人员模拟试卷及完整答案详解
- 2025辽宁工程技术大学招聘高层次人才216人考前自测高频考点模拟试题含答案详解
- 2025年辉南县补录1名乡镇、街道派驻消防文员模拟试卷及答案详解(新)
- 华为信息安全管理培训课件
- 诗经整本书阅读课件
- (2025年标准)预售小麦协议书
- 2025年院感测试题及答案
- 承包商全流程安全培训
- 养生店国庆节活动方案
- 古代文学史杜牧课件
- 7.1促进民族团结 课件 2025-2026学年统编版道德与法治九年级上册
- 全套教学课件《工程伦理学》
- 道路凿除及新做砼路面施工方案
- ISO50001-2018能源管理体系内审计划、记录及报告
评论
0/150
提交评论