论软件体系结构风格以及应用

      摘要:2013年7月,我参加了信息检索系统的开发,在此次项目中,我担任系统设计和开发的工做。该项目是在部门SHARE POINT 的基础上,集SHARE POINT种各文档的分类检索,预览,下载和显示于一体,提供相似于百度搜索和百度文库预览的效果。本论文结合做者的实践,讨论了软件体系架构风格在信息检索系统中的运用,主要是数据流风格的使用。经过运用合理的软件体系架构,咱们的项目取得了成功,不但提升了部门的办公效率,并且在必定程度上提升了部门的信息化水平。web

本论文先介绍常见的五种类型的体系风格,而后介绍信息检索系统的状况,接着论述在此次工做中运用到的软件体系架构的缘由,以及取得的效果,最后讨论能够改进的地方。数据库

 

                                                                                                         正文编程

 软件体系结构是某一特定领域中系统组织的惯用模式。体系结构定义了一个家族,即一个体系结构定义了一个词汇表和一些约束。词汇表包括构件和链接件类型,约束主要是描述这些构件和链接件如何组合起来。设计模式

 常见的软件体系架构有以下五种:浏览器

1.      数据流风格:包括:管道过滤器风格,批处理风格。架构

2.      仓库风格:包括数据库,黑板系统和超文本。函数

3.      调用返回风格:分层风格,主程序子程序和面向对象风格。设计

4.      虚拟机风格:包括解释器,和基于规则的系统。对象

5.      独立构件风格:包括进程通信和基于事件的系统。blog

管道过滤器风格,是数据流风格的一种,这种风格由称之为管道和过滤器组成,其中过滤器为构件,提供输入和输出的接口,主要用于数据的过滤盒处理。管道为链接件,用于链接各个过滤器。每个过滤器无需知道上一个过滤器的实际处理细节,即可以接收到来自上一个过滤器的数据进行加工,加工完毕,将数据经过管道传输给下一个过滤器。常见的例子有UNIX系统的SHELL编程。管道过滤器风格的优势主要有以下几个:1)因为每个过滤器都是一个独立的构件,因此能够方便的更换。2)具备必定的并行性。缺点有以下几个:1)不适合及时的交互式设计。2)因为缺少统一的通信标准,数据的传输效率可能比较不高。

面向对象风格,是将数据的表示方法和它们对应的操做方法封装在一个对象中。对象和对象之间经过函数和过程调用来交互。这种风格的构件就是对象,链接件就是函数和过程的调用。

基于事件的系统,这种系统,有点相似设计模式的观察者模式,由构件公布或者广播一个或者多个事件,其余构件的构件在此构件的事件上注册。当这个事件被触发时,当即通知在这个事件上注册的过程。这种风格的构件是前面提到的构件,链接件是过程的注册。

分层系统是一个层次结构,每一层为上一层服务,并做为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻层可见。这样,系统中的构件在一些层中实现了虚拟机(在另一些层次系统中层是部分不透明的)。链接件经过决定层间如何交互的协议来定义,其拓扑约束包括对相邻层间交互的约束。

这种风格支持基于可增长抽象层的设计。这样,容许将一个复杂的问题分解成一个增量步骤序列的实现。由于,每一层只影响两层,同时只要给相邻层提供相同的接口,容许每次用不一样的方法实现,一样为软件重用提供了强大的支持。

在部门的平常办公中,用到了SHARE POINT进行部门文档的管理,包括各类设计素材图,EXCEL报表,WORD文档,CAD制图,各类JPG等电子图和复印件,PPT等,这些都以二进制存储在了SHARE POINT的SQL SERVER数据库中。因为这些文档的种类繁多,急需一套可以在多种文档中进行查询,检索和提供下载,能进行在线阅读的一个文档检索系统。

通过分析,系统的第一步是分词,即对输入的查询关键词进行分词,咱们选用了中科院的ICTLAS,如输入”截拳道李小龙“,那么这个词将会被智能分词为:”截拳道“和”李小龙“,系统将会检索包含任意两个词之一的记录。系统的第二步是查询,在这里,咱们须要根据第一步的分词后的关键词,在SQL SERVER中编写模糊查询语句,查询相关的记录,例如:SELECT 字段1,字段2,字段3 FROM 表 WHERE COLUMNNAME  LIKE ‘%KEY%’.系统的第三步是进行反序列化,由于文档都是以二进制的格式存储,因此咱们须要根据第二步的查询结果进行反序列化成对应格式的文档,如DOC,PPT,XLT等格式。第四步是格式转换,即将第三步各类格式的文档统一转换为PDF。在这里,咱们使用了第三方的DLL,叫作APOSE。这是一款很是好的文档格式转换构件,能在各类流行的文档格式中进行完美的转换。最后一步就是显示,在这里咱们选用了一款基于HTML5相似百度文库的阅读器显示。

上述五个处理步骤,前一个步骤的输入是下一个步骤的输入,每个步骤负责各自的处理。查询词首先被分词,而后查询检索,接着反序列,而后是转换格式为PDF,最后是显示,数据流在管道中流动,如同批处理通常,故比较适合数据流风格,图示以下:
                    
            

 

 

系统中有须要改进的地方,如最后一步的显示,由于是基于HTML5,因此浏览器的兼容性不是很好,通常只能在支持HTML5的浏览器上进行浏览。因此这个地方也是之后要改进的一个地方。由于采用了批处理的架构风格,因此之后要来修改也比较容易。

相关文章
相关标签/搜索