趙淑芳,陳立潮
(太原科技大學 計算機科學與技術(shù)學院,太原030024)
軟件復用是解決軟件危機、提高軟件生產(chǎn)效率和質(zhì)量的現(xiàn)實有效途徑。為了有效管理構(gòu)件,軟件構(gòu)件技術(shù)的主要研究內(nèi)容是建立構(gòu)件庫系統(tǒng)。在構(gòu)件庫系統(tǒng)中,構(gòu)件的分類與檢索是兩個核心問題[1]。同時,構(gòu)件的合理分類是實現(xiàn)構(gòu)件高效快速檢索的基礎(chǔ)和關(guān)鍵。鑒于煤礦設備種類繁多,信息繁雜,筆者從用戶的角度出發(fā),對構(gòu)件進行更優(yōu)、更人性化的分類,使分類結(jié)果更合理,更符合用戶的要求,有效解決了目前煤礦礦用設備在安全監(jiān)測方面存在的業(yè)務流程手工操作、信息隔離分散等信息化滯后問題,為煤礦企業(yè)建立一整套的安全管理體系提供支撐平臺。
本系統(tǒng)架構(gòu)遵循軟件分層的設計思想,分為構(gòu)件表現(xiàn)層、構(gòu)件業(yè)務層、構(gòu)件持久層和構(gòu)件數(shù)據(jù)訪問層。構(gòu)件表現(xiàn)層基于Struts MVC框架,采用Spring作為構(gòu)件業(yè)務層,以iBATIS為構(gòu)件持久層,通過使用這些成熟的構(gòu)件框架,使得軟件設計層次清晰,能夠減少重復開發(fā)工作量,縮短開發(fā)周期,降低開發(fā)成本,增強軟件構(gòu)件的可維護性、可擴展性和可移植性。
根據(jù)構(gòu)件的標準,采用了標準構(gòu)件,在Java環(huán)境下使用窗口、菜單、模板等[2],Java的軟件構(gòu)件JavaBean(EJB)是能夠在構(gòu)造工具中進行可視化操作的可復用軟件,它的構(gòu)件模型包含構(gòu)件和容器兩個基本要素,其結(jié)構(gòu)完全采用基于軟件構(gòu)件模型的分布對象計算體系,較規(guī)范地定義了Java的服務器端構(gòu)件模型[3],采用EJB可以使開發(fā)應用系統(tǒng)變得比較容易,應用系統(tǒng)可以在一個支持EJB的環(huán)境中進行開發(fā),開發(fā)完之后部署在其他的環(huán)境中,隨著需求的改變,應用系統(tǒng)可以不加修改地遷移到其他功能更強、更復雜的服務器上。基于構(gòu)件的系統(tǒng)體系結(jié)構(gòu)如圖1所示。
刻面用于描述構(gòu)件所實現(xiàn)的具體功能。構(gòu)件庫中任何構(gòu)件都必須提供一種或多種具體功能,不能完成某種功能的構(gòu)件是沒有任何軟件復用價值的,同時構(gòu)件使用者在進行構(gòu)件檢索時,首要關(guān)心的也是構(gòu)件具體可以完成什么功能,以及構(gòu)件的功能是否符合用戶的需求[1]。
基于構(gòu)件的軟件開發(fā)以系統(tǒng)體系結(jié)構(gòu)為中心,構(gòu)件設計要遵循模塊獨立化原理,要做到高內(nèi)聚、低耦合,使煤礦設備監(jiān)測管理系統(tǒng)有利于做出正確、穩(wěn)定、靈活的系統(tǒng)設計,從而為構(gòu)件設計的決策提供具體指導和框架支持。針對管理過程中的不同單位、不同職能、不同用戶設計各自的功能來實現(xiàn)“一方主導、三方聯(lián)動”的管理模式,實現(xiàn)煤礦礦用設備安全管理的規(guī)范化和對安全數(shù)據(jù)智能分析與預警,系統(tǒng)主要功能包括設備信息、設備監(jiān)測、證書與文書管理、日志管理和單位信息管理5大功能。
圖1 系統(tǒng)總體架構(gòu)圖
1)設備信息構(gòu)件。各部門以基本庫信息為基底對所有信息進行修改和更新,以備查詢。煤礦用戶可以對自己的設備信息進行修改,煤礦用戶和煤監(jiān)局同時都能對設備信息進行瀏覽和查詢。設備信息可根據(jù)用戶權(quán)限級別來查看,通過查看設備狀態(tài),來對設備狀況進行預測,把事后補救變?yōu)槭虑胺婪额A警。
2)設備監(jiān)測構(gòu)件。主要實現(xiàn)分類瀏覽、申請監(jiān)測、常規(guī)監(jiān)測、簡單查詢監(jiān)測結(jié)果、高級查詢監(jiān)測結(jié)果等。
3)證書與文書管理構(gòu)件。主要負責煤監(jiān)局、中介機構(gòu)和煤礦用戶查看煤礦礦用設備的安標信息,資料的管理有安全的權(quán)限設置,各類人員只能在自己的權(quán)限內(nèi)查看文件資料,不能越權(quán)查看;用于收發(fā)文件和上傳設備監(jiān)測報告。
4)日志管理構(gòu)件。統(tǒng)計工作日志管理,對用戶進出系統(tǒng)、使用功能、對數(shù)據(jù)的操作等運行情況進行記錄,便于系統(tǒng)故障跟蹤等系統(tǒng)維護工作,避免相互之間推卸責任。
5)單位信息管理構(gòu)件。包括煤監(jiān)局、中介機構(gòu)及煤礦三類用戶。主要實現(xiàn)前臺個人用戶信息瀏覽、修改單位信息、單位信息內(nèi)容瀏覽以及檢索;后臺單位信息以及相關(guān)用戶的添加、修改、內(nèi)容瀏覽、內(nèi)容檢索、權(quán)限設置以及前臺用戶密碼修改等功能。
目前,構(gòu)件的刻面描述是一種正逐步得到重視與應用的描述方法。構(gòu)件分類方法大部分都是基于刻面的[1]。對于刻面描述的構(gòu)件的檢索采用的是SQL2000數(shù)據(jù)庫檢索技術(shù),另外,由于設備信息監(jiān)測系統(tǒng)是基于WEB的,筆者采用XML檢索語言來完成構(gòu)件檢索的任務,構(gòu)件庫的檢索需要兼顧對查詢的構(gòu)件的不完全描述,對查詢的匹配應有一定的張弛能力,不僅要求能給用戶返回匹配的結(jié)果,還要求能返回相應的匹配程度,為用戶復用構(gòu)件提供有意義的參考信息[5]。其次,各構(gòu)件庫的刻面分類方案可能完全不一樣,為了查詢到符合用戶需求的構(gòu)件,用戶可能需要跨越多個構(gòu)件庫。針對煤礦設備種類繁多、數(shù)據(jù)量大的特點,根據(jù)刻面分類方法,定義了4個刻面[8]:
a.功能,構(gòu)件功能描述,煤礦領(lǐng)域;
b.操作對象,構(gòu)件輸入的煤礦設備對象;
c.使用環(huán)境,系統(tǒng)軟硬件環(huán)境;
d.表示方法,構(gòu)件形態(tài)(如類、構(gòu)架、框架)和表示(如圖形、語言)。
針對煤礦每一類設備監(jiān)測信息D,對應一個謂詞PD,根據(jù)D檢索將得到所有滿足條件PD的構(gòu)件集合FT,當查詢條件中有多個設備信息刻面時,各個刻面檢索到的構(gòu)件集合的交集就構(gòu)成了最終的結(jié)果集合,提高了檢索的效率[7]。其構(gòu)件的分類表示如圖2所示。
圖2 構(gòu)件分類表示
從圖2中可以看出,構(gòu)件在入庫時,按照某種刻面分類方案首先對構(gòu)件的描述文本進行分類,其中刻面值可以是煤礦設備信息的關(guān)鍵詞、句、WEB文本;然后利用構(gòu)件的表示方法建立設備信息構(gòu)件的空間模型[6];最后,對構(gòu)件進行聚類分析,從而實現(xiàn)對構(gòu)件的分類,提高對設備安全監(jiān)測信息的查全率和查準率。
3.1.1 設計模式
筆者采用MVC設計模式,MVC作為一種設計模式,它強制性地把應用程序的輸入、處理和輸出分開。MVC把應用程序分成三個核心模塊:模型、視圖和控制器,它們分別承擔不同的任務。其處理過程為:首先控制器接收用戶的請求,當Web用戶單擊頁面中的提交按鈕來發(fā)送HTML表單時,控制器接收請求并調(diào)用相應的模型構(gòu)件,并決定應該調(diào)用哪個模型來進行處理;然后模型根據(jù)用戶請求進行相應的業(yè)務邏輯處理,并返回數(shù)據(jù);最后控制器調(diào)用相應的視圖來格式化模型返回的數(shù)據(jù),并通過視圖呈現(xiàn)給用戶。圖3顯示了煤礦礦用設備安全監(jiān)測管理系統(tǒng)的功能以及它們之間的相互關(guān)系。
圖3 MVC設計模式
3.1.2 Struts框架
本系統(tǒng)采用Struts框架,Struts是基于MVC的Web應用框架,此框架可以提高軟件開發(fā)的速度和效率,并且使軟件更便于維護。
1)Struts實現(xiàn)MVC的機制。在Struts框架中,模型由實現(xiàn)業(yè)務邏輯的JavaBean組件構(gòu)成,控制器由Action Servlet和Action來實現(xiàn),視圖由一組JSP文件構(gòu)成。一個用戶請求是通過Action Servlet來處理和轉(zhuǎn)發(fā)的,這就需要一些描述用戶請求路徑和Action映射關(guān)系的配置信息了。在Struts中,這些配置映射信息都存儲在特定的XML文件struts-config.xml中。在該配置文件中,每一個Action的映射信息都通過一個〈action〉元素來配置。圖4顯示了Struts實現(xiàn)的MVC框架。
圖4 Struts實現(xiàn)的MVC框架
2)Struts的工作流程。對于采用Struts框架的Web應用,在Web應用啟動時就會加載并初始化 ActionServlet,ActionServlet 從 struts-config.xml文件中讀取設備配置信息,把它們存放到各種配置對象中,當ActionServlet接受到一個用戶請求時,其執(zhí)行過程如下:
a.檢索和各類用戶請求相匹配的ActionMapping實例,如果不存在,返回用戶請求路徑無效的消息;
b.如果ActionForm實例不存在,創(chuàng)建一個ActionForm對象,把煤礦用戶提交的表單數(shù)據(jù)保存到ActionForm對象中;
c.根據(jù)煤礦設備配置信息決定是否需要表單驗證。如需要,就調(diào)用ActionForm的validate()方法;
d.如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActionErrors對象,表示表單驗證成功;
e.ActionServlet根據(jù)ActionMapping對象,再把煤礦用戶請求轉(zhuǎn)發(fā)到ActionForward對象指向的JSP組件;
f.ActionForward指向的JSP組件生成動態(tài)網(wǎng)頁,返回給用戶。
對于上述流程的d,如果ActionForm的validate()方法返回包含一個或多個ActionMessage的ActionErrors對象,表示表單驗證失敗,此時ActionServlet將直接把請求轉(zhuǎn)發(fā)給包含各個用戶提交表單的JSP組件。
目前,對于刻面描述的構(gòu)件檢索主要以較傳統(tǒng)的數(shù)據(jù)庫檢索技術(shù)來實現(xiàn)。本系統(tǒng)采用的Web服務器系統(tǒng)平臺操作系統(tǒng)為Windows XP,Web服務器軟件采用了Tomcat6.0,數(shù)據(jù)庫采用SQL2000,通過動態(tài)網(wǎng)頁JSP技術(shù)(Struts技術(shù))與iBATIC框架技術(shù),實現(xiàn)數(shù)據(jù)庫的互聯(lián)。本研究的構(gòu)件存儲采用構(gòu)件信息與構(gòu)件實體分別存儲的方式,即構(gòu)件描述信息存入關(guān)系數(shù)據(jù)庫,構(gòu)件實體存入文件系統(tǒng),二者通過地址信息映射聯(lián)系[6]。開發(fā)環(huán)境刻面主要用于描述構(gòu)件的開發(fā)工具和開發(fā)語言,即兩個子刻面。開發(fā)工具子刻面說明了開發(fā)該構(gòu)件所使用的工具,開發(fā)語言表明了構(gòu)件的語言特性,主要體現(xiàn)在實體文件的擴展名上。
Myeclipse5.5.1平臺本身是一個相同的插件群集,其擴展功能是由各個獨立的插件提供,在此系統(tǒng)中把構(gòu)件平臺看作是一個封閉的系統(tǒng),它的運行必須以一個整體來進行。Myeclipse5.5.1允許定義對實現(xiàn)一個完整的擴展點描述和實現(xiàn)增加一個新的擴展點[4],主要操作為:a.將圖2上的構(gòu)件特性用XML語言進行描述,文件中的各種要素均以Myeclipse5.5.1為擴展點加以描述;b.把該描述文件放在任意一個插件子目錄下,其擴展名為exsd;c.新的擴展點就被擴展到原來的點中,新的構(gòu)件類型通過該擴展點就能被Myeclipse5.5.1平臺來管理了,從而實現(xiàn)了設備信息資源的共享。目前此系統(tǒng)通過在山西省某煤礦的試運行,初步使煤礦設備信息具有較強的融合能力,能對來自不同信息源的安全信息進行綜合管理和分析,實現(xiàn)對生產(chǎn)現(xiàn)場安全信息的快速反饋、動態(tài)跟蹤與閉環(huán)控制,提高對煤礦整體安全管理工作的監(jiān)控能力。
基于Myeclipse5.5.1平臺構(gòu)件的煤礦設備安全監(jiān)測系統(tǒng)可以獲得任何設備的狀態(tài)監(jiān)測信息、診斷等動態(tài)管理信息,幫助煤礦管理人員做出正確的決策;針對煤礦設備信息構(gòu)件的特點,采用了刻面分類表示的方法對構(gòu)件進行描述,為煤礦每個入庫設備信息構(gòu)件指定術(shù)語,對它進行描述。在進行檢索時,首先利用刻面分類對檢索條件進行預處理,對檢索條件進行加強與擴展,接下來引用處理后的條件進行檢索,將得到更符合用戶需求的返回結(jié)果,提高了對煤礦設備安全監(jiān)測信息的查全率和差準率,從而提高對煤礦整體安全管理工作的監(jiān)控能力。
[1] 楊芙清,梅宏,李克勤.軟件復用與軟件構(gòu)件技術(shù)[J].電子學報,1999,27(2):68-74.
[2] 常繼傳,李克勤,郭立峰.青鳥系統(tǒng)中可復用軟件構(gòu)件的表示與查詢[J].電子學報,2000,28(8):20-23.
[3] 徐瑋,尹寶林,李昭原.企業(yè)信息系統(tǒng)業(yè)務構(gòu)件設計研究[J].軟件學報,2003,14(7):1213-1220.
[4] 劉勇,劉虹.基于庫存管理領(lǐng)域的軟件復用技術(shù)[J].計算機工程,2007,33(21):270-272.
[5] 潘穎,趙俊峰,謝冰.構(gòu)件庫技術(shù)的研究與發(fā)展[J].計算機科學,2003,30(5):90-93.
[6] 黃凱.基于Eclipse體系的構(gòu)件開發(fā)管理平臺的設計實現(xiàn)[J].科學技術(shù)與工程,2005,5(14):995-997.
[7] 姚清耘.基于向量空間模型的中文文本聚類方法的研究[D].上海:上海交通大學,2008.
[8] 任姚鵬,陳立潮,張英俊,等.基于潛在語義分析的構(gòu)件聚類改進方法[J].計算機工程,2011,37(4):68-69.