論軟件體系結構風格以及應用

      摘要:2013年7月,我參加了信息檢索系統的開發,在這次項目中,我擔任系統設計和開發的工作。該項目是在部門SHARE POINT 的基礎上,集SHARE POINT種各文檔的分類檢索,預覽,下載和顯示於一體,提供類似於百度搜索和百度文庫預覽的效果。本論文結合作者的實踐,討論了軟件體系架構風格在信息檢索系統中的運用,主要是數據流風格的使用。通過運用合理的軟件體系架構,我們的項目取得了成功,不但提高了部門的辦公效率,而且在一定程度上提高了部門的信息化水平。

本論文先介紹常見的五種類型的體系風格,然後介紹信息檢索系統的情況,接着論述在這次工作中運用到的軟件體系架構的原因,以及取得的效果,最後討論可以改進的地方。

 

                                                                                                         正文

 軟件體系結構是某一特定領域中系統組織的慣用模式。體系結構定義了一個家族,即一個體繫結構定義了一個詞彙表和一些約束。詞彙表包括構件和連接件類型,約束主要是描述這些構件和連接件如何組合起來。

 常見的軟件體系架構有如下五種:

1.      數據流風格:包括:管道過濾器風格,批處理風格。

2.      倉庫風格:包括數據庫,黑板系統和超文本。

3.      調用返回風格:分層風格,主程序子程序和麪向對象風格。

4.      虛擬機風格:包括解釋器,和基於規則的系統。

5.      獨立構件風格:包括進程通訊和基於事件的系統。

管道過濾器風格,是數據流風格的一種,這種風格由稱之爲管道和過濾器組成,其中過濾器爲構件,提供輸入和輸出的接口,主要用於數據的過濾盒處理。管道爲連接件,用於連接各個過濾器。每一個過濾器無需知道上一個過濾器的實際處理細節,便可以接收到來自上一個過濾器的數據進行加工,加工完畢,將數據通過管道傳輸給下一個過濾器。常見的例子有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的瀏覽器上進行瀏覽。所以這個地方也是以後要改進的一個地方。因爲採用了批處理的架構風格,所以以後要來修改也比較容易。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章