彭 博,王 普,李亞芬
摘 要:軟件復(fù)用技術(shù)被認(rèn)為是解決軟件危機(jī)的有效方法,可以大幅度提高軟件開(kāi)發(fā)效率和質(zhì)量,其核心是建立可復(fù)用構(gòu)件庫(kù)系統(tǒng)。構(gòu)件庫(kù)系統(tǒng)最主要的問(wèn)題是如何對(duì)構(gòu)件進(jìn)行準(zhǔn)確描述和分類,以便更快、更準(zhǔn)地查找到用戶需要的構(gòu)件。在此采用刻面分類方法在Web應(yīng)用開(kāi)發(fā)領(lǐng)域中建立軟件構(gòu)件庫(kù),完成了構(gòu)件的定義和準(zhǔn)確描述及分類,確定了構(gòu)件的存儲(chǔ)模型,采用關(guān)鍵字檢索和刻面分類檢索兩種檢索方式,有效提高了檢索效率和準(zhǔn)確性,實(shí)現(xiàn)了在Web應(yīng)用開(kāi)發(fā)中對(duì)軟件復(fù)用的支持。
關(guān)鍵詞:Web應(yīng)用開(kāi)發(fā);構(gòu)件庫(kù);軟件復(fù)用;刻面分類
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)20-116-04
Design and Realization of Component Library System in Web Field
PENG Bo,WANG Pu,LI Yafen
(College of Electronic Information & Control Engineering,Beijing University of Technology,Beijing,100124,China)
Abstract:The software reuse is considered to be an effective way to solve the software crisis,which can greatly improve the efficiency and quality of software development,and the core of software reuse is to set up a reusable component library.The most important question of a component library system is how to describe components accurately and classification,in order that the users could search and get their needed components faster and more accurate.In this paper,it builds a component library based on the faceted classification method in the field of Web application development,which completes the definition of components,the accurate description and efficient classification,it determines the components storage model,using key words searching and facet classification searching,it greatly improves the searching efficiency and accuracy,realizes supports of software reuse in Web application development.
Keywords:Web application development;component library;software reuse;facet classification
0 引 言
目前采用Web形式開(kāi)發(fā)的軟件產(chǎn)品需求與日劇增,其規(guī)模和復(fù)雜度不斷增加,開(kāi)發(fā)和維護(hù)成本也不斷提高,傳統(tǒng)的Web開(kāi)發(fā)模式面臨著巨大的挑戰(zhàn)。人們?cè)谔剿餍萝浖_(kāi)發(fā)方法的過(guò)程中發(fā)現(xiàn),軟件復(fù)用(Software Reuse)將是解決這個(gè)問(wèn)題現(xiàn)實(shí)可行的途徑[1],而軟件復(fù)用的核心是建立可復(fù)用構(gòu)件庫(kù)系統(tǒng),實(shí)現(xiàn)軟件開(kāi)發(fā)人員的合理分工,提高軟件產(chǎn)品開(kāi)發(fā)效率,縮短開(kāi)發(fā)周期。軟件復(fù)用是在軟件開(kāi)發(fā)中避免重復(fù)勞動(dòng)的解決方案,其出發(fā)點(diǎn)是應(yīng)用系統(tǒng)的開(kāi)發(fā)不再采用一切“從零開(kāi)始”的模式,而是以已有的工作為基礎(chǔ),充分利用過(guò)去應(yīng)用系統(tǒng)開(kāi)發(fā)中積累的知識(shí)和經(jīng)驗(yàn)[2]。它的基本思想是借鑒現(xiàn)代工業(yè)生產(chǎn)中的標(biāo)準(zhǔn)構(gòu)件復(fù)用思想,通過(guò)公共的可復(fù)用構(gòu)件來(lái)集成新的軟件產(chǎn)品,其本質(zhì)上是運(yùn)用現(xiàn)存軟件系統(tǒng)的產(chǎn)品構(gòu)造新的軟件系統(tǒng),在軟件開(kāi)發(fā)中避免重復(fù)勞動(dòng)。國(guó)內(nèi)外軟件界對(duì)可復(fù)用軟件構(gòu)件庫(kù)系統(tǒng)及其相關(guān)技術(shù)進(jìn)行了深入的研究,并取得不少成果,比較有影響,例如北大青鳥(niǎo)構(gòu)件庫(kù)管理系統(tǒng)(JBCLMS)、REBOOT系統(tǒng),RIG及NATO標(biāo)準(zhǔn),ALOAF模型等。
在分析各類構(gòu)件庫(kù)系統(tǒng)的基礎(chǔ)上,針對(duì)Web應(yīng)用開(kāi)發(fā)領(lǐng)域,建立了原型構(gòu)件庫(kù)系統(tǒng),系統(tǒng)完成了用戶認(rèn)證授權(quán)、構(gòu)件添加、構(gòu)件修改、構(gòu)件刪除、構(gòu)件入庫(kù)以及下載、構(gòu)件檢索和維護(hù)等功能,以實(shí)現(xiàn)在Web應(yīng)用開(kāi)發(fā)過(guò)程中對(duì)軟件復(fù)用的支持,使基于軟件復(fù)用技術(shù)的Web應(yīng)用開(kāi)發(fā)人員可以快速有效地開(kāi)發(fā)各種Web應(yīng)用軟件,提高Web應(yīng)用軟件的開(kāi)發(fā)效率。
1 構(gòu)件庫(kù)系統(tǒng)的定義和職能
構(gòu)件庫(kù)系統(tǒng)是整個(gè)軟件復(fù)用的中介和核心,是可重用構(gòu)件的集合,并作為開(kāi)發(fā)可重用構(gòu)件和基于可重用構(gòu)件開(kāi)發(fā)這兩個(gè)生存周期的聯(lián)系體系[3]。具體地說(shuō),構(gòu)件庫(kù)是軟件構(gòu)件的基礎(chǔ)物質(zhì)倉(cāng)庫(kù),是分類和管理可復(fù)用構(gòu)件資產(chǎn)的基礎(chǔ)設(shè)施,它在構(gòu)件開(kāi)發(fā)人員和構(gòu)件使用人員之間起到了橋梁作用,如圖1所示。
圖1 構(gòu)件庫(kù)系統(tǒng)職能圖
構(gòu)件庫(kù)系統(tǒng)存儲(chǔ)并管理著大量的構(gòu)件,系統(tǒng)必須對(duì)這些構(gòu)件進(jìn)行有效的組織和管理,同時(shí)還需要為構(gòu)件庫(kù)系統(tǒng)使用者提供方便有效地構(gòu)件檢索工具,支持開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中方便檢索、理解和獲取構(gòu)件。構(gòu)件庫(kù)系統(tǒng)主要職能包括:構(gòu)件的選取、構(gòu)件的驗(yàn)證、構(gòu)件的描述和分類、構(gòu)件的入庫(kù)存儲(chǔ)、構(gòu)件的檢索、構(gòu)件庫(kù)系統(tǒng)的管理和維護(hù)、構(gòu)件庫(kù)系統(tǒng)的安全訪問(wèn)管理等。
2 構(gòu)件的定義以及存儲(chǔ)模型
2.1 構(gòu)件的定義
構(gòu)件來(lái)源于英文的“Component”,對(duì)構(gòu)件的定義一般來(lái)說(shuō),有廣義與狹義之分。廣義構(gòu)件是指可以被明確標(biāo)識(shí)的軟件制品,它可以是需求分析、設(shè)計(jì)、代碼、測(cè)試用例、文檔或軟件開(kāi)發(fā)過(guò)程中的其他產(chǎn)品。狹義軟件構(gòu)件是指具體的、可復(fù)用的、提供明確接口完成特定功能的程序代碼塊[4]。
鑒于Web開(kāi)發(fā)過(guò)程的特殊性,在此認(rèn)為在Web開(kāi)發(fā)各個(gè)階段的各種成果對(duì)于今后的復(fù)用工作都是非常有價(jià)值的,都應(yīng)當(dāng)作為可復(fù)用構(gòu)件存儲(chǔ),因此構(gòu)件定義為在Web應(yīng)用開(kāi)發(fā)過(guò)程中的一切有復(fù)用價(jià)值的產(chǎn)品。例如在系統(tǒng)設(shè)計(jì)前的需求文檔、系統(tǒng)的設(shè)計(jì)文檔、各種模塊實(shí)體代碼、測(cè)試階段的各種測(cè)試用例、各種圖片或者多媒體資料等,可見(jiàn)這里涉及的構(gòu)件的表現(xiàn)形式多樣,粒度大小差異明顯。
2.2 構(gòu)件的存儲(chǔ)模型
對(duì)于構(gòu)件的存儲(chǔ)方式,首先想到使用關(guān)系數(shù)據(jù)庫(kù)(RDBMS),其具有儲(chǔ)存和管理大量數(shù)據(jù)的高效性、理論的嚴(yán)密性和技術(shù)的成熟性。但是在實(shí)際應(yīng)用中,由于本文定義的構(gòu)件的結(jié)構(gòu)相對(duì)復(fù)雜,存在形式多種多樣,粒度大小多樣且尺度相差有時(shí)很懸殊,這與關(guān)系數(shù)據(jù)庫(kù)對(duì)所保存的數(shù)據(jù)項(xiàng)一般都有尺寸限制,不宜過(guò)大的要求不相符合。文件系統(tǒng)(Files)的存儲(chǔ)特點(diǎn)是存儲(chǔ)容量大,對(duì)存儲(chǔ)的數(shù)據(jù)體積無(wú)限制,存儲(chǔ)數(shù)據(jù)的形式也沒(méi)有要求,但文件系統(tǒng)的查詢效率低,不利于大量數(shù)據(jù)的存儲(chǔ)以及管理。因此,單一使用關(guān)系數(shù)據(jù)庫(kù)或者文件系統(tǒng)都不完全符合對(duì)構(gòu)件存儲(chǔ)的需要。
在該構(gòu)件庫(kù)系統(tǒng)中利用關(guān)系數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)構(gòu)件的信息部分,利用文件系統(tǒng)來(lái)存儲(chǔ)構(gòu)件的實(shí)體,并通過(guò)信息文件中的地址信息與構(gòu)件實(shí)體建立鏈接。其中,構(gòu)件信息中包含構(gòu)件的分類信息,即按照某種分類方式確定的分類信息;基本信息是指對(duì)構(gòu)件基本屬性的描述、構(gòu)件的說(shuō)明等,可增加對(duì)構(gòu)件理解的說(shuō)明文件,例如構(gòu)件的作者、入庫(kù)日期、下載次數(shù)、構(gòu)件說(shuō)明文件等;地址信息則是指對(duì)構(gòu)件實(shí)體實(shí)際存放位置的描述,如圖2所示。
圖2 構(gòu)件庫(kù)系統(tǒng)存儲(chǔ)模型
3 構(gòu)件庫(kù)系統(tǒng)的體系結(jié)構(gòu)
本文構(gòu)件庫(kù)系統(tǒng)基于瀏覽器/服務(wù)器(B/S)模式,采用Web多層結(jié)構(gòu),如圖3所示構(gòu)件庫(kù)系統(tǒng)分為三層結(jié)構(gòu):視圖層、業(yè)務(wù)層、數(shù)據(jù)層。
圖3 構(gòu)件庫(kù)系統(tǒng)體系結(jié)構(gòu)圖
視圖層主要完成系統(tǒng)與客戶的交互工作,當(dāng)客戶通過(guò)瀏覽器向指定的Web服務(wù)器發(fā)出申請(qǐng)時(shí),Web服務(wù)器將客戶端的申請(qǐng)?zhí)幚砗?把處理的相應(yīng)的內(nèi)容再傳送給客戶端瀏覽器。
業(yè)務(wù)層將視圖層提出的請(qǐng)求轉(zhuǎn)換為對(duì)數(shù)據(jù)層的請(qǐng)求,并將數(shù)據(jù)層返回的數(shù)據(jù)處理,最后提交視圖層。業(yè)務(wù)層負(fù)責(zé)完成各種應(yīng)用邏輯,在構(gòu)件庫(kù)系統(tǒng)中,業(yè)務(wù)邏輯層體現(xiàn)為構(gòu)件庫(kù)系統(tǒng)的主要功能和實(shí)現(xiàn),是構(gòu)件庫(kù)系統(tǒng)的核心。
數(shù)據(jù)層包括數(shù)據(jù)庫(kù)和及其服務(wù)與管理系統(tǒng),負(fù)責(zé)對(duì)從業(yè)務(wù)層傳來(lái)的數(shù)據(jù)進(jìn)行處理。并且對(duì)業(yè)務(wù)層屏蔽處理細(xì)節(jié),屏蔽的掉了底層數(shù)據(jù)庫(kù)系統(tǒng)的特殊性,使邏輯可以按照統(tǒng)一的接口訪問(wèn)庫(kù)中的數(shù)據(jù),提高整個(gè)系統(tǒng)的靈活性和可移植性。
用戶對(duì)數(shù)據(jù)的訪問(wèn)請(qǐng)求,通過(guò)視圖層的客戶端瀏覽器提供的用戶界面輸入,并經(jīng)業(yè)務(wù)層中業(yè)務(wù)邏輯轉(zhuǎn)換為對(duì)數(shù)據(jù)層的數(shù)據(jù)請(qǐng)求,數(shù)據(jù)層的服務(wù)器處理完請(qǐng)求后,將結(jié)果通過(guò)業(yè)務(wù)邏輯層,返回給視圖層由視圖層輸出顯示用戶所需的結(jié)果。構(gòu)件庫(kù)系統(tǒng)采用瀏覽器/服務(wù)器(B/S)模式及多層體系結(jié)構(gòu),有助于功能的獨(dú)立與系統(tǒng)的擴(kuò)展,同時(shí)降低了系統(tǒng)的復(fù)雜性和耦合度,并且使得系統(tǒng)更穩(wěn)定、方便擴(kuò)展、維護(hù)簡(jiǎn)單。
如圖3所示,本文構(gòu)件庫(kù)系統(tǒng)設(shè)置了兩類用戶,構(gòu)件庫(kù)使用人員和構(gòu)件庫(kù)管理人員,他們都通過(guò)友好的界面接口使用構(gòu)件庫(kù)系統(tǒng)的服務(wù)。其中構(gòu)件庫(kù)使用人員主要使用構(gòu)件檢索工具獲取自己感興趣或者需要的構(gòu)件,構(gòu)件檢索工具支持兩種檢索模式:關(guān)鍵字查詢以及刻面分類查詢。同時(shí)因?yàn)閷?duì)構(gòu)件理解最深刻的是構(gòu)件開(kāi)發(fā)人員本身,因此構(gòu)件管理工具可以讓構(gòu)件開(kāi)發(fā)人員添加和管理自己開(kāi)發(fā)的構(gòu)件。信息反饋工具可以讓構(gòu)件的使用者與該構(gòu)件的開(kāi)發(fā)者進(jìn)行交流,以便構(gòu)件的更新與改進(jìn),同時(shí)構(gòu)件庫(kù)使用人員也可以使用信息反饋工具與系統(tǒng)管理人員交流,討論構(gòu)件分類方式以及構(gòu)件庫(kù)系統(tǒng)管理等問(wèn)題。
構(gòu)件庫(kù)的管理人員有權(quán)限訪問(wèn)并管理所有構(gòu)件,并可以使用用戶管理工具對(duì)構(gòu)件庫(kù)系統(tǒng)所有用戶的信息以及權(quán)限進(jìn)行維護(hù)管理。由于Web開(kāi)發(fā)的技術(shù)日新月異,新技術(shù)、新術(shù)語(yǔ)不斷更新,構(gòu)件庫(kù)管理人員可以使用刻面術(shù)語(yǔ)管理工具動(dòng)態(tài)維護(hù)系統(tǒng)刻面及術(shù)語(yǔ)空間。信息發(fā)布工具主要用于發(fā)布系統(tǒng)通知信息及系統(tǒng)消息,構(gòu)件庫(kù)管理人員使用系統(tǒng)的文本編輯器編輯發(fā)布信息。
4 構(gòu)件庫(kù)分類方式以及構(gòu)件的描述
4.1 構(gòu)件庫(kù)分類方式的確定
構(gòu)件的表示、分類和檢索方法,決定了構(gòu)件庫(kù)系統(tǒng)的組織、管理,以及構(gòu)件庫(kù)系統(tǒng)的查詢和用戶對(duì)構(gòu)件的理解,是構(gòu)件庫(kù)系統(tǒng)研究的基礎(chǔ)性問(wèn)題,也是構(gòu)件庫(kù)系統(tǒng)的關(guān)鍵性問(wèn)題。對(duì)單個(gè)構(gòu)件的復(fù)用可以劃分為構(gòu)件的識(shí)別和檢索、構(gòu)件的理解和適應(yīng)性修改三部分,復(fù)用成本公式[5]為:
復(fù)用的成本=檢索成本+理解成本+修改成本
有效的檢索機(jī)制能大大降低構(gòu)件的檢索成本和理解成本,對(duì)構(gòu)件的分類就是為了高效方便的檢索,而構(gòu)件的分類最終體現(xiàn)在構(gòu)件的分類描述上。
Frakes W和Mili H分別對(duì)現(xiàn)有的構(gòu)件表示和檢索方法進(jìn)行分類。Mili按復(fù)雜度和檢索效果的遞增將其分為基于文本、基于詞法描述子的和基于規(guī)則的編碼和檢索三類。Frkaes W將現(xiàn)有的構(gòu)件表示方法分為人工智能方法、超文本方法、和基于庫(kù)科學(xué)/信息科學(xué)的方法[6]。
人工智能方法采用人工智能的學(xué)習(xí)和推理機(jī)制,來(lái)維護(hù)一個(gè)表示構(gòu)件的知識(shí)庫(kù)[7]。該方法采用構(gòu)件知識(shí)表示語(yǔ)言,來(lái)描述構(gòu)件的屬性及其特征和用于檢索構(gòu)件的知識(shí)。這種方法目前處于實(shí)驗(yàn)階段,還沒(méi)有得到廣泛應(yīng)用。
超文本方法使用超文本技術(shù),主要應(yīng)用于非線性關(guān)系的檢索領(lǐng)域,通過(guò)基于屬性的元模型鏈接為開(kāi)發(fā)人員提供一個(gè)有用的功能集合,從而找到可重用的構(gòu)件[8]。
基于各種形式化規(guī)格說(shuō)明的方法[9,10],需要使用專門的形式化規(guī)范語(yǔ)言對(duì)組件進(jìn)行全面細(xì)致的描述。當(dāng)查找構(gòu)件時(shí),系統(tǒng)會(huì)對(duì)兩個(gè)構(gòu)件進(jìn)行完整的匹配,這樣的查詢方式具有較高的查準(zhǔn)率,能夠滿足大型構(gòu)件庫(kù)系統(tǒng)的檢索要求。但是形式化規(guī)范語(yǔ)言的復(fù)雜性,使這種方法的廣泛應(yīng)用受到了很大的限制。
在實(shí)際的構(gòu)件庫(kù)系統(tǒng)中,往往采用基于庫(kù)科學(xué)/信息科學(xué)的表示方法[11]。信息科學(xué)方法又分為基于受控詞匯表(如枚舉、刻面)分類和基于不受控詞匯表分類兩種形式,其中以關(guān)鍵詞分類(Keyword)和刻面分類(Faceted)兩種應(yīng)用最多?,F(xiàn)在的大型通用構(gòu)件庫(kù)系統(tǒng)應(yīng)用較為普遍的也是刻面分類方式,例如REBOOT模型從抽象、操作、操作對(duì)象、依賴四個(gè)刻面對(duì)構(gòu)件進(jìn)行描述,青鳥(niǎo)構(gòu)件庫(kù)也是采用以刻面分類為主、多種分類模式相結(jié)合的方法對(duì)構(gòu)件進(jìn)行分類描述[12]。
通過(guò)對(duì)上文中介紹的幾種查詢方法進(jìn)行比較分析,結(jié)合Web應(yīng)用系統(tǒng)組件庫(kù)查詢的特殊性,確定使用刻面分類法對(duì)組件進(jìn)行描述和分類,如表1所示,本文確定四個(gè)主要刻面:
(1) 功能描述(Function Description):描述構(gòu)件的具體實(shí)現(xiàn)功能;
(2) 層次形態(tài)(Level & State):描述構(gòu)件在軟件開(kāi)發(fā)過(guò)程中所處的層次階段及構(gòu)件的具體形態(tài);
(3) 開(kāi)發(fā)環(huán)境(Develop Environment):描述構(gòu)件的開(kāi)發(fā)工具以及開(kāi)發(fā)語(yǔ)言;
(4) 應(yīng)用環(huán)境(Application Environment):描述構(gòu)件在使用的時(shí)候所需要的環(huán)境,包括操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、Web服務(wù)器。
表1 構(gòu)件分類描述具體刻面及術(shù)語(yǔ)
刻面名稱子刻面名稱術(shù)語(yǔ)舉例
功能描述無(wú)用戶管理、信息發(fā)布、統(tǒng)計(jì)計(jì)數(shù)、數(shù)據(jù)庫(kù)、人機(jī)交互、上傳下載等
層次形態(tài)層次描述形態(tài)描述分析、設(shè)計(jì)、編碼、測(cè)試等文本、圖片、代碼、功能模塊等
開(kāi)發(fā)環(huán)境開(kāi)發(fā)語(yǔ)言開(kāi)發(fā)工具HTML,Java,jsp,.Net,Asp等Eclipse,Photoshop,VisualStudio等
應(yīng)用環(huán)境操作系統(tǒng)WebServer數(shù)據(jù)庫(kù)Windows,Linux,Unix,Solaris等Tomcat,WebSphere,Apache 等MySQL,Oracle,PostgreSQL等
4.2 構(gòu)件分類描述的實(shí)例
根據(jù)上文確定的刻面分類模式,舉一個(gè)構(gòu)件描述的具體實(shí)例:假設(shè)構(gòu)件(ID=0001)是用于用戶登錄的模塊,其功能描述為用戶管理(User Manage),層次已處于測(cè)試階段(Testing),形態(tài)為代碼(Code)、是使用開(kāi)發(fā)工具(Eclipse)開(kāi)發(fā)的開(kāi)發(fā)語(yǔ)言為(Java),其部署環(huán)境為操作系統(tǒng)(Linux)、Web服務(wù)器(Tomcat)、數(shù)據(jù)庫(kù)(MySql),構(gòu)件相應(yīng)的XML描述如下: