软件体系结构ppt课件

上传人:新** 文档编号:568021595 上传时间:2024-07-23 格式:PPT 页数:142 大小:1.26MB
返回 下载 相关 举报
软件体系结构ppt课件_第1页
第1页 / 共142页
软件体系结构ppt课件_第2页
第2页 / 共142页
软件体系结构ppt课件_第3页
第3页 / 共142页
软件体系结构ppt课件_第4页
第4页 / 共142页
软件体系结构ppt课件_第5页
第5页 / 共142页
点击查看更多>>
资源描述

《软件体系结构ppt课件》由会员分享,可在线阅读,更多相关《软件体系结构ppt课件(142页珍藏版)》请在金锄头文库上搜索。

1、软件体系结构刘兴 计算机学院软件工程系1软件体系结构内容1概述2软件体系结构风格3案例研究4软件体系结构的分析与评估(略)5流行的软件体系结构6设计模式与软件架构7企业架构师和设计师、企业软件架构简介21概述我们要学的这个是什么玩意?我们为什么要学这个玩意?我们将来会怎么干?其他人是怎么玩的?31概述它是一种简单的、清楚的、完善的方式形成的软件工程师需要一种更好的视角来理解软件,并试图找到一种新的方法来构建更复杂的大型软件系统SA (software architecture)一个简单程序到复杂系统软件的距离是十年4 1概述需求开发的主要困难51概述软件危机的原因软件规模越来越大软件规模越来越

2、大 随着软件应用范围的增广,软件规模愈来愈大。大随着软件应用范围的增广,软件规模愈来愈大。大型软件项目需要组织一定的人力共同完成,而多数管型软件项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,而多数软件开理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。不及时、不准确、有时还会产生误解。 软件项目开发人员不能有效地、独立自主地处理大软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和型软件的全部关系和各个分支,

3、因此容易产生疏漏和错误。错误。61概述软件危机的原因软件复杂度越来越高软件复杂度越来越高 软件不仅仅是在规模上快速地发展扩大,而且其复软件不仅仅是在规模上快速地发展扩大,而且其复杂性也急剧地增加。软件产品的特殊性和人类智力的杂性也急剧地增加。软件产品的特殊性和人类智力的局限性,导致人们无力处理局限性,导致人们无力处理“复杂问题复杂问题”。 所谓所谓“复杂问题复杂问题”的概念是相对的,一旦人们采用的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在人们率和能力,新的、更大的、更复杂的问题

4、又摆在人们的面前。的面前。71.1what is SA ?这种全局结构的设计和规划问题包括 全局组织结构;全局控制结构;通信和同步以及数据存取协议;规定设计元素的功能;设计元素的组合;物理分布;规模和性能;演化的维度;设计方案的选择等。1随着软件系统的规模和复杂性不断增加,系统的全局结构的设计和规划变得比算法的选择以及数据结构的设计更加重要。2人们普遍认为,为系统设计一个合适的体系结构是系统取得长远的成功的关键因素。3非形式化的。81.1what is SA ?形式化还是非形式化 :首先,软件工程师在长期的实践中已经拥有了一套共享的,语义丰富的词典,它由软件系统的习惯用语,模式,软件系统组织结

5、构风格组成。通过识别一个管道过滤器体系结构风格的实例,一个软件工程师传达了这样的事实:这个系统的主要功能就是进行数据流的转换,系统的主要功能由各种独立实体的过滤器分别来实现,系统的响应时间和吞吐量能用一种直接的方式计算出来。91.1what is SA ?e.g.每个Filter都有输入端和输出端,例如一个MPEG-1解码Filter它的输入是MPEG编码的流数据,它的输出端是一解码过的流数据。DirectShow正是通过将不同的Filter连接在一起完成特定的功能的,我们将这些Filter的连接叫做FilterGraph,如下图A给出是播放AVI的FilterGraph:图A播放AVI文件的

6、GraphFilter图上图中每个模块分别代表了不同的Filter,媒体文件Filter从硬盘读取AVI文件,AVI分离Filter将文件分离为音频流和视频流,AVI解码Filter对视频流进行解码并送往Video表现Filter,由后者将各帧在显示器上显示,默认的DirectSound设备用DirectSound将音频流输出。101.1what is SA ?其次,体系结构的描述的作用好像一个框架,系统属性在这个框架下进行扩充,并且,它在考察一个系统实现其整体需求的能力中扮演了非常重要的作用。(软件体系结构是非常抽象的,可以理解更大范围的,系统级的关注点,比如吞吐量,通信模式,执行控制结构,

7、可伸缩性,以及系统演化的扩展方式,提供一个自然的框架。)111.1what is SA ?软件系统的体系结构定义系统由计算构件和构件之间的相互作用组成。构件可以是客户机和服务器、数据库、过滤器或者是在一个分层系统中的层。构件之间的相互作用在这个设计层次上可以是简单和相似的,比如过程调用,共享变量的访问。但是它们也可以是复杂和语义丰富的。比如客户机服务器协议(clientserver protocols)数据库存取协议(database-accessing protocols),异步事件多点传送(asynchronous event multicast)和管道数据流(piped streams)

8、121.1what is SA ?软件设计层次体系结构级:系统性能与构件之间的整体联系。这个级别的构成元素是模块,模块通过各种方式互连,通过操作算子将子系统组装成一个系统。代码级:这个级别的设计问题包括算法和数据结构;其构成元素是编程语言原语。执行级:这个级别的设计问题包含存储器的映射、数据格式配置、堆栈和寄存器的分配。13软件各级抽象高级程序设计语言数据结构与算法软件结构研究的开始抽象数据类型程序族软件体系结构汇编语言、宏替换、高级语言编译器、数据类型程序数据结构算法软件划分与构造、方便系统的开发与维护数据类型抽象、封装、信息隐藏、多态性程序族在信息隐藏和软件结构设计上具有相同的模式(设计模

9、式抽象)软件体系结构使系统在体系结构级达到重用141.1定义Dewayne Perry和和A1exander Wo1f 软件体系结构是具有一定形式的结构化元素,即构软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。件的集合,包括处理构件、数据构件和连接构件。 处理构件负责对数据进行加工,数据构件是被加工处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起的信息,连接构件把体系结构的不同部分组合连接起来。来。 这一定义注重区分处理构件、数据构件和连接构件,这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义

10、和方法中基本上得到保持。这一方法在其他的定义和方法中基本上得到保持。 151.1定义Mary Shaw和和David Garlan 软件体系结构是软件设计过程中的一个层次,这一层次超越计软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。算过程中的算法设计和数据结构设计。 体系结构问题包括总体组织和全局控制、通讯协议、同步、数体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。能,在各设计方案间进行选择等。 软件体系

11、结构处理算法与数据结构之上关于整体系统结构设计软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等。设计方案的选择、评估与实现等。16Kruchten 软件体系结构有四个角度,它们从不软件体系结构有四个角度,它们从不同方面对系统进行描述:同方面对系统进行描述:概念概念角度描述角度描述系统的主要构件及它们之间的关系;系统的主要构件及它们之间的

12、关系;模模块块角度包含功能分解与层次结构;角度包含功能分解与层次结构;运行运行角度描述了一个系统的动态结构;角度描述了一个系统的动态结构;代码代码角度描述了各种代码和库函数在开发环角度描述了各种代码和库函数在开发环境中的组织。境中的组织。17Hayes Roth 软件体系结构是一个抽象的软件体系结构是一个抽象的系统规范系统规范,主要包括用其行为来描述的功能构件和主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。构件之间的相互连接、接口和关系。 18David Garlan 和和 Dewne Perry 软件体系结构是一个程序系统各构软件体系结构是一个程序系统各构件的结构、它们之

13、间的相互关系以及进件的结构、它们之间的相互关系以及进行设计的原则和随时间演化的指导方针。行设计的原则和随时间演化的指导方针。19Barry Boehm 软件体系结构包括一个软件和系统构软件体系结构包括一个软件和系统构件,互联及约束的集合;一个系统需求件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这说明的集合;一个基本原理用以说明这一构件,互联和约束能够满足系统需求。一构件,互联和约束能够满足系统需求。20Bass,Ctements 和和 Kazman 软件体系结构包括一个或一组软件构软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相件、软件构件的外部的可见特

14、性及其相互关系。其中,互关系。其中,“软件外部的可见特性软件外部的可见特性”是指软件构件提供的服务、性能、特是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。性、错误处理、共享资源使用等。211.2软件体系结构研究的内容和范畴被解决的:模块接口语言,特定领域的软件体系结构,软件的重用,软件组织结构模式的规范化编纂,体系结构描述语言,体系结构设计形式化的支持和体系机构设计环境。四个研究领域:1.新的体系机构描述语言来解决体系机构描述问题。2.体系结构领域知识的总结性研究。这个领域关心的是工程师通过软件实践总结而来的各种体系机构原则和模式的分类和阐释。3.针对特定的领域的框架的研究。4

15、.软件体系结构形式化支持的研究。221.2软件体系结构研究的内容和范畴风格、设计模式、框架1.体系结构风格(architecture styles)体系结构风格独立于实际问题,强调了软件系统中通用的组织结构。比如管道线,分层系统,客户机服务器等等。231.2软件体系结构研究的内容和范畴风格、设计模式、框架2.设计模式设计模式是软件问题高效和成熟的设计模板,模板包含了固有问题的解决方案。设计模式可以看成规范了的小粒度的结构成分,并且独立于编程语言或编程范例。设计模式的应用对软件系统的基础结构没有什么影响,但可能对子系统的组织结构有较大影响。每个模式处理系统设计或实现一种特殊的重复出现的问题。它为

16、解决抽象部分和实现部分独立变化的问题提供了一种通用结构。因此,设计模式更强调直接复用的程序结构。241.2软件体系结构研究的内容和范畴风格、设计模式、框架3.应用框架(application framework)应用框架是整个或部分系统的可重用设计,表现为一组抽象构件的集合以及构件实例间交互的方法。可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程。251.2软件体系结构研究的内容和范畴体系结构风格、设计模式和应用框架的概念是从不同的目的和出发点讨论软件体系结构,它们之间的概念经常互相借鉴和引用。261.3体系结构设计原则

17、抽象分而治之封装和信息隐藏模块化高内聚和低耦合关注点分离策略和实现的分离接口和实现的分离271.3体系结构设计原则体系结构是指软件系统的基本和主体的形态,也就是软件系统中“最本质”的东西。一个软件系统的体系结构设计得好不好,可以用“合适性、结构稳定性、可扩展性、可复用性”这些特征量来评估。281.3体系结构设计原则合适性:即体系结构是否适合于软件的“功能性需求”和“非功能性需求”。设计师可以充分发挥主观能动性,根据需求的特征,通过推理和归纳的方法设计出合适的体系结构。经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的地方。高水平的设计

18、师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方获取最大的利益,而不是不惜代价设计出最先进的软件。(以设计住宅为例)对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选哪一种?此时商业目标是决策依据,即选择能够为开发方和客户方带来最大利益的那个设计方案。大部分软件开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的,切记切记29结构稳定性当前中国有几句流行的至理名言:“稳定压倒一切”、“发展是硬道理”。发展的前提条件是稳定,社会如此,开发软件产品也是如此。体系结构一旦设计完成,应当在一定的时间内保持稳定不变,只有这样才能使后续工作顺利开展。如果体系结

19、构经常变动,那么建筑在体系结构之上的用户界面、数据库、模块、数据结构等等也跟着经常变动,用“树倒猢狲散”来比喻很恰当,这将导致项目发生混乱。高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性”。30可扩展性是指软件扩展新功能的容易程度。可扩展性越好,表示软件适应“变化”的能力越强。可扩展性越来越重要,这是由现代软件的商业模式决定的:社会的商业越发达,需求变化就越快。现代软件产品通常采用“增量开发模式”,开发商不断地推出软件产品的新版本,从而不断地获取增值利润。稳定性和可扩展性之间

20、存在辨证的关系:如果系统不可扩展的话,那么就没有发展前途,所以不能只关心稳定性而忽视可扩展性;而软件系统“可扩展”的前提条件是“保持结构稳定”,否则软件难以按计划开发出来,稳定性是使系统能够持续发展的基础。所以稳定性和可扩展性都是体系结构设计的要素。如果每次变化都导致体系结构发生大的变动,那简直就是“伤筋动骨”,这样的体系结构无疑是败笔之作。(例如房屋装修)31复用就是指“重复利用已经存在的东西”。被复用的对象可以是有形的物体,也可以是无形的知识财富。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。复用的有利于提高产品的质量、提高生产率

21、和降低成本。由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。32复用的意义很容易理解,人们也乐意复用以前的成果,但是前提条件是该成果具有比较好的可复用性。可复用性是指成果被复用的容易程度。可复用性是设计出来的,而不是偶然碰到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这

22、样的体系结构才可以被复用。33问题回答架构师与设计师企业软件架构作业1:分组 大作业作业2:准备http:/en.wikipedia.org/wiki/Key_Word_in_Context34软件体系结构内容1概述2软件体系结构风格3案例研究4共享信息系统5软件体系结构描述6软件体系结构的分析与评估7特定领域的软件体系结构8流行的软件体系结构352体系结构风格惯用模式我们的目的是展示软件体系结构丰富的选择空间,以及在这个基础上对风格选择的一些权衡。362.1体系结构风格数据流系统 虚拟机批处理序列 解释器管道和过滤器 基于规则系统调用和返回系统 数据中心系统(知识库)主程序和子程序 数据库面

23、向对象系统 超文本系统多级分层 黑板独立构件通讯进程事件系统372.1体系结构风格设计符号集即构件和连接件的类型是什么?被认可的结构模式是什么?根本的计算模型是什么?最基本的特点是什么?使用这种风格的通用例子有哪些?使用这种风格有什么优点和缺点通用的规格说明是什么?382.1体系结构风格7种通用的风格管道和过滤器、对象、隐式调用、层、知识库、解释器和过程调用。392.2管道过滤器(pipes &filters)构件对输入流进行内部转换和增量计算,在输入数据流全部处理之前,输出就已经开始了。重要特点是每个filter必须是一个独立实体。特别是filter之间无需共享状态。402.2管道过滤器(p

24、ipes &filters典型的例子:Unix的shell中编写的程序通过提供的符号表示要连接的构件和提供运行时机制实现管道。传统的编译器 :词法分析、句法分析、词义分析、代码生成阶段信号处理领域并行计算功能编程分布式系统412.2管道过滤器(pipes &filters管道过滤器的优点:设计者可以将整个系统的输入和输出特性理解为各个过滤器功能的简单合成。支持功能模块的重用:只要相互传输的数据格式达成一致,就可以连接在一起。系统容易维护和扩展:新的过滤器可以加进来,旧的可以被替换支持某些特定的分析,如吞吐量和死锁检测具有天然的并发特性,可以独立运行,也可以和其他过滤器并发执行。422.2管道过

25、滤器(pipes &filters管道过滤器模式的缺点:过滤器独立性强,处理过程成批处理,不适合交互性强的应用维持两个相对独立但有不存在某种关系的数据流之间的通讯可能很困难。根据实际应用的要求,设计者也需要在数据传输时被迫使用底层公共命名。增加过滤器本身的复杂性。432.3数据抽象和面向对象组织结构对象通过函数和过程调用来实现交互。这种模式有两个重要的方面:对象维护自身表示的完整性(通常是通过保持其表示上的一些不变式来实现的)这种表示对其他对象是隐藏的。442.3数据抽象和面向对象组织结构面向对象系统有很多众所周知的优点。由于对象的对客户隐藏了实现的细节,所以可以在不影响其客户的情况下改变对象

26、实现。另外,由于把操作的数据和一组存取例程绑定在一起,使得设计者能够把问题分解成交互作用的代理集合。452.3数据抽象和面向对象组织结构最大的缺点:当一个对象和其他对象交互(过程调用),它必须知道其他对象的标识。而在过滤器系统中,过滤器是不需要知道其他过滤器的存在。每当一个对象的标识改变的时候,必须修改那些显式调用它的对象。在模块化语言中,当一个模块改变后需要修改每一个引用了这个模块的“导入”列表。462.4事件驱动,隐式调用隐式调用,响应集成,选择性广播。这种模式起源于基于角色的系统,约束满足性检查,后台程序和包交换网络。思想是,不直接调用一个过程,而是发布或广播一个或多个事件。系统中的其他

27、构件通过注册与一个事件关联起来的过程,来表示对某一个事件感兴趣。当这个事件发生时,系统本身会调用所有注册了这个事件的过程。这样一个事件的激发会导致其他模块中过程的隐式调用。472.4事件驱动,隐式调用QT的的signal与与slotObject1Signal1signal2Object2Slot1slot2Object4Slot1Slot2Slot3Object3Signal1Connect(object1,singal1,object2,slot1)Connect(object1,singal1,object2,slot2)Connect(object1,singal2,object4,sl

28、ot1)Connect(object3,singal1,object4,slot3)482.4事件驱动,隐式调用主要特点:事件发布者不知道哪些构件会受到事件的影响,这样,构件不能对事件的处理顺序,或者事件发生后的处理结果做任何假设。许多隐式调用系统也包含显示调用(正常的过程调用)以此作为构件交互的补充形式。492.4事件驱动,隐式调用例子:编程环境中工具集成数据库管理系统中的一致性约束用户界面中数据表示与管理数据的应用程序的分离语法导向的增量语义检查502.4事件驱动,隐式调用优点:它提供了对重用非常好的支持。通过注册一个系统事件,任何一个构件可以很容易的引入到系统中来。能简化系统的演化。在不

29、改变系统中其他构件接口的情况下,构件可以非常容易的被其他构件取代。512.4事件驱动,隐式调用缺点:构件放弃了自身对系统的计算的控制。当一个构件发布一个事件,它不能保证保证其他构件会对其作出响应。即使它能够肯定该事件会被其他构件响应,它也不能依赖事件被处理的先后顺序。在数据交换方面,有时数据通过事件传递,但在某些情况下,事件系统必须依赖一个共享缓冲区,这样整体的性能和资源的管理可能成为关键性问题。(ip)正确性验证也可能是问题,因为发布事件的过程的具体含义与事件激发的上下文有关。522.5分层系统(LAYERED SYSTEMS)一个分层系统是按照层次结构组织的,每一层向它的上层提供服务,同时

30、它又是下层的客户。在某些分层系统中,内层只对其相邻的层和某些用于输出的函数是可见的,对其他外部的层是隐藏的。在这些系统中,构件在某些层中实现虚拟机。532.5分层系统(LAYERED SYSTEMS)应用系统层用户基本功能层内核层过程调用过程调用542.5分层系统(LAYERED SYSTEMS)例子:最著名的例子是分层通信协议数据库系统操作系统552.5分层系统(LAYERED SYSTEMS)性质特点:它支持逐级抽象的系统设计它支持扩展,每层最多和上下两层交互它支持重用 。这使得定义标准层接口成为可能,在此接口上可建立不同实现。(OSI的ISO模型和X WINDOW SYSTEM)562.

31、5分层系统(LAYERED SYSTEMS)缺点:并不是所有的系统都容易用这种模式来构建。从性能的考虑,也需要将逻辑上高层次的功能与相对低层次的实现结合起来。很难定义一个合适的抽象层次可能会非常困难。572.6知识库(REPOSITORIES)由两种截然不同的功能构件:一个是中央数据结构构件,代表系统当前状态,另一个是一些相对独立的构件的集合,这些构件对中央数据存储进行操作。控制方式的选择将知识库分成了两种主要的子类。输入流中事务触发系统相应的进程执行,是传统的数据库型知识库。由中心数据结构的当前状态触发系统相应的进程执行,这种称为黑板知识库582.6知识库(REPOSITORIES)黑板体系

32、结构黑板(共享数据)KS1KS8KS7KS6KS5KS4KS3KS2Knowledge source直接存取计算592.6知识库(REPOSITORIES)黑板体系结构黑板系统传统上应用在复杂信号处理解释上,比如语音和模式识别。通过松散连接代理共享数据集成编程环境编译器(以共享信息为基础)602.7解释器(INTERPRETERS)通常有一个虚拟机。一个解释器包括正在被解释执行的伪码和解释引擎本身。包含四个部分:完成解释工作的解释引擎,一个包含将被解释的伪码的存储区,一个纪录解释引擎当前工作状态的数据结构,以及一个纪录源代码被解释执行的进度的数据结构。612.7解释器(INTERPRETERS

33、)被解释的程序(伪码)数据(程序状态)解释引擎内部解释器状态选择的指令和数据输入输出622.8过程控制过程控制环路。这种模式在软件开发团队中并没有受到广泛的认可,不象面向对象或功能设计那样以出现的某类构件为特征,控制环路设计的特点是不仅具有某类构件,还具有在构件间必须保持的特殊关系。632.9异构体系结构大多数系统都是由很多风格组合而成的一种是使用层次结构一种是允许单一的构件使用复合的连接件。第三种组合方法是,用完全不同的体系结构风格来阐述体系结构的一个角度。642.10其他常见的体系结构分布式处理(比如心跳算法)主程序/子程序组织结构特定领域的软件体系结构(参考模型)状态转换系统(State

34、 Transition System)65软件体系结构内容1概述2软件体系结构风格3案例研究4共享信息系统5软件体系结构描述6软件体系结构的分析与评估7特定领域的软件体系结构8流行的软件体系结构663.0案例分析上下文关键字Key Word in ContextFrom Wikipedia, the free encyclopediaJump to: navigation, searchKWIC is an acronym for Key Word In Context, the most common format for concordance lines. The term KWIC w

35、as first coined by Hans Peter Luhn. 1A KWIC index is formed by sorting and aligning the words within an article title to allow each word (except the stop words) in titles to be searchable alphabetically in the index. It was a useful indexing method for technical manuals before computerized full text

36、 search became common.For example, the title statement of this article and the Wikipedia slogan would appear as follows in a KWIC index. A KWIC index usually uses a wide layout to allow the display of maximum in context information (not shown in the following example).http:/en.wikipedia.org/wiki/Key

37、_Word_in_Contexthttp:/www.cs.cmu.edu/ModProb/KWIC.html673.0案例分析上下文关键字683.0案例分析上下文关键字 需求分析处理算法的变更 比如输入设备可以每读入一行就执行一次移动,也可以读完所有行再执行行移动,或者在需要以字母表的顺序排列行集合时才执行行移动。数据表示的变更 比如,行,单词和字母可以用各种各样的方式存储。类似的,循环移动情况也可以被显示的或者隐式存储(使用索引和偏移量)693.0案例分析上下文关键字 需求分析系统功能的扩充 比如,修改系统使其能够排除以某些干扰单词(a,an)开头的循环移动。把系统变成交互式的,允许用户从初

38、始列表中(或者从循环移动的列表中)删除某些行。性能:空间和时间。重用:作为可重用的实体,构件重用的程度。703.0案例分析上下文关键字 解决方案1使用共享数据的主程序/子程序根据四个基本功能将问题分解为:输入、移动、按字母表排序、输出。所有计算构件作为子程序协同工作,并且由一个主程序顺序地调用这些子程序。构件通过共享存储区(核心存储区)交换数据。因为是顺序访问,使得计算构件和共享数据之间基于一个不受约束的读写协议的通信成为可能。713.0案例分析上下文关键字 解决方案1输入输入循环移动循环移动按字母表排序按字母表排序输出输出字符字符索引索引按字母表索引按字母表索引输入媒介输入媒介输出媒介输出媒

39、介主控制主控制使用共享数据的主程序/子程序723.0案例分析上下文关键字 解决方案1优点:不同的计算功能被划分到不同的模块中缺点:数据存储格式的变化会影响到所有模块。整体处理算法的变更和系统功能扩充的问题也很难调和。不支持重用。733.0案例分析上下文关键字 解决方案2抽象数据类型数据不在共享,每个模块提供一个接口,该接口允许其他构件通过调用接口中的过程来访问数据。743.0案例分析上下文关键字 解决方案2主控制主控制输入输入输出输出输入媒介输入媒介输出媒介输出媒介字符字符设设置置字字符符 字字符符 单单词词循环移动循环移动设设置置字字符符 字字符符 单单词词设设置置按字母次序移动按字母次序移

40、动 字字母母第第I个个 抽象数据类型753.0案例分析上下文关键字 解决方案2优点:将系统逻辑上分成了几个处理模块。然而,当设计变更时,这种方案比第一种具有一定优势。特别是,在一个独立的模块中算法和数据表示的改变不会影响其他模块。另外,为重用提供了更好的支持。缺点:并不能很好地适合于功能扩展的情况。主要问题是,向系统中加入一个新的功能时,实现者要么平衡其简介性和完整性而修改现存模块,要么添加新的模块而导致性能下降。763.0案例分析上下文关键字 解决方案3输入输入循环移动循环移动按字母表排序按字母表排序输出输出输入媒介输入媒介输出媒介输出媒介主控制主控制使用共享数据隐式调用行行插插入入 删删除

41、除 第第一一个个行行删删除除 第第一一个个插插入入773.0案例分析上下文关键字 解决方案3采用共享数据的构件集成方式。两个主要不同。数据访问接口更加抽象数据被修改时,计算被隐式地调用。783.0案例分析上下文关键字 解决方案3优点:容易支持系统功能扩展,通过注册,添加的模块很容易和系统整合,当发生数据交换事件时,这些添加的模块就会被调用。因为数据被抽象访问,所以这种解决方案也将计算和数据表示分开。也支持重用。难以控制隐式调用模块的处理顺序。数据驱动,会占用更大的空间。793.0案例分析上下文关键字 解决方案管道过滤器输入媒介输入媒介输入输入循环移动循环移动按字母表按字母表顺序排序顺序排序输出

42、输出输出媒介输出媒介803.0案例分析上下文关键字 解决方案特性:首先,它能够维持处理的自然流动。第二,它支持重用,因为每个过滤器可以独立处理。通过在处理序列中的合适位置插入过滤器,新的功能很容易加入系统中。第三,既然每个过滤器和其他过滤器在逻辑上是独立的,那么每个过滤器也很容易替换或修改。813.0案例分析上下文关键字 解决方案缺点:首先,不可能通过修改使其支持交互。比如,删除一行可能需要一些持久性共享存储区,但是这样就违反了这种方案的基本原则。第二,这种方案空间使用的效率非常低。因为每个过滤器必须复制所有的数据到它的输出端口。823.0案例分析上下文关键字 方案比较共享数据方案对整体处理算

43、法、数据表示的变更以及重用的支持比较弱。另一方面,由于对数据的直接共享,获得了相对好的性能。另外,相对比较容易加入新的处理构件。抽象数据类型方案在保证性能的情况下,允许数据表示变更并且支持重用。但是由于构件的交互依赖于模块本身,所以改变整体处理算法或者加入新的功能可能要对现有的系统作很大的修改。隐式调用方案对于添加新的功能的支持非常好。然而,由于共享数据自身的一些问题,该方案对于数据表示和重用的支持非常弱。它可能引起额外的执行开销。管道过滤器方案允许在文本处理流中放置新的过滤器。因此它支持处理算法的改变、功能的变化和重用。管道过滤器允许在文本处理流中放置新的过滤器,因此它支持处理算法的改变,功

44、能的变化和重用。数据表示的选择过分依赖于管道中传输的数据类型的假定。而且对管道中的数据进行编码和解码需要额外的开销。833.0案例分析上下文关键字 方案比较共享数据共享数据抽象数据类型抽象数据类型隐式调用隐式调用管道过滤器管道过滤器算法变更算法变更数据表示变更数据表示变更功能变更功能变更性能性能重用重用843.案例分析仪器仪表为Tektronix公司开发一种可重用的体系结构需求:对电信号进行取样,并且在屏幕上显示电信号的图像,完成大量的测量,提供兆字节的内存,支持工作站和其他仪器的接口,完善的界面,菜单和触摸屏、内置的HELP853.案例分析仪器仪表需求:几乎没有在不同的示波器上可重用的软件组

45、织结构。性能问题越来越严重。不能被快速配置。 (也碰到过:网络测试仪表、两个不同的平台)863.案例分析仪器仪表面向对象模型(参考文档)示波器对象示波器对象波形波形最大最小波形最大最小波形X-Y波形波形叠加波形叠加波形873.案例分析仪器仪表但是没有一个整体模型解释怎么结合这些对象类型。这会导致功能划分的混乱。比如量度是否应该与被测量的或者被外部表示的数据类型相关联?用户界面应该和哪些对象交互?883.案例分析仪器仪表分层模型第二阶段尝试了解决这些问题。硬件硬件数字化数字化可视化可视化用户接口用户接口 操作操作893.案例分析仪器仪表在应用领域是错误的。主要问题是层次间强加的抽象边界和各种功能

46、交互的需要是相互冲突的。用户需要跟各层打交道,比如在信号处理层中设置衰减,在采集层中选择采集模式和参数,或者在波形处理层中制作导出波形。903.案例分析仪器仪表管道过滤器模型耦合耦合采集采集To-xy裁减裁减信号信号触发子系统触发子系统测量测量测量值测量值913.案例分析仪器仪表没有在功能划分中将各个功能孤立起来,模型允许各个构件灵活混合和替换。问题:没有清晰说明用户怎么与其交互。如果用户仅仅是等待结果,那么比分层还要糟糕。改进。?923.案例分析仪器仪表改进后的FILTER耦合耦合采集采集To-xy裁减裁减信号信号触发子系统触发子系统测量测量测量值测量值耦合度耦合度种类速率种类速率转换转换大

47、小大小933.案例分析仪器仪表专用化模型显著问题:计算模型的性能非常差。特别是波形数据占用了很大的内存容量。每个过滤器的处理速率是不同的。解决方法:一些FILTER不用复制数据,一些允许慢速过滤器在数据还没有处理完时忽略新来的数据。943.案例分析仪器仪表小结:在工业设计体系结构中,必须将“纯”的体系结构风格改造成专用的风格来满足特定领域的需要。953.2案例分析移动机器人简介:移动机器人用来操纵有人驾驶或部分地有人驾驶的交通工具。这类系统在诸如空间探索、有害垃圾处理、深水探索等领域得到了新的应用。963.2案例分析移动机器人软件功能:采集从传感器发送来的输入信号,操纵车轮和其他可移动零件的运

48、动,规划未来的移动路线。使任务变复杂:障碍物可能会阻挡机器人的移动路线;传感器的输入信号可能非常弱;机器人的电力使用完;机器的局限性会限制移动的精确性;机器人可能会处理有毒的材料;不可预知的事件要求它具有快速响应。973.2案例分析移动机器人设计考虑因素:对体系结构的几个基本需求需求:必须能够协调有准备的行为和反应行为。(完成规定动作)需求:必须能够处理不确定性。机器人能够应对不完整的或不可靠的信息。需求:能应对固有的危险。考虑容错度、安全性和性能,这个体系结构必须能够保持完整性。(电力下降、有毒气体)需求:设计者灵活性。需要经常实验和重新配置。任务的改变要定期的修改。当然有环境问题。不同的使

49、用环境是不同的要求。983.2案例分析移动机器人考察四种设计:Lozano的控制环路Elfes的分层组织结构Simmons的任务控制体系结构Shafer的黑板组织结构应用993.2案例分析移动机器人方案控制环路开始是开环的。(不需要检查结果)因此需要改进成闭环的。机器人的活动组件机器人的活动组件传动装置传动装置传感器传感器控制器控制器外界环境外界环境动作动作反馈反馈1003.2案例分析移动机器人控制环路对需求的满足:需求:结构简单,机器人与外界的交互非常清晰。然而在不可预知的环境中这种简单性也是它的缺陷。对于复杂的任务,控制环路并没有给出将软件分解成几个协作构件的方法。1013.2案例分析移动

50、机器人需求:对于不确定性,控制环路偏爱使用下述方法来解决。通过迭代来降低未知性。试探和错误处理程序通过动作和响应来消除每次循环中的可能性。(没有使用基本循环集成这些操作的框架,也没有提供委托独立实体进行操作的框架)1023.2案例分析移动机器人需求:这种闭环范例提供对容错度和安全性的支持。因为它的结构简单,使得复制操作更加容易,并能减少系统中错误发生的几率。1033.2案例分析移动机器人需求:主要构件(监视器、传感器、发动机)是彼此分开的,并能够被独立地替换。微小的修改必须在模块中进行。1043.2案例分析移动机器人方案分层体系结构监督监督全局技术全局技术控制控制导航导航现实世界建模现实世界建

51、模传感器集成分析传感器集成分析传感器解释分析传感器解释分析机器人控制机器人控制外界环境外界环境这种定义也影响了这种定义也影响了Dolphin声纳和导航系统的设计,并声纳和导航系统的设计,并在在Terregator Neptune移移动机器人上动机器人上驻留机器人控制程序(发动机,关节等)驻留机器人控制程序(发动机,关节等)处理外界的输入(分析单个,集成分析)处理外界的输入(分析单个,集成分析)维持机器人的外界模型维持机器人的外界模型负责调度和安排机器人行负责调度和安排机器人行动。处理问题和重新安排动。处理问题和重新安排用户界面和全局监控用户界面和全局监控1053.2案例分析移动机器人分层需求:

52、通过定义更多的执行委托任务的构件,Elfes的模型避开了一些控制环路方案面临的问题。因为这个模型专用于自动控制的机器人,所以它揭示了针对这种机器人所必须解决的问题。(如传感器集成)另外它定义了抽象层来指导设计。1063.2案例分析移动机器人需求:虽然这种模型很好的组织了用来协调机器人操作的构件,但是这种分层体系结构并不适合现行的数据和控制流模式。因为,分层模型要求请求和服务必须在相邻的两层进行。现实中,比如需要快速响应的数据应该直接从传感器送到位于7层的问题处理代理那里。并且相应的命令也应该跳过好几层及时到达发动机。1073.2案例分析移动机器人另一问题:不能区分实际存在两个抽象层次。数据层:

53、 原始的传感器输入(第1层) 解释后和集成后的结果(第2层和第3 层)、最终的外界模型(第4层)控制层: 包括发动机控制(第1层)、导航(第5层)、调度(第6层)、安排(第7层)、用户层控制(第8层)。1083.2案例分析移动机器人需求:抽象层的存在满足了处理不确定性的需要:通过在较高层加入可以用到的知识,使得在最低层中的不确定的事物在较高层中会变得确定。比如外界模型中的上下文能够提供某些线索来消除相对矛盾的传感器数据中的歧义。1093.2案例分析移动机器人需求3:抽象机制满足了容错度和被动的安全性(你什么也不做)的要求。可以从不同角度分析数据和命令。将多个检查和平衡操作合并到系统中是可能的。

54、就象已经提到的,性能和主动安全性需要缩短通讯路径。1103.2案例分析移动机器人需求4:层次间的依赖性使得构件的替换和添加更加困难。另外,层次间复杂的关系使得解读每一次变化都会令人头疼。1113.2案例分析移动机器人方案:隐式调用 内嵌于任务控制体系结构(Task-Control Architecture)tasktasktasktasktask异常异常消息消息分支的消息分支的消息窃听窃听1123.2案例分析移动机器人方案:隐式调用 内嵌于任务控制体系结构(Task-Control Architecture)任务树采集岩石采集岩石到位置到位置取石子取石子举起岩石举起岩石左移左移前移前移1133

55、.2案例分析移动机器人TCA的三种功能:异常(exception)窃听(wiretapping)例如一个安全性检查的构件能够根据这种特点验证输出的移动命令。监控器(Monitor)如果数据满足某一标准,监控器就可以读取信息,然后去执行某些操作。比如监控器检测到电量低于一个给定值,就会调用负责充电的动作。这个特点提供了一个处理容错度问题的简便方法。放置一个代理来监控系统。1143.2案例分析移动机器人隐式调用需求:一方面是任务树,另一方是异常、窃听、监控器,这些为动作和响应提供了清晰的划分。可以进行并发处理。多个任务是相互独立的。1153.2案例分析移动机器人隐式调用需求2:TCA解决不确定性是

56、不够清晰的。如果存在不可估计的情况,会创建一个试验性的任务树,如果任务树中基本假设被证明是错误的,那么异常处理程序会不断的修改它直到正确为止。1163.2案例分析移动机器人隐式调用需求3TCA异常、窃听、监控器特点使其考虑了性能、安全性、容错度这些问题。当为同一个信号注册多个处理者时,通过冗余来实现容错。1173.2案例分析移动机器人隐式调用需求4使用隐式调用使得增量开发和构件的替换更为直接。在不影响现有构件的情况下,很容易在中心服务器注册新的处理者、异常、窃听器或监控器。1183.2案例分析移动机器人方案:黑板体系结构lookoutcaptionMap navigatorpilot黑板黑板感

57、知子系统感知子系统Caption:总监视器:总监视器MN:高层路线规划程序:高层路线规划程序Lookout:为获取路标而监:为获取路标而监控环境的模块控环境的模块Pilot:底层的路线规划程序:底层的路线规划程序和发动机控制器和发动机控制器感知子系统:这个模块接收来感知子系统:这个模块接收来自多个传感器的原始输入并将自多个传感器的原始输入并将它们整合成一致的解释它们整合成一致的解释1193.2案例分析移动机器人黑板体系结构需求:构件(感知子系统中的模块)通过黑板系统的共享知识库来进行通信。每个模块只对某种信息感兴趣。数据库可以立刻向这些模块发送它们需要的信息,或者在这些模块向数据库插入这些信息

58、后,再向这些模块发送它们需要的信息。1203.2案例分析移动机器人黑板需求2:黑板也是一种解决矛盾和不确定性情况的方式。1213.2案例分析移动机器人黑板需求3:通过数据库进行通信和通过TCA中心消息服务器进行通信的方式非常相似。1223.2案例分析移动机器人黑板:需求4和TCA一样,黑板体系结构风格支持并发以及发送者和接受者分离,这样有利于维护。总之,基于数据库内容的隐式调用机制、黑板体系结构具有模拟任务协作的能力,满足了以灵活的方式处理协调和解决不确定性的需求。1233.2案例分析移动机器人循环控制循环控制分层分层隐式调用隐式调用黑板黑板任务协调任务协调处理不确定性处理不确定性故障容忍故障

59、容忍安全安全性能性能适应性适应性+1243.3定速巡航控制目的:怎么将控制环路范例应用到一个简单的问题中,这个问题传统上使用面向对象的方法进行处理。控制环路体系结构的使用,有利于阐明体系结构对于问题解决所起的重要作用。1253.3定速巡航控制巡航控制系统巡航控制系统系统开关系统开关引擎开关引擎开关车轮脉冲车轮脉冲加速度加速度刹车刹车增减速增减速恢复速度恢复速度时钟时钟油门油门1263.3定速巡航控制车轮车轮当前车速当前车速时钟时钟期望速度期望速度油门油门司机司机刹车刹车发动机发动机加速器加速器面向对象的方法面向对象的方法1273.3定速巡航控制控制环路方法引擎引擎油门设定油门设定期望速度期望速

60、度活跃闲置肘活跃闲置肘车轮转动车轮转动控制器控制器1283.3定速巡航控制激活状态机非活动加速非活动加速活动活动非活动减速非活动减速非活动零非活动零关闭关闭加速度设加速度设定点定点加速度加速度设定点设定点恢复恢复刹车刹车系统开系统开引擎开引擎开所有状态所有状态除关闭外的除关闭外的所有状态所有状态系统关闭系统关闭引擎关引擎关1294软件架构的评估1305流行的软件体系结构需求:提供一种手段,使应用软件可以预先编好的,功能明确的产品部件定制而成,并可用不同版本的部件实现应用的扩展和更新。利用模块化的方法,将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可反复重用。突破时间、空

61、间及不同硬件设备的限制,利用客户和软件之间统一的接口实现跨平台的互操作。1315流行的软件体系结构CORBA 规范Sun的java平台Microsoft的.NET平台1325流行的软件体系结构这两种体系结构提供的技术服务,例如:事务的完整性、消息传递和目录服务、安全、异常处理、远程访问,以及许多其他服务,它们使开发人员能够将注意力集中在构件的功能上,而无需关注工作需要的所有底层技术基础。1335.1基于CORBA的分布式构件技术OMGOMA :三种对象 CORBA服务 CORBA设备 应用对象1345.1基于CORBA的分布式构件技术对象请求代理(对象请求代理(Object Request B

62、roker)CORBA 服务服务应用对象应用对象CORBA 服务服务CORBA 服务服务垂直垂直CORBA设备设备facility水平水平CORBA设备设备OMA对象管理对象管理体系结构体系结构1355.1基于CORBA的分布式构件技术Corba规范包括:ORB,IDL(接口定义语言),存根(STUB)和框架(SKELETON)、对象适配器、动态调用接口。1365.1基于CORBA的分布式构件技术CORBA 体系结构接口库接口库客户端程序客户端程序对象请求中间件核心(对象请求中间件核心(ORB CORE)实现库实现库对象适配器对象适配器客户客户stub动态调动态调用用ORB接口接口对象实现(对

63、象实现(server)动态动态服务服务静态静态服务服务1375.1基于CORBA的分布式构件技术一个从客户程序发送到对象实现的请求客户端程序客户端程序请求请求Object Request BrokerIDL STUBIDL STUB对象实现对象实现1385.2基于JAVA的分布式构件技术客户端应用程序客户端应用程序动态动态HTML页面页面动态动态HTML页面页面客户层客户层JSP页面页面EJBJSP页面页面EJBWEB层层业务层业务层EIS层层数据库数据库数据库数据库数据库数据库1395.3基于.NET平台的分布式构件技术VB C+ C# PERL WEB 服务服务 用户界面用户界面 数据和数据和XML(ADO.NET) 类库(类库(CLASS LIBRARY) 通用语言运行时(通用语言运行时(Common Language Runtime) Visual studio .net 1405.4面向服务的体系结构服务注册服务注册服务消费者服务消费者服务提供者服务提供者服务注册服务注册服务服务服务描述服务描述绑定与调用绑定与调用发布发布发现发现1415.4面向服务的体系结构实现的核心技术 1)XML 2)SOAP 3)WSDL 4)UDDI(Universal Description Discovery and Integration)142

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号