




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件构架风格在技术设计中的应用ISAS项目文档软件构架风格在技术设计中的应用目录软件构架风格在技术设计中的应用3摘要:3关键词:31.数据流风格31.1 管道和过滤器41.2 统一管道和过滤器51.3应用72调用返回风格82.1什么是调用返回风格82.2数据抽象和面向对象的风格特点92.2.1数据抽象和面向对象的风格的优点92.2.2数据抽象和面向对象的风格的不足102.3分层式结构风格102.3.1分层式结构风格优点112.3.2分层式结构风格的不足112.4应用123独立组件风格123.1独立组件风格的优点133.2独立组件风格的不足143.3 独立组件风格的应用C/S架构144.虚拟机风格154.1虚拟机是什么164.2虚拟机的应用174.3虚拟机的特征184.4虚拟机的优点204.5虚拟机的缺点205仓库风格和黑板风格205.1仓库风格和黑板风格的概述205.1.1仓库风格和黑板风格的例子205.2黑板体系结构模型的构成215.2.1知识源215.2.2黑板数据结构225.2.3控制器225.3黑板风格体系结构的特点225.3.1板风格体系结构的优点225.3.2黑板风格的体系结构缺点235.4仓库风格和黑板风格示例和应用235.4.1数据库系统235.4.2黑板风格应用24总结24参考文献:25软件构架风格在技术设计中的应用摘要:最初的软件体系结构是Mainframe结构客户、数据和程序都被集中在主机上,通常只有少量的GUI界面,对远程数据库的访问比较困难。随着PC的广泛应用,该结构逐渐被淘汰。在20世纪80年代中期出现了Client/Server分布式计算结构,应用程序的处理在客户机和服务器之间分担。随着大型软件系统的开发,这种结构在系统的部署和扩展性方面暴漏出不足。随着Internet的发展,一个更灵活的体系结构“三层/多层计算”体系结构应运而生。软件体系结构能够帮助人们开发出更优秀的软件。通过总结不同软件体系结构的风格。我们能够更好地认识并使用软件体系结构。有利于提高软件工程活动的质量与效率。关键词:软件构架 数据流 批处理序列 调用返回 独立构件 解释器 黑板系统1.数据流风格1.1 管道和过滤器在管道/过滤器风格的软件体系结构中,每个组件都有一组输入和输出,组件读取输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的组件被称为过滤器,这种风格的连接器就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。此风格特别重要的过滤器必须是独立的实体,它不能与其它的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。编译器系统就具备典型的管道系统风格的体系结构。在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。管道/过滤器风格的软件体系结构具有许多很好的特点:使得软组件具有良好的隐蔽性和高内聚、低耦合的特点。允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成。支持软件复用。系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来。旧的可以被改进的过滤器替换掉。允许对一些如吞吐量、死锁等属性的分析。支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。这比下面将要阐述的一种“主-子程序风格”的单线程操作要灵活得多。管道/过滤器风格的软件体系结构的弱点是:通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重。因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。1.2 统一管道和过滤器在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件被称为过滤器,这种风格的连接件就象是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。此风格特别重要的过滤器必须是独立的实体,它不能与其它的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。图1是管道/过滤器风格的示意图。一个典型的管道/过滤器体系结构的例子是以Unixshell编写的程序。Unix既提供一种符号,以连接各组成部分(Unix的进程),又提供某种进程运行时机制以实现管道。另一个著名的例子是传统的编译器。传统的编译器一直被认为是一种管道系统,在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的。图1管道/过滤器风格的体系结构管道/过滤器风格的软件体系结构具有许多很好的特点:使得软构件具有良好的隐蔽性和高内聚、低耦合的特点。允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成。支持软件重用。重要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来。系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来。旧的可以被改进的过滤器替换掉。允许对一些如吞吐量、死锁等属性的分析。支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。但是,这样的系统也存在着若干不利因素。通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重。因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。1.3应用复用是解决“软件危机”的重要手段之一,也是软件技术发展的目的之一。随着软件系统规模和复杂度的日益升级,人们逐渐意识到,系统总体结构的设计和规范说明比算法和数据结构重要的多,并认为软件构架复用的研究会成为提高软件复用度的最有希望的途径。在分析了软件构架复用的国内外形势,结合我国的软件复用特别是构架复用的现状,提出了一个可复用的软件构架。 使用现在JAVA中经典的MVC设计模式或MVC构架,把业务层代码和HTML代码彻底分开,通过把代码完全分成模型、视图和控制器三层来简化用户界面的开发进程,多个视图能共享一个模型,控制器提高了应用程序的灵活性和可配置性。 为达到表现层进一步的复用和减少多余代码的目标,选取了装饰器设计模式、组合设计模式、结合设计模式和SiteMesh相互组合的方式,让表现层中的HTML和JAVA代码尽可能的分离。在客户端的验证方面,彻底的抛弃脚本语言,使用过滤器模式,利用Validator进行验证,一方面减少了脚本语言的重复,另一方面增加了系统的安全性。 在Web构架的选取过程中,放弃了比较成熟的Struts,选取了最新推出的Webwork,Webwork的主要优点比Struts技术灵活、容易延伸,从Web层中解耦,很容易被复用。 在业务层中使用Hibernate和Spring结合的方式。Hibernate和Spring分离了数据接口对象通常的事务管理数据访问和事务处理,使事务性业务对象不与任何特殊的数据访问或者事务策略绑在一起,从而不影响业务对象的可复用性,用Spring使Hibernate更容易使用并提供声明性事务支持。 由此产生的系统架构分层清晰、耦合低、复用率高,不仅满足一般的代码复用,而且更重要的是能够满足系统的架构复用。 2调用返回风格2.1什么是调用返回风格这是一种相对更为常用的风格,在这种风格之中,程序之间不再像“过滤器”那样“必须是独立的实体”而是有了更为丰富的相互联系,此种情况分很多种具体实际应用中的类型,比如子程序调用,面向对象结构化设计,以及分层式系统结构等。这些风格有一个共同的特点,也就是存在着一个类似与软件体系结构之对于软件开发的关系的一种迭代关系,也即是说,我理解的这种风格,实际上是一种在软件体系结构中套用软件体系结构的结构的过程。比如我们对于主/子程序调用,在环境中,子程序是一段段独立存在的,负责承担相应功能模块功能的个体,而事实上,主程序并不能(指广泛意义上讲)实现其所需要的功能,或者需要重复冗余代码来实现,在此时,采用子程序的调用会给这种情况带来比较好的解决方法,对于一个程序来说,特别是当该程序是由相对独立的功能模块组成的时候,更特别是在这种功能模块的调用成为了一种长期的,多次的情况的时候,采用将模块设计成子程序由主程序视情况而进行调用,是一种很好的解决办法。在面向对象的设计中更是如此,最明显的例子就是抽象数据类型的提出,对于抽象数据类型(A.D.T.)这种描述方式来说,更可以将此种方式作为一种对于软件体系结构的深层套用。而分层系统中,按照功能模块所处的功能层次,进行分解,并由高级调用低级,最终形成金字塔形的整体结构,这样的环境其实在现实的程序环境中是很常见的。对比与我们现存的语言环境的分层结构,也即是说,高级语言对低级语言的透明调用,也即是这种情况的广义示例,只不过在现实的应用中,我们更多的是在统计的语言环境中,对于所需开发的软件进行功能应用上的分层,而不再注重语言环境上的层次关系。2.2数据抽象和面向对象的风格特点抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,“数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中”。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。2.2.1数据抽象和面向对象的风格的优点其可以改变一个对象的表示,而不影响其它的对象,因为对象对其它对象隐藏其表示,这可以使对象更独立,对象的更新更安全。设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合,而不必一切都堆放在一起,提高了进程效率。2.2.2数据抽象和面向对象的风格的不足为了使一个对象和另一个对象通过过程调用等进行交互,必须知道对象的标识。只要一个对象的标识改变了,就必须修改所有其他明确调用它的对象,造成了在结构修改上的复杂度。“必须修改所有显式调用它的其它对象,并消除由此带来的一些副作用”也就是说,同时调用一个对象的两者,并不能保证他们对这个对象的操作会不会带来同步上的问题以及相互的影响。2.3分层式结构风格层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层可见。这样的系统中构件在一些层实现了“虚拟机”(在另一些层次系统中层是部分不透明的,这将在下面进行讨论)。连接件通过决定层间如何交互的“协议”来定义,“拓扑约束包括对相邻层间交互的约束,这种风格支持基于可增加抽象层的设计”。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,同样为软件重用提供了强大的支持。层次系统最广泛的应用是分层通信协议。在这一应用领域中,“每一层提供一个抽象的功能,作为上层通信的基础”,这其实也是上述数据抽象和面向对象的风格的一种体现。较低的层次定义低层的交互,最低层通常只定义硬件物理连接。2.3.1分层式结构风格优点支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解,而不必自行承担。支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层,这样事实上是双向的影响,既减少了支持的考虑因素,稳定了支持的联系,同时也使得相互之间的联系更加局限,也即是严格带来的自由度的降低。更好的支持重用。“只要提供的服务接口定义不变,同一层的不同实现可以交换使用。”这样,就可以定义一组标准的接口,而允许各种不同的实现方法。2.3.2分层式结构风格的不足这样的系统结构并不是通用的,也不是在任何时候都值得使用的,有的时候很难找到一个系统的分层抽象方法,而对于有些结构简单,平台较少的系统,采用这样的分层机制又是不必要的,并不是每个系统都可以很容易地划分为分层的模式,“甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来”。此时我考虑了如何对于这样的情况找出一个对于层次结构更适用的数学关系,也即是说,对于“分层投入”,“层次数目”,“层次广泛程度”等条件进行建模而得出的一种量化的关系,但是没有结果,我现在只能推想出一种结构,即是当分层投入不是很大的情况下,层次数目越多,层次广泛程度越小的系统结构,便更适合于采用分层结构,而当层次数目在三个或者三个以内的情况下,分层的优势则不能体现,甚至会成为冗余的累赘,这种情况下,采用数据抽象和面向对象的风格或者主/子调用来处理(特别是当层次广泛程度很大的情况下)会有更好的效果。2.4应用在用数挖车床加工编程中,采用子程序编程可以减少零件轮廓坐标计算的工作量。对企业生产来说,加工通用零件时,可以充分利用系统中已储存的子程序,只需对其进行相应坐标值的修改,这样就可大大减少编程时间。提高生产效率。在具体的加工应用中。只有灵活应用子程序。才能使其更有实用价值。子程序编制时,相关尺寸计算与编程技巧。数控程序编制时,合理、恰当的运用各指令,能够简化程序,大大提高生产效率。数车主要加工同转体零件,对于一些复杂工件,程序编制时较多的运用一些固定循环指令和复合循环指令以简化程序,如G71、G72等。特别是G71的熟练使用,但G71指令受工件形状的影响,它只能加丁尺寸是单纯增大或减小的工件,对于尺寸无规律变化,需重复加工几何形状完全相同或相似的加工轨迹,应采用子程序编程。3独立组件风格独立组件的风格也很常用常见,有些时候我们常见的在互联网上广为流传的集群计算,就是这样的风格,但是不管什么样的表现形式,都有着统一的特点,也就是组件的独立性和独立组件间的协同性,在这种风格中,最简单常见,却容易被人忽视的就是基于事件的隐式调用,下面主要谈谈这种类型。“基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。”系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。从体系结构上说,这种风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。“过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。”基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件交互的补充形式。支持基于事件的隐式调用的应用系统很多。“例如,在编程环境中用于集成各种工具,在数据库管理系统中确保数据的一致性约束,在用户界面系统中管理数据,以及在编辑器中支持语法检查。”3.1独立组件风格的优点为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中。为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其它构件的接口。3.2独立组件风格的不足构件放弃了对系统计算的控制。一个构件触发一个事件时,不能确定其它构件是否会响应它。而且即使它知道事件注册了哪些构件的构成,它也不能保证这些过程被调用的顺序。数据交换的问题。有时数据可被一个事件传递,但另一些情况下,基于事件的系统必须依靠一个共享的仓库进行交互。在这些情况下,全局性能和资源管理便成了问题。既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。3.3 独立组件风格的应用C/S架构客户机/服务器(C/S)网络的信息服务系统通常由计算机平台、网络平台和数据库平台组成。这里的C/S信息系统,在硬件条件不变的情况下,根据其作用可划分为三个部分。第一部分为前端,即客户机。前端是一个运行在客户机上并向服务器发送信息,并接收服务器信息的小型应用程序,因此,前端实际就是服务器上应用程序的一个接口。第二部分为后端,即服务器。后端计算机上应当 运行基于C/S模式的后台程序,如SQL Server。服务器程序可以应用于各类计算机平台上,从微机、小型机直到大型计算机。随着计算机网络规模的发展,网络中可能需要不只一个服务器来分别处理各种客户机的请求。为此,可以在同一台服务器上安装多种应用服务软件。当网络上客户机对电子邮件的服务请求不多时,还可以安排它兼做其他客户机或者服务器使用。第三部分为连接件,即起连接作用的软件和硬件。其中软件连接主要包括网络协议,网络应用接口和数据库的连接接口等,而硬件连接主要有网卡和通信介质等简言之,前端程序是负责与网络客户的交流,并向服务器提出要求的一方。后端程序则是处理相关的交互请求,为前端提供服务的一方。而连接件则是服务器与客户机的连接和支撑平台。网游基本都采用这种网络模型。C/S是在专用服务器网络结构的基础上发展起来的。在这种结构的网络中,可以将多种需要处理的工作分别分配给相应的客户机和服务器来完成。因此,网络可客户机和服务器并没有一定的界限,必要时两者可以互换。在这种网络中,到底谁为客户机、谁为服务器完全按照其当时所扮演的角色来确定。一般定义是:提出服务请求的一方称为“客户机”,而提供服务的一方则称为“服务器”。4.虚拟机风格虚拟机是一层软件,其它软件可以在它之上运行,看起来就象在另一台机器上运行一样。虚拟机的构件包括:用于保存输入数据的部件。虚拟机执行引擎。用于保存当前虚拟机状态的部件:用于保存当前虚拟机执行状态的部件。虚拟机的连接件包括过程调用和直接存储访阔。4.1虚拟机是什么虚拟机指的是在自己当前使用的操作系统基础上安装并利用专门的虚拟机软件(如VMWARE和java虚拟机)虚拟出若干台计算机,这些虚拟的多台计算机每台有各自的CPU、内存、硬盘、光驱、软驱、网卡、声卡、键盘、鼠标、串口、并口、USB口等“硬件”设备,当然这些硬件都是虚拟的,实质上它们还是用你计算机中相应的硬件。这些虚拟的计算机可以独立运行,安装各自的操作系统,应用软件、杀毒软件等等,就好像平时用你的计算机一样使用它们。也可以让它们连成一个网络。虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。真实计算机称为物理机,虚拟出来的计算机称为虚拟机。物理机上的OS称为HOST OS,可以是2K/XP/2K3,各台虚拟机上各自安装的独立的OS称为GUEST OS,可以是DOS,也可以是WIN各种版本,甚至可以是UNIX/LINUX、MAC OS等等。物理机上能虚拟出多少台虚拟机取决于物理机的硬盘容量,你甚至可以在创建虚拟机后根据需要增加一个虚拟硬盘,还可以增加其它硬件设备,如虚拟机中的光驱、网卡等等,还可以调整内存容量。能同时开的虚拟机数量取决于你的物理机硬件配置,主要是CPU和内存,尤其是内存。因为虚拟机的CPU、内存这两个关键硬件资源都是使用物理机的CPU和内存,所以同时运行越多台虚拟机,对物理机的CPU和内存消耗也越大,速度越慢。4.2虚拟机的应用某些执行方式需要在一个满足了安全性和可靠性关注点的受控环境中执行。所以就运用到了虚拟机风格。某些软件的开发需要进行测试运行,如果在物理机上运行有可能导致崩溃,这时就可以用到虚拟机风格。进行一些网络实验,可以同时开启多台虚拟机,让它们连成一个网络,甚至也可让它们上INTERET。多台虚拟机之间、虚拟机和物理机之间也可通过虚拟网络共享文件,在它们之间复制文件。可以在虚拟机上测试UNIX/LINUX编写的程序,对原来物理机上的WIN没任何影响。研究病毒或木马程序,就可以再虚拟机上实验,虚拟一个计算机,在上面运行病毒或木马。研究不同的杀毒软件和防火墙程序的冲突和兼容问题时,就可以在虚拟机上安装试用,每台虚拟机可以各装一种杀毒软件,多台虚拟机上的多种杀毒软件不会冲突。有些试用软件未经注册是有使用时间或次数限制的,但又找不到注册机或注册码,但用虚拟机上安装使用这些试用软件会更方便,特别是要用很多试用软件时,每台虚拟机装一个试用软件,虚拟机上也可以设置多个类似XP的还原点,如果试用软件过期了,将虚拟机还原一下,再重新安装一下试用软件又可继续使用。虚拟机可以让你拥有多台联网的计算机,你原来在多台物理机器上想做什么在虚拟机上基本也可以做什么。虚拟机的基本作用就是可以多台联网,让你学习、测试、试验。虚拟机应该是个软件测试平台。通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等,只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就像是在真正的计算机中进行工作。因此,当我在虚拟机中进行软件评测时,可能系统一样会崩溃,但是,崩溃的只是虚拟机上的作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,我可以马上恢复虚拟机到安装软件之前的状态。4.3虚拟机的特征虚拟机风格的体系结构设计的初衷主要是考虑体系结构的可移植性。这种体系结构力图模拟它运行于其上的软件或者硬件的功能。这种体系结构在很多场合都有用途:它可以被用于模拟或者测试尚未构建成的软硬件系统,它还可以模拟灾难(例如飞行模拟器,安全攸关的系统 ,这些在现实生活中测试太过于危险并且牺牲太大)。虚拟机的例子有:解释器,机遇规则的系统,通用语言处理程序。我们用解释器作一个例子,通过虚拟机特定模块的解释步骤:解释引擎从被解释的模块中选择一条指令,基于这条指令,引擎更新虚拟机内部的状态,上述过程反复执行。由于对程序的中断,查询和在运行时的修改能力,通过虚拟机来执行模块大大提高了其稳定性,但是由于在执行过程中附加了额外的计算量,性能方面必然会受到影响。在虚拟机结构中,组件是被模拟的机器和实际的机器,而连接器则是一组转换规则,这组转换规则能够在保持被模拟的机器中的虚拟状态和逻辑不变的前提下,将操作转换为实际的机器中能够被理解的操作。这类架构的突出特点是:在虚拟机器环境中运行的代码不需要了解虚拟机的具体细节。一旦运行环境发生变化,只需要重写虚拟机本身。通常虚拟机会限制在其中运行的软件的行为,特别是那些以实现跨平台为目的的虚拟机,如Java虚拟机和.NET CLR。这类虚拟机往往希望虚拟机器的代码完全不了解虚拟机以外的现实世界。这是在灵活性、效率与软件跨平台性之间进行的一种折衷。能够使系统的结构更具层次性,使用虚拟机提供的设施编写的代码,可以不考虑虚拟机以外的实际环境,而在正确地实现了这种虚拟机的环境中执行。虚拟机风格包括:解释器与基于规则的体系结构。解释器用以建立一种虚拟机以弥合程序的语义与作为计算引擎的硬件的间隙。它的构件包括:正在被解释的程序:执行引擎。被解释的程序的状态。执行引擎的当前状态。解释器的典型例子就是Java虚拟机。基于规则的系统用于根据已知的规则,对输入进行处理。它类似于解释器。基于规则的系统的构件包括:工作内存、知识库、规则解释器、规则与数据元素选择器。4.4虚拟机的优点可以实现非本机平台的功能,有助于程序的可移植性和程序设计语言的跨平台能力,能够安全的进行“灾难模式”的模拟,具有很强的适应性。4.5虚拟机的缺点额外的间接层次带来了系统性能的下降,比编译系统的执行速度要慢,额外软件层的正确性需要进行验证,无法最大限度地发挥操作系统和硬件的性能(在虚拟机中运行的应用程序并不了解实际的硬件和操作系统的特性)。5仓库风格和黑板风格5.1仓库风格和黑板风格的概述5.1.1仓库风格和黑板风格的例子注册表早期的计算机硬件和软件系统的配置信息均被各自保存在配置文件(.ini)中,这些文件散落在系统的各个角落,人们很难对其进行维护。为此,引入注册表的思想,将所有的.ini文件集中起来,形成共享仓库,为系统运行起到了集中资源配置管理和控制调度的作用。注册表信息影响或控制系统和应用软件的行为,在应用软件安装、运行、卸载时对其进行添加、修改和删除信息,以达到改变系统功能和控制软件运行的目的。剪贴板剪贴板内置在Windows中,是使用系统的内部资源RAM,或虚拟内存来临时保存剪切和复制的信息,它使得在各种应用程序之间,传递和共享信息成为可能。因此,它就成为了存储、传递和交换信息的公共区域,形成共享仓库。大家看到,注册表和剪贴板均像一个仓库一样,成为了计算机中存储和维护数据的重要场所。5.2黑板体系结构模型的构成5.2.1知识源特定应用程序知识的独立散片。知识元之间的交互只在黑板内部发生。把问题分成几个部分,每个部分独立计算,响应黑板上的变化。即知识源代理,就像学生一样,每个人都按照他们自己的方式,工作在他们感兴趣的方面或他们的知识已能够处理的方面,并在可能的时候向黑板添加新的知识,以供其他知识源开展进一步的工作。5.2.2黑板数据结构反映应用程序求解状态的数据。它是按照层次结构组织的,这种层次结构依赖于应用程序的类型。知识源不断地对黑板数据进行修改,直到得出问题的解。黑板数据结构起到了知识源之间的通信机制的作用,是知识源互相作用的唯一媒介。5.2.3控制器控制(即对知识源的调用)是由黑板的状态决定的。一旦黑板数据的改变使得某个知识源成为可用的,知识源就会被控制模块激活,让知识源响应偶然事件。控制器还承担着限制知识源代理对黑板访问的工作。5.3黑板风格体系结构的特点5.3.1黑板风格体系结构的优点黑板风格体系结构和传统体系结构有显著区别。它追求的是可能随时间变化的目标,各个代理需要不同资源、关心不同问题,但用一种相互协作的方式和维护共享数据结构。黑板风格体系结构的优点在于可扩充性比较强,模块间耦合比较松散,便于扩充。便于多客户共享大量数据,他们不关心数据何时有的、谁提供的、怎样提供的。既便于添加新的作为知识源代理的应用程序,也便于扩展共享的黑板数据结构。知识源可重用以及支持容错性和健壮性。5.3.2黑板风格的体系结构缺点不同的知识源代理对于共享数据结构要达成一致,而且,这也造成对黑板数据结构的修改较为困难要考虑到各个代理的调用。需要一定的同步,加锁机制保证数据结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论