趙淑芳,陳立潮
(太原科技大學 計算機科學與技術學院,太原030024)
軟件復用是解決軟件危機、提高軟件生產效率和質量的現實有效途徑。為了有效管理構件,軟件構件技術的主要研究內容是建立構件庫系統。在構件庫系統中,構件的分類與檢索是兩個核心問題[1]。同時,構件的合理分類是實現構件高效快速檢索的基礎和關鍵。鑒于煤礦設備種類繁多,信息繁雜,筆者從用戶的角度出發,對構件進行更優、更人性化的分類,使分類結果更合理,更符合用戶的要求,有效解決了目前煤礦礦用設備在安全監測方面存在的業務流程手工操作、信息隔離分散等信息化滯后問題,為煤礦企業建立一整套的安全管理體系提供支撐平臺。
本系統架構遵循軟件分層的設計思想,分為構件表現層、構件業務層、構件持久層和構件數據訪問層。構件表現層基于Struts MVC框架,采用Spring作為構件業務層,以iBATIS為構件持久層,通過使用這些成熟的構件框架,使得軟件設計層次清晰,能夠減少重復開發工作量,縮短開發周期,降低開發成本,增強軟件構件的可維護性、可擴展性和可移植性。
根據構件的標準,采用了標準構件,在Java環境下使用窗口、菜單、模板等[2],Java的軟件構件JavaBean(EJB)是能夠在構造工具中進行可視化操作的可復用軟件,它的構件模型包含構件和容器兩個基本要素,其結構完全采用基于軟件構件模型的分布對象計算體系,較規范地定義了Java的服務器端構件模型[3],采用EJB可以使開發應用系統變得比較容易,應用系統可以在一個支持EJB的環境中進行開發,開發完之后部署在其他的環境中,隨著需求的改變,應用系統可以不加修改地遷移到其他功能更強、更復雜的服務器上。基于構件的系統體系結構如圖1所示。
刻面用于描述構件所實現的具體功能。構件庫中任何構件都必須提供一種或多種具體功能,不能完成某種功能的構件是沒有任何軟件復用價值的,同時構件使用者在進行構件檢索時,首要關心的也是構件具體可以完成什么功能,以及構件的功能是否符合用戶的需求[1]。
基于構件的軟件開發以系統體系結構為中心,構件設計要遵循模塊獨立化原理,要做到高內聚、低耦合,使煤礦設備監測管理系統有利于做出正確、穩定、靈活的系統設計,從而為構件設計的決策提供具體指導和框架支持。針對管理過程中的不同單位、不同職能、不同用戶設計各自的功能來實現“一方主導、三方聯動”的管理模式,實現煤礦礦用設備安全管理的規范化和對安全數據智能分析與預警,系統主要功能包括設備信息、設備監測、證書與文書管理、日志管理和單位信息管理5大功能。

圖1 系統總體架構圖
1)設備信息構件。各部門以基本庫信息為基底對所有信息進行修改和更新,以備查詢。煤礦用戶可以對自己的設備信息進行修改,煤礦用戶和煤監局同時都能對設備信息進行瀏覽和查詢。設備信息可根據用戶權限級別來查看,通過查看設備狀態,來對設備狀況進行預測,把事后補救變為事前防范預警。
2)設備監測構件。主要實現分類瀏覽、申請監測、常規監測、簡單查詢監測結果、高級查詢監測結果等。
3)證書與文書管理構件。主要負責煤監局、中介機構和煤礦用戶查看煤礦礦用設備的安標信息,資料的管理有安全的權限設置,各類人員只能在自己的權限內查看文件資料,不能越權查看;用于收發文件和上傳設備監測報告。
4)日志管理構件。統計工作日志管理,對用戶進出系統、使用功能、對數據的操作等運行情況進行記錄,便于系統故障跟蹤等系統維護工作,避免相互之間推卸責任。
5)單位信息管理構件。包括煤監局、中介機構及煤礦三類用戶。主要實現前臺個人用戶信息瀏覽、修改單位信息、單位信息內容瀏覽以及檢索;后臺單位信息以及相關用戶的添加、修改、內容瀏覽、內容檢索、權限設置以及前臺用戶密碼修改等功能。
目前,構件的刻面描述是一種正逐步得到重視與應用的描述方法。構件分類方法大部分都是基于刻面的[1]。對于刻面描述的構件的檢索采用的是SQL2000數據庫檢索技術,另外,由于設備信息監測系統是基于WEB的,筆者采用XML檢索語言來完成構件檢索的任務,構件庫的檢索需要兼顧對查詢的構件的不完全描述,對查詢的匹配應有一定的張弛能力,不僅要求能給用戶返回匹配的結果,還要求能返回相應的匹配程度,為用戶復用構件提供有意義的參考信息[5]。其次,各構件庫的刻面分類方案可能完全不一樣,為了查詢到符合用戶需求的構件,用戶可能需要跨越多個構件庫。針對煤礦設備種類繁多、數據量大的特點,根據刻面分類方法,定義了4個刻面[8]:
a.功能,構件功能描述,煤礦領域;
b.操作對象,構件輸入的煤礦設備對象;
c.使用環境,系統軟硬件環境;
d.表示方法,構件形態(如類、構架、框架)和表示(如圖形、語言)。
針對煤礦每一類設備監測信息D,對應一個謂詞PD,根據D檢索將得到所有滿足條件PD的構件集合FT,當查詢條件中有多個設備信息刻面時,各個刻面檢索到的構件集合的交集就構成了最終的結果集合,提高了檢索的效率[7]。其構件的分類表示如圖2所示。

圖2 構件分類表示
從圖2中可以看出,構件在入庫時,按照某種刻面分類方案首先對構件的描述文本進行分類,其中刻面值可以是煤礦設備信息的關鍵詞、句、WEB文本;然后利用構件的表示方法建立設備信息構件的空間模型[6];最后,對構件進行聚類分析,從而實現對構件的分類,提高對設備安全監測信息的查全率和查準率。
3.1.1 設計模式
筆者采用MVC設計模式,MVC作為一種設計模式,它強制性地把應用程序的輸入、處理和輸出分開。MVC把應用程序分成三個核心模塊:模型、視圖和控制器,它們分別承擔不同的任務。其處理過程為:首先控制器接收用戶的請求,當Web用戶單擊頁面中的提交按鈕來發送HTML表單時,控制器接收請求并調用相應的模型構件,并決定應該調用哪個模型來進行處理;然后模型根據用戶請求進行相應的業務邏輯處理,并返回數據;最后控制器調用相應的視圖來格式化模型返回的數據,并通過視圖呈現給用戶。圖3顯示了煤礦礦用設備安全監測管理系統的功能以及它們之間的相互關系。

圖3 MVC設計模式
3.1.2 Struts框架
本系統采用Struts框架,Struts是基于MVC的Web應用框架,此框架可以提高軟件開發的速度和效率,并且使軟件更便于維護。
1)Struts實現MVC的機制。在Struts框架中,模型由實現業務邏輯的JavaBean組件構成,控制器由Action Servlet和Action來實現,視圖由一組JSP文件構成。一個用戶請求是通過Action Servlet來處理和轉發的,這就需要一些描述用戶請求路徑和Action映射關系的配置信息了。在Struts中,這些配置映射信息都存儲在特定的XML文件struts-config.xml中。在該配置文件中,每一個Action的映射信息都通過一個〈action〉元素來配置。圖4顯示了Struts實現的MVC框架。

圖4 Struts實現的MVC框架
2)Struts的工作流程。對于采用Struts框架的Web應用,在Web應用啟動時就會加載并初始化 ActionServlet,ActionServlet 從 struts-config.xml文件中讀取設備配置信息,把它們存放到各種配置對象中,當ActionServlet接受到一個用戶請求時,其執行過程如下:
a.檢索和各類用戶請求相匹配的ActionMapping實例,如果不存在,返回用戶請求路徑無效的消息;
b.如果ActionForm實例不存在,創建一個ActionForm對象,把煤礦用戶提交的表單數據保存到ActionForm對象中;
c.根據煤礦設備配置信息決定是否需要表單驗證。如需要,就調用ActionForm的validate()方法;
d.如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,表示表單驗證成功;
e.ActionServlet根據ActionMapping對象,再把煤礦用戶請求轉發到ActionForward對象指向的JSP組件;
f.ActionForward指向的JSP組件生成動態網頁,返回給用戶。
對于上述流程的d,如果ActionForm的validate()方法返回包含一個或多個ActionMessage的ActionErrors對象,表示表單驗證失敗,此時ActionServlet將直接把請求轉發給包含各個用戶提交表單的JSP組件。
目前,對于刻面描述的構件檢索主要以較傳統的數據庫檢索技術來實現。本系統采用的Web服務器系統平臺操作系統為Windows XP,Web服務器軟件采用了Tomcat6.0,數據庫采用SQL2000,通過動態網頁JSP技術(Struts技術)與iBATIC框架技術,實現數據庫的互聯。本研究的構件存儲采用構件信息與構件實體分別存儲的方式,即構件描述信息存入關系數據庫,構件實體存入文件系統,二者通過地址信息映射聯系[6]。開發環境刻面主要用于描述構件的開發工具和開發語言,即兩個子刻面。開發工具子刻面說明了開發該構件所使用的工具,開發語言表明了構件的語言特性,主要體現在實體文件的擴展名上。
Myeclipse5.5.1平臺本身是一個相同的插件群集,其擴展功能是由各個獨立的插件提供,在此系統中把構件平臺看作是一個封閉的系統,它的運行必須以一個整體來進行。Myeclipse5.5.1允許定義對實現一個完整的擴展點描述和實現增加一個新的擴展點[4],主要操作為:a.將圖2上的構件特性用XML語言進行描述,文件中的各種要素均以Myeclipse5.5.1為擴展點加以描述;b.把該描述文件放在任意一個插件子目錄下,其擴展名為exsd;c.新的擴展點就被擴展到原來的點中,新的構件類型通過該擴展點就能被Myeclipse5.5.1平臺來管理了,從而實現了設備信息資源的共享。目前此系統通過在山西省某煤礦的試運行,初步使煤礦設備信息具有較強的融合能力,能對來自不同信息源的安全信息進行綜合管理和分析,實現對生產現場安全信息的快速反饋、動態跟蹤與閉環控制,提高對煤礦整體安全管理工作的監控能力。
基于Myeclipse5.5.1平臺構件的煤礦設備安全監測系統可以獲得任何設備的狀態監測信息、診斷等動態管理信息,幫助煤礦管理人員做出正確的決策;針對煤礦設備信息構件的特點,采用了刻面分類表示的方法對構件進行描述,為煤礦每個入庫設備信息構件指定術語,對它進行描述。在進行檢索時,首先利用刻面分類對檢索條件進行預處理,對檢索條件進行加強與擴展,接下來引用處理后的條件進行檢索,將得到更符合用戶需求的返回結果,提高了對煤礦設備安全監測信息的查全率和差準率,從而提高對煤礦整體安全管理工作的監控能力。
[1] 楊芙清,梅宏,李克勤.軟件復用與軟件構件技術[J].電子學報,1999,27(2):68-74.
[2] 常繼傳,李克勤,郭立峰.青鳥系統中可復用軟件構件的表示與查詢[J].電子學報,2000,28(8):20-23.
[3] 徐瑋,尹寶林,李昭原.企業信息系統業務構件設計研究[J].軟件學報,2003,14(7):1213-1220.
[4] 劉勇,劉虹.基于庫存管理領域的軟件復用技術[J].計算機工程,2007,33(21):270-272.
[5] 潘穎,趙俊峰,謝冰.構件庫技術的研究與發展[J].計算機科學,2003,30(5):90-93.
[6] 黃凱.基于Eclipse體系的構件開發管理平臺的設計實現[J].科學技術與工程,2005,5(14):995-997.
[7] 姚清耘.基于向量空間模型的中文文本聚類方法的研究[D].上海:上海交通大學,2008.
[8] 任姚鵬,陳立潮,張英俊,等.基于潛在語義分析的構件聚類改進方法[J].計算機工程,2011,37(4):68-69.