软件体系结构大作业题目:管道-过滤器模型专业班级: 13 软件工程1班学生姓名:马潇霄学号: 120132416042015年 10月 20 日目录1.问题背景 (3)2.相关综述: 管道-过滤器模型 (3)3. 设计内容/方案:管道-过滤器的设计原型 (6)4. 总结 (8)参考文献 (9)1.问题背景摘要软件体系结构设计给出了大规模软件复用,特别是领域复用的重要设计模式。
体系结构描述了软件系统的整体组织结构与风格,对软件的性能和质量有直接的影响。
管道-过滤器模式是一种面向数据流的软件体系结构。
该文对这种体系结构做了深入的讨论,并结合一个具体应用给出了设计原型。
关键词管道-过滤器模型管道过滤器随着软件系统规模和复杂性的增加,系统总体结构设计的重要性已远远超过特定算法和数据结构的选择,良好的体系结构是保证系统成功的关键。
基于软件体系结构的过程开发是现代软件开发的基本途径,也是软件工程成熟的标志。
软件体系结构的风格或模式包括客户-服务器模式的体系结构,管道-过滤器模式的体系结构,层次式体系结构,面向对象的体系结构等。
管道-过滤器模式的体系结构是面向数据流的软件体系结构。
它最典型的应用是在编译系统。
一个普通的编译系统包括词法分析器,语法分析器,语义分析与中间代码生成器,优化器,目标代码生成器等一系列对源程序进行处理的过程。
人们可以将编译系统看作一系列过滤器的连接体,按照管道-过滤器的体系结构进行设计。
此外,这种体系结构在其它一些领域也有广泛的应用。
因此它成为软件工程和软件开发中的一个突出的研究领域。
2.相关综述: 管道-过滤器模型2.1 模型的结构与特征管道-过滤器模型的基本部件都有一套输入输出接口。
每个部件从输入接口中读取数据,经过处理,将结果数据置于输出接口中,这样的部件称为“过滤器”。
这种模型的连接者将一个过滤器的输出传送到另一个过滤器的输入,该文把这种连接者称为“管道”。
在这种模型中,过滤器必须是独立的实体,每一个过滤器的状态不受其它过滤器的影响。
并且,虽然人们对过滤器的输入输出有一定的规约,但过滤器并不需要知道向它提供数据流的过滤器和它要提供数据流的过滤器的内部细节。
过滤器的基本结构如图 1。
3图1管道-过滤器中的基本单元:过滤器管道-过滤器模式的系统构架如图 2。
图 2管道-过滤器模式的系统构架2.2模型的优点管道-过滤器模型有如下的优点:(1)设计人员将整个系统的输入输出行为理解为单个过滤器行为的叠加与组合。
这样可以将问题分解,化繁为简。
(2)任何两个过滤器,只要它们之间传送的数据遵守共同的规约就可以相连接。
每个过滤器都有自己独立的输入输出接口,如果过滤器间传输的数据遵守其规约,只要用管道将它们连接就可以正常工作。
(3)整个系统易于维护和升级:旧的过滤器可以被替代,新的过滤器可以添加到已有的系统上。
软件的易于维护和升级是衡量软件系统质量的重要指标之一,在管道-过滤器模型中,只要遵守输入输出数据规约,任何一个过滤器都可以被另一个新的过滤器代替,同时为增强程序功能,可以添加新的过滤器。
这样,系统的可维护性和可升级性得到了保证。
(4)支持并发执行:每个过滤器作为一个单独的执行任务,可以与其它过滤器并发执行。
过滤器的执行是独立的,不依赖于其它过滤器的。
2.3模型的缺点及其改进4管道-过滤器模型有如下的缺点:(1)交互式处理能力弱:管道-过滤器模型适于数据流的处理和变换,不适合为与用户交互频繁的系统建模。
在这种模型中,每个过滤器都有自己的数据,这些数据或者是从磁盘存储器中读取来,或者是由另一个过滤器的输出导入进来,整个系统没有一个共享的数据区。
这样,当用户要操作某一项数据时,要涉及到多个过滤器对相应数据的操作,其实现较为复杂。
由以上的缺点,可以对每个过滤器增加相应的用户控制接口,使得外部可以对过滤器的执行进行控制。
改进的过滤器如图 3。
图 3 带有用户控制接口的过滤器(2)数据的打包与解包:有时,系统中的过滤器需要有一个数据转换器来对输入输出数据进行解包打包。
这样会降低系统性能,增加实现过滤器的复杂性。
2.4与面向对象的体系结构的比较面向对象的体系结构就是应用面向对象的方法建立系统的体系结构。
其主要思想是:对问题域中客观存在的各项事物建立相应的对象,对象的属性与方法分别描述事物的静态特征与动态行为,对象间的交互通过对其方法的调用进行。
面向对象方法的优点是它封装了对象的属性和行为,实现了“信息隐蔽”。
同时,对象内部行为的修改不影响外部对它的调用。
面向对象的体系结构的一个明显的缺点是:当一个对象通过过程调用与其它对象交互时,它必须知道其它对象的标识。
而当一个对象的标识改变时,需要对所有调用这一方法的对象进行修改。
而在管道(过滤器这种体系结构中,过滤器与其它过滤器相连接时不必知道系统中的其它过滤器。
而且当某个过滤器发生改变时,不需要对其他过滤器进行改动。
5在实际应用中,可以将这两种体系结构结合起来。
例如,先按照管道(过滤器的思想建立系统的体系结构,然后应用面向对象的方法设计和实现过滤器及管道。
3. 设计内容/方案:管道-过滤器的设计原型3.1问题域下面举一个简单的例子说明管道-过滤器的应用与实现。
需求描述:假设有一批实时的二维坐标点数据需要变换(即对点的横、纵坐标进行缩放),并在屏幕上进行显示,要求外部要能设置变换规则(如缩放倍数)和显示规则(如显示模式和显示颜色)。
3.2体系结构建模这是一个对坐标点的数据流进行顺序处理的过程,可以应用管道(过滤器体系结建模。
将这个系统分为两个过滤器,一个为坐标点数据流变换过滤器,另一个为坐标点数据流实时显示过滤器。
其中,坐标点数据流变换过滤器有一个外部控制接口对变换规则如缩放倍数进行设置,坐标点数据流实时显示过滤器有一个外部控制接口对显示规则如显示模式和显示颜色进行设置。
整个系统的体系结构如图4。
图4坐标点变换与显示的体系结构3.3过滤器的设计可以将过滤器用状态转换图表示。
过滤器有如下状态:停止状态,工作状态,等待状态,休眠状态。
停止状态:表示过滤器处于待启动状态,当外部启动过滤器后,过滤器处于处理状态;处理状态:表示过滤器正在处理输入数据队列中的数据;6等待状态:表示过滤器的输入数据队列为空,此时过滤器等待,当有新的数据输入时,过滤器处于处理状态;休眠状态:表示过滤器已经启动,但被挂起。
挂起的原因可能是由于外界用户要设置过滤器的控制参数,这样暂时将过滤器挂起但不中止它,当控制参数设置完毕后再将过滤器还原,继续运行。
这样,实现了较高的效率。
图5为过滤器的状态转换图。
图5过滤器状态转换图(1)收集文档(Gathering Document);(2)建立索引(Indexing);(3)传递索引(Transferring Index)。
以上过程是顺序执行的。
一般来说,收集文档所占用的时间最长,其次是创建索引,最后是传递索引。
LSE在访问文档时,主要采用三种方法:(4)直接访问:直接通过NFS来访问文件;(5)档案访问:由CGI 对多个文件建立档案,然后再传递这些档案文件;(6)HTTP访问: 每次访问时,每个文件都通过HTTP进行传递。
在这三种搜集文档的方法中,直接访问最快,其次是档案访问,最后是HTTP 访问。
为了检查上面哪种方法比较适用,CSE使用CGI,又称为探测器,来探测Web Server所处的状态。
此外,CGI还通过ServerRoot和Web服务器上的User 表为每个用户创建自己的档案文件,然后将这些档案文件传送给搜索引擎。
3.4协作式搜索引擎(CSE)的特征(1)CSE采用分布式机器人(Robot)增加并行性,从而可以同时搜集多个文档。
(2)CSE 主要是由多个彼此间相互协作的本地元搜索引擎构成,本地元搜7索引擎是本地搜索引擎与存储服务器进行通信的接口。
(3)CSE的更新周期较短,因为每个Web站点上的索引代理是通过直接访问Web文文件来建立索引的,而不是通过HTTP访问来建立索引的。
(4)采用“下10个”搜索方法,提高用户获取信息的效率。
“下10个”搜索方法是指搜索引擎先将搜索到的与查询条件相匹配的10 个文文件显示给用户,而且每个页面仅显示10 个,用户在浏览这10 个文文件的同时,搜索引擎仍在后台不停地搜索。
这样就减少了用户查询信息所发费的时间,提高用户获取信息的效率。
(5)根据与查询条件相关联的程度对文件划分等级。
CSE可以根据与查询谓词相关联的程度把文档划分为不同的等级,这也是一种减少更新周期的方法。
这是因为一个搜索引擎即使可以搜索到包含指定关键词的所有文文件,但是如果搜索的页面太多,搜索引擎就不能够从中选择出最重要的页面。
所以可以采用计分的方法来划分不同等级的文文件,分数越高,该文档与查询谓词的关联程度就越大。
在对文档进行分级的所有方法中,tf*idf方法是最流行的一种,其中tf是文档中某条目所出现的频率,idf是某条目的稀疏度。
根据公式(1)可以计算出idf 的值:Idf=log(N/n)其中N是所有文档的数量,n是包含某条目文档的数量。
在CSE系统中,idf值的计算是被分配到搜索过程中与搜索过程并行执行的。
4. 总结该文描述了一种新的分布式搜索引擎,叫作协作式搜索引擎(CSE),介绍了它的框架、搜索和更新过程。
CSE通过元搜索引擎将多个本地搜索引擎集成在一起协调工作,多个本地搜索引擎能够协调工作是由于元搜索引擎隐藏、屏蔽了本地搜索引擎的不同。
在CSE中,通过直接访问和档案访问,每个本地搜索引擎能够快速更新web站点上的文档,从而CSE克服了目前的分布式搜索引擎(如Harvest,Google)不能协调利用本地搜索引擎、收集文件时间过长以及本地搜索引擎之间响应不一致的问题。
因此,CSE能够真正实现收集快速、更新及时、定位准确。
8参考文献[1] 王继成,杨晓江,基于元资料与Z39.50的分布协作式Web信息检索[J].软件学报,2001:12(4)[2] C Mic Bowman. Peter B Danzig, Darren R Hardy et al. The Harvest InformationDiscorvery and Access System./SDG/IT94/Procedings/Searching/Schwartz.ha rvest/schwartz.harvest.html[3] Ingrid./[4] Google./9。