摘 要: 運(yùn)用了構(gòu)建ARMS(Asset Repository Management System)平臺(tái)的重要基礎(chǔ)設(shè)施——多級(jí)資源庫(kù),為企業(yè)級(jí)資源的積累、復(fù)用、錘煉提供了基本的工具保障。介紹了軟件復(fù)用技術(shù),提出了一種能快速進(jìn)行軟件開發(fā)的新型解決方案。詳細(xì)分析了多級(jí)資源庫(kù)的體系結(jié)構(gòu)、ARMS系統(tǒng)平臺(tái)的功能及相關(guān)技術(shù),從資源開發(fā)、版本發(fā)布、反饋處理等方面研究了ARMS系統(tǒng)平臺(tái)的應(yīng)用。實(shí)踐表明,多級(jí)資源庫(kù)ARMS平臺(tái)的研究與開發(fā),有效地解決了軟件資產(chǎn)的復(fù)用和安全管理問題,提高軟件復(fù)用率,加快軟件開發(fā)速度。給出了實(shí)踐項(xiàng)目中ARMS平臺(tái)軟件開發(fā)的流程圖。
關(guān)鍵詞: ARMS平臺(tái);多級(jí)資源庫(kù);復(fù)用;軟件復(fù)用技術(shù);資源開發(fā)
ARMS(Asset Repository Management System)是一個(gè)資源庫(kù)管理系統(tǒng)平臺(tái),通過這個(gè)平臺(tái)對(duì)資源庫(kù)中的資源進(jìn)行有效地管理和使用,提高了企業(yè)開發(fā)人員的工作效率,改善了用戶的使用效率。ARMS這一平臺(tái)提供了軟件開發(fā)的綜合解決方案,能夠提高開發(fā)效率,簡(jiǎn)化繁瑣流程,保證產(chǎn)品的穩(wěn)定性、可用性。新的軟件開發(fā)過程模型的各個(gè)階段都是圍繞著可復(fù)用軟件資源實(shí)施的,因此合理而有效地使用資源庫(kù)是軟件資產(chǎn)復(fù)用成功的關(guān)鍵。
軟件復(fù)用技術(shù)是軟件工程領(lǐng)域的一個(gè)研究熱點(diǎn)。復(fù)用概念的第一次引入是在1968年NATO軟件工程會(huì)議上,Mcllroy的論文“大量生產(chǎn)的軟件構(gòu)件”中[1]。隨著復(fù)用實(shí)踐的深入,將會(huì)積累大量自主開發(fā)的資源、購(gòu)買的商業(yè)資源和其他組織開發(fā)的資源,這些可復(fù)用資源構(gòu)成了龐大的企業(yè)資產(chǎn),而資源庫(kù)作為分類和管理軟件資產(chǎn)的基礎(chǔ)設(shè)施就變得十分重要了。在資源庫(kù)的支持下,直接使用已有的合格的資源開發(fā)應(yīng)用系統(tǒng),避免了對(duì)資源的重復(fù)開發(fā),從而提高軟件開發(fā)效率和軟件質(zhì)量。軟件資源庫(kù)作為管理軟件資源及促進(jìn)軟件復(fù)用的核心機(jī)制,將基于復(fù)用的開發(fā)和面向復(fù)用的開發(fā)過程與工具集成在一個(gè)統(tǒng)一的框架中,當(dāng)前軟件界對(duì)可復(fù)用資源庫(kù)及其相關(guān)問題進(jìn)行了深入研究,并取得不少成果[2]。
本文為了有效地解決軟件資產(chǎn)的復(fù)用和安全管理問題,采用多級(jí)資源庫(kù),避免了獨(dú)立庫(kù)綜合性差的缺陷,對(duì)于深層次的科學(xué)研究,它所提供的不是單一的信息,而是一個(gè)系統(tǒng)的立體資源、信息群。
1 軟件復(fù)用
1.1 軟件復(fù)用技術(shù)
軟件復(fù)用是指利用現(xiàn)有的軟件資源來構(gòu)造新的軟件系統(tǒng)。該軟件成分可能是已有的資源,也可能是專門開發(fā)設(shè)計(jì)的可復(fù)用的軟件資源。其中,可復(fù)用的現(xiàn)有軟件成分是軟件復(fù)用技術(shù)的核心。復(fù)用成分的獲取、管理和利用是構(gòu)成軟件復(fù)用技術(shù)的三個(gè)基本要素[3]。
1.2 軟件復(fù)用的優(yōu)點(diǎn)[4]
實(shí)踐證明,軟件復(fù)用可以有效提高軟件開發(fā)效率和軟件質(zhì)量,是解決“軟件危機(jī)”的一條比較切實(shí)可行的途徑。軟件復(fù)用的優(yōu)點(diǎn)可歸納為以下六個(gè)方面:
(1)提高軟件生產(chǎn)率:軟件復(fù)用最明顯的好處在于提高生產(chǎn)率,減少開發(fā)代價(jià)。生產(chǎn)率的提高不僅體現(xiàn)在代碼開發(fā)階段,同樣適用于分析、設(shè)計(jì)及測(cè)試等其他階段。
(2)提高軟件質(zhì)量:使用高度優(yōu)化、在實(shí)踐中經(jīng)受過檢驗(yàn)的可復(fù)用構(gòu)架、資源構(gòu)造系統(tǒng),可以提高系統(tǒng)的性能和可靠性。
(3)減少系統(tǒng)維護(hù)量:使用優(yōu)化、檢驗(yàn)過的資源,避免了很多可能發(fā)生的錯(cuò)誤;而多個(gè)系統(tǒng)間資源的重復(fù)使用,同時(shí)減少了系統(tǒng)維護(hù)量。
(4)提高互操作性:軟件復(fù)用的更為專業(yè)化的好處在于提高了系統(tǒng)間的互操作性。相同的構(gòu)架、接口可以有效地實(shí)現(xiàn)系統(tǒng)間的互操作。
(5)支持快速原型:利用可復(fù)用資源庫(kù)可以快速有效地構(gòu)造應(yīng)用系統(tǒng)的原型,以獲得用戶對(duì)系統(tǒng)功能的反饋,縮短系統(tǒng)的開發(fā)周期。
(6)減少培訓(xùn)開銷:使用相同的構(gòu)架、資源構(gòu)造和實(shí)施不同的系統(tǒng),可以使開發(fā)和維護(hù)人員減少對(duì)不同技術(shù)所需要的培訓(xùn)。
2 多級(jí)資源庫(kù)及ARMS系統(tǒng)平臺(tái)
2.1 多級(jí)資源庫(kù)的體系結(jié)構(gòu)
本文采用多級(jí)資源庫(kù),為方便對(duì)資源庫(kù)中的資源進(jìn)行管理和使用,必須采用合理的權(quán)限管理方案,即采用多級(jí)資源庫(kù)的三級(jí)權(quán)限管理模式:對(duì)資源設(shè)置檢索、使用(下載執(zhí)行碼和使用文檔)、獲取源碼三級(jí)權(quán)限。通過使用合理的權(quán)限管理模式,更好地解決了軟件資產(chǎn)復(fù)用的問題,保證了資源庫(kù)中軟件資產(chǎn)的安全管理。整個(gè)資源庫(kù)體系分為公司級(jí)資源庫(kù)和項(xiàng)目級(jí)資源庫(kù),公司級(jí)資源庫(kù)滿足企業(yè)整體資源共享管理的需要,項(xiàng)目級(jí)資源庫(kù)滿足項(xiàng)目團(tuán)隊(duì)共享資源的需要。多級(jí)資源庫(kù)體系的基于角色的用戶管理機(jī)制,使系統(tǒng)具有靈活的權(quán)限分配和安全的控制方式。對(duì)開源資源不控制訪問權(quán)限,公司級(jí)資源庫(kù)起到遠(yuǎn)程代理功能。多級(jí)資源庫(kù)體系結(jié)構(gòu)如圖1所示。

2.2 ARMS系統(tǒng)平臺(tái)的功能及相關(guān)技術(shù)
2.2.1 對(duì)資源存儲(chǔ)、檢索、升級(jí)、反饋的服務(wù)與管理
資源庫(kù)為資源的存儲(chǔ)而開發(fā),為了更好地讓軟件開發(fā)者發(fā)現(xiàn)和使用資源,ARMS系統(tǒng)平臺(tái)提供了相應(yīng)的資源分類組織、檢索、升級(jí)以及反饋等功能。同時(shí)由于資源庫(kù)系統(tǒng)的開放性,相應(yīng)的權(quán)限管理和維護(hù)功能也是必不可少的[5]。
(1)資源存儲(chǔ):新的資源經(jīng)過測(cè)試審核合格后提交到資源庫(kù)中供用戶使用,資源庫(kù)中存儲(chǔ)的不僅僅是軟件實(shí)體本身,還應(yīng)該包括軟件附帶的相應(yīng)屬性取值和描述信息,資源的描述信息中包含有描述依賴關(guān)系和相關(guān)文檔等。ARMS系統(tǒng)平臺(tái)必須實(shí)現(xiàn)詳細(xì)記錄資源描述信息的存儲(chǔ)方案,對(duì)新添加資源的描述信息進(jìn)行整理和規(guī)范化,以方便資源庫(kù)的存儲(chǔ)管理。
(2)資源檢索:資源的檢索是ARMS系統(tǒng)平臺(tái)的核心功能,提供較好的基于分類的資源檢索能力,實(shí)現(xiàn)合適的檢索方案。采用用戶最常使用的檢索工具,盡量減輕用戶的操作負(fù)擔(dān),并且能夠?qū)z索到的資源查看其相應(yīng)的功能說明、描述信息及文檔等,縮短檢索時(shí)間,實(shí)現(xiàn)高效的查詢。當(dāng)檢索資源時(shí),首先檢索本地資源,即項(xiàng)目級(jí)資源,如果資源不存在則進(jìn)行公司級(jí)檢索,最后檢索外部資源庫(kù),達(dá)到資源歸類及共享使用的效果。
(3)資源升級(jí):通過持續(xù)集成服務(wù)來完成版本升級(jí)功能,采用Hudson作為持續(xù)集成工具。Hudson根據(jù)配置文件的內(nèi)容,定時(shí)從版本控制庫(kù)中提取資源,一旦發(fā)現(xiàn)內(nèi)容有變更,就調(diào)用持續(xù)構(gòu)建文件執(zhí)行構(gòu)建工作。然后進(jìn)行相應(yīng)的初始化、編譯、打包等工作,完成版本升級(jí)處理。
(4)資源使用情況反饋:對(duì)資源進(jìn)行存儲(chǔ)以后需要對(duì)其進(jìn)行使用和評(píng)價(jià),考慮到資源在實(shí)際應(yīng)用中可能出現(xiàn)不適應(yīng)性的問題,增加了資源使用的反饋機(jī)制,使用者可以對(duì)資源的應(yīng)用情況提交相應(yīng)的反饋意見,對(duì)資源的正確性、可靠性、實(shí)時(shí)性等進(jìn)行評(píng)價(jià),從而為資源的升級(jí)和修改提供依據(jù)[5]。
2.2.2 相關(guān)技術(shù)
本文ARMS系統(tǒng)平臺(tái)主要采用Maven技術(shù),Maven作為Apache的一個(gè)開源項(xiàng)目,旨在給項(xiàng)目管理提供更多的支持。
Maven的基本原理很簡(jiǎn)單,采用遠(yuǎn)程資源庫(kù)(Remote Repository)和本地資源庫(kù)(Local Repository)以及一個(gè)類似build.xml 的pom.xml,將pom.xml中定義的jar文件從遠(yuǎn)程資源庫(kù)下載到本地資源庫(kù),各個(gè)應(yīng)用使用同一個(gè)本地資源庫(kù)的jar,同一個(gè)版本的jar只需下載一次,而且避免每個(gè)應(yīng)用都去拷貝jar。Maven基本原理框架結(jié)構(gòu)如圖2所示。同時(shí)它采用了現(xiàn)在流行的插件體系架構(gòu),只保留最小的核心,其余功能都通過插件的形式提供,所以Maven下載很小,在執(zhí)行Maven任務(wù)時(shí),才會(huì)自動(dòng)下載需要的插件[6]。

要?jiǎng)?chuàng)建遠(yuǎn)程資源庫(kù),只需將這個(gè)資源庫(kù)的目錄部署在網(wǎng)站中。Maven 建議使用遠(yuǎn)程資源庫(kù)以便于集中維護(hù),最大程度地實(shí)現(xiàn)項(xiàng)目之間資源的共享。為避免每次構(gòu)建時(shí)都要下載文件,Maven 在首次下載必需的相關(guān)性資源時(shí)就自動(dòng)地將其高速緩存在本地資源庫(kù)中。
3 多級(jí)資源庫(kù)ARMS平臺(tái)的應(yīng)用
針對(duì)傳統(tǒng)開發(fā)模式存在不停地更換程序中的JAR 包、需要了解各種依賴關(guān)系和版本號(hào)、明知重復(fù)開發(fā)的東西但卻不知如何獲得它的復(fù)用、涉足一個(gè)新行業(yè)領(lǐng)域后無從下手只能從零開始等問題,開發(fā)了ARMS系統(tǒng)平臺(tái)。利用這個(gè)ARMS系統(tǒng)平臺(tái)能夠更好地復(fù)用已有的軟件資源,開發(fā)出新的產(chǎn)品,有效地解決了當(dāng)前開發(fā)中的棘手問題,加快了開發(fā)速度。
3.1 資源開發(fā)
在對(duì)資源庫(kù)系統(tǒng)中的資源進(jìn)行開發(fā)組裝時(shí),總會(huì)涉及資源間的關(guān)系關(guān)聯(lián)問題。例如,資源A的實(shí)現(xiàn)依賴于資源B,則在用A進(jìn)行組裝模塊時(shí),必然用到資源B。ARMS系統(tǒng)平臺(tái)主要采用Maven構(gòu)建工具開發(fā)軟件資源,Maven技術(shù)能夠?qū)崿F(xiàn)資源批量導(dǎo)入導(dǎo)出,利用本地資源庫(kù)中的資源進(jìn)行開發(fā),盡量避免使用依賴資源,保證依賴資源的自動(dòng)獲取和升級(jí)更新,減少代碼庫(kù)的積存。
3.2 版本發(fā)布
開發(fā)擁有多個(gè)模塊的應(yīng)用程序時(shí),在某些情況下每個(gè)模塊的更新都很頻繁,需要不斷地獲取最新子模塊。構(gòu)建系統(tǒng)需要以簡(jiǎn)單的方式來實(shí)時(shí)更新。Maven中快照是通過持續(xù)集成服務(wù)器來獲得最新源代碼生成的產(chǎn)品。定義一個(gè)快照版本意味著Maven將尋找最新的依賴。默認(rèn)情況下Maven會(huì)按日生成一次快照。當(dāng)定義了一個(gè)非快照的依賴,Maven將會(huì)下載依賴一次而不會(huì)再去獲取它。
ARMS平臺(tái)的版本發(fā)布階段,首先從源碼庫(kù)中提交代碼到持續(xù)集成服務(wù)器中,通過持續(xù)構(gòu)建,每日一次迭代形成小版本發(fā)布即為快照版本,然后通過測(cè)試人員的檢測(cè)并匯總變更記錄,進(jìn)而快速迭代形成穩(wěn)定發(fā)布版本,在此過程中采用雙重迭代方法。版本發(fā)布流程如圖3所示。

3.3 反饋處理
隨著資源庫(kù)系統(tǒng)的不斷發(fā)展和網(wǎng)上資源庫(kù)的不斷完善,可能在不同的地理位置存在著多個(gè)資源庫(kù),這些資源庫(kù)可以是同構(gòu)或異構(gòu), 相應(yīng)的有各自對(duì)應(yīng)的反饋信息,通過提取工具和轉(zhuǎn)換、集成工具,可以將各個(gè)信息源中的數(shù)據(jù)方便地集成到中央的統(tǒng)一信息庫(kù)中,用戶只需訪問該中央信息庫(kù)即可[7]。新版本的發(fā)布是否可行需要得到用戶的信息反饋,資源的后期度量是基于復(fù)用者的反饋信息。如何收集用戶反饋數(shù)據(jù),進(jìn)行合理的組織,也是亟須解決的問題。首先應(yīng)通過用戶提交的反饋信息擬定新的需求;然后制定迭代計(jì)劃,在哪個(gè)版本解決哪些缺陷,添加哪些新功能,制定相應(yīng)的線路圖;然后通過開發(fā)者開發(fā)的新版本,測(cè)試并發(fā)布。
4 ARMS平臺(tái)支撐軟件開發(fā)流程圖
ARMS平臺(tái)支撐軟件開發(fā)的流程圖如圖4所示。

ARMS平臺(tái)支撐軟件開發(fā)的優(yōu)越性:對(duì)于開發(fā)人員,ARMS系統(tǒng)平臺(tái)提供的是一種更便捷、更高效、更輕松的研發(fā)解決方案,通過配置一個(gè)文件獲得整個(gè)項(xiàng)目的管理:(1)約定優(yōu)于配置的理念,在一個(gè)約定好的環(huán)境和規(guī)則下做游戲,ARMS提供的開發(fā)方案中就是基于Maven的這種概念;(2)開發(fā)過程中清楚版本的概念很重要,這是提升產(chǎn)品質(zhì)量的基礎(chǔ),而基于構(gòu)件的開發(fā)正是以此為出發(fā)點(diǎn)對(duì)項(xiàng)目中的依賴包進(jìn)行依賴管理和配置;(3)配置好依賴,在這之后可以隨需添加,剩下的事情只需交給ARMS去做,開發(fā)人員只專注于開發(fā)工作而不是被復(fù)雜混亂的依賴所累。
利用ARMS平臺(tái)進(jìn)行軟件開發(fā),充分使用了資源庫(kù)中的資源,大大提高了軟件資源的復(fù)用率。若采用傳統(tǒng)的系統(tǒng)開發(fā)方法,同樣規(guī)模的軟件需要更大的工作量,而通過使用新的開發(fā)方法,使其開發(fā)更靈活,效率更高;減少了開發(fā)時(shí)間及成本,提高了軟件開發(fā)效率和產(chǎn)品的質(zhì)量,減少了系統(tǒng)的維護(hù)代價(jià)。
論文研究的多級(jí)資源庫(kù)給項(xiàng)目開發(fā)提供了一個(gè)切實(shí)的基礎(chǔ),基于這一工具開發(fā)的ARMS系統(tǒng)平臺(tái)能夠克服傳統(tǒng)開發(fā)方法的不足,提高軟件資源的復(fù)用率,加快軟件開發(fā)的速度。通過公司項(xiàng)目實(shí)踐,利用ARMS系統(tǒng)平臺(tái)進(jìn)行軟件開發(fā),基于軟件復(fù)用驗(yàn)證了新的開發(fā)方法的可行性;由于軟件資源開發(fā)設(shè)計(jì)范圍廣,本文利用ARMS系統(tǒng)平臺(tái)支撐開發(fā)軟件的開發(fā)模式還存在許多不足之處,希望能根據(jù)需求在以后的實(shí)踐中完善。
參考文獻(xiàn)
[1] HAFENDH M, FATMA M, ALI M. Reusing software:Issues and research directions[J].IEEE Transactions on Software Engineering,1995, 21(6):528-562.
[2] 賈曉輝.可復(fù)用構(gòu)件庫(kù)及其檢索技術(shù)的研究與應(yīng)用[D].上海:東華大學(xué),2005.
[3] 張秀愛.軟件復(fù)用技術(shù)研究[J]. 電腦知識(shí)與技術(shù),2008,3(6):1214-1215.
[4] 郭立峰,郭耀,常繼傳.NATO軟件復(fù)用標(biāo)準(zhǔn)簡(jiǎn)介[M].北京:北京大學(xué)出版社,2005.
[5] 杜建偉,顧斌.基于流程的構(gòu)件庫(kù)管理系統(tǒng)及其實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007(8):16-19.
[6] 張清立.Maven的基本原理和Maven2的新特性[EB/OL].http://blog.csdn.net/zql2002/archive/2008/06/12/2537502.aspx,2008.
[7] 王希辰.數(shù)據(jù)倉(cāng)庫(kù)技術(shù)與可復(fù)用構(gòu)件庫(kù)系統(tǒng)研究[J].中國(guó)傳煤大學(xué)學(xué)報(bào)(自然科學(xué)版), 2006,13(2):68-73.
