專利名稱:基于面向方面的構(gòu)件庫構(gòu)建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于面向方面的構(gòu)件庫構(gòu)建方法,屬于軟件工程技術(shù)領(lǐng)域。
背景技術(shù):
軟件構(gòu)件是軟件系統(tǒng)中具有獨立功能,可以明確標識,借口由規(guī)約指定,與語境有明顯依賴關(guān)系,可獨立部署和組裝的軟件實體。軟件人員在開發(fā)軟件時可大量復用這些構(gòu)件,從而降低軟件的開發(fā)和維護費用,提高軟件的生產(chǎn)率?;跇?gòu)件的軟件開發(fā)已經(jīng)成為軟件開發(fā)的主流技術(shù)。但隨著軟件系統(tǒng)規(guī)模和復雜性的逐步增加,系統(tǒng)各個構(gòu)件中間的相互影響變得更加復雜。這些相互影響可能會限制軟件的重用性和可擴展性,并使使系統(tǒng)的正確性和可維護性變差,傳統(tǒng)的在操作系統(tǒng)或者中間件上直接進行軟件開發(fā)的模式,受到了極大的挑戰(zhàn)。
為了解決這一問題,我國發(fā)明專利,專利號為200710195613的“一種基于構(gòu)件的領(lǐng)域基礎(chǔ)業(yè)務平臺及其構(gòu)建方法”,在原有的通用橫向構(gòu)件設(shè)計平臺基礎(chǔ)上(如惠普公司的EOS提供了頁面構(gòu)件、展現(xiàn)構(gòu)件、控制構(gòu)件等),公開了一種領(lǐng)域內(nèi)通用的縱向構(gòu)件庫的構(gòu)建方法。該方法具有根據(jù)輸入領(lǐng)域內(nèi)通用基本功能描述集,按照規(guī)定的構(gòu)件劃分規(guī)則實現(xiàn)構(gòu)件聚類和查詢的功能。但如果將一個復雜的系統(tǒng)看作是由多個關(guān)注點的組合實現(xiàn),則上述專利方法的構(gòu)件庫只包含了核心業(yè)務關(guān)注點模塊,即該構(gòu)件庫只滿足各個業(yè)務子系統(tǒng)的構(gòu)建。而橫切關(guān)注點,即各個業(yè)務子系統(tǒng)都可能涉及的一些公共需求,例如日志記錄、安全性、數(shù)據(jù)存儲、授權(quán)、錯誤檢查等,則在構(gòu)件庫中未有體現(xiàn)。例如,在系統(tǒng)開發(fā)后期,用戶提出需要在系統(tǒng)的各個子系統(tǒng)內(nèi)部實現(xiàn)錯誤檢查,上述專利方法是編寫一個錯誤檢查的超類,在各個子系統(tǒng)中繼承、實現(xiàn)。不但代碼的修改量很大,而且無疑會增加出錯的概率。正因為橫切關(guān)注點可能要跨越多個模塊,同是又必須便于修改、維護和更新,應用程序開發(fā)者在進行基于構(gòu)件軟件開發(fā)時不僅需要專注于業(yè)務邏輯的視線,還需要熟悉這些橫切關(guān)注點,對其API進行編程,使代碼的復用性變差。
發(fā)明內(nèi)容
本發(fā)明就是針對上述問題提出來的,目的是提供一種基于面向方面的構(gòu)件庫構(gòu)建方法,實現(xiàn)了核心業(yè)務關(guān)注點和橫切關(guān)注點的構(gòu)件化。為實現(xiàn)上述目的,本發(fā)明解決技術(shù)問題的技術(shù)方案是
(1)輸入源代碼文件,并將源代碼信息入庫;
(2)構(gòu)造方面管理器,從源代碼信息庫中提取類信息,并根據(jù)從方面規(guī)劃庫中提取方面組件進行編織,最終得到方面構(gòu)件庫;
(3)語義規(guī)則庫查詢提供語義知識作,方面規(guī)則庫提供的領(lǐng)域知識,這二者作為查詢時語義推理的依據(jù),由此實現(xiàn)構(gòu)件查詢機制;
(4)由于查詢是基于語義推理的,查詢后對查詢結(jié)果進行排序評價,并根據(jù)查詢匹配度向用戶進行構(gòu)件推薦。
本發(fā)明與現(xiàn)有技術(shù)相比具有下述優(yōu)點效果
(1)由于面向方面的出現(xiàn)就是為解決橫切關(guān)注點問題,因此,本發(fā)明使用面向方面的構(gòu)件庫首先帶來的好處就是可以模塊化橫切關(guān)注點,由此也使得代碼有良好的可重用性;
(2)使用面向方面構(gòu)件庫可以解決代碼分散和代碼混亂問題,本發(fā)明使面向?qū)ο蟮拇a結(jié)構(gòu)經(jīng)過方面管理器將轉(zhuǎn)化為面向方面的代碼結(jié)構(gòu),這使得基于構(gòu)件開發(fā)的系統(tǒng)代碼冗余小,也易于理解和維護;
(3)由于橫切關(guān)注點對于方面來說是透明的,本發(fā)明很容易通過建立新的方面加入新的功能。另外當往系統(tǒng)中加入新的模塊時,己有的方面自動橫切進來,使系統(tǒng)易于擴展。(4)為了使方面構(gòu)件庫能夠靈活地隨著領(lǐng)域知識的演化而查詢效率不降低,本發(fā)明建立了語義規(guī)則庫,提供了基于語義推理的查詢機制,實現(xiàn)了高效智能管理方面構(gòu)件庫方案。
圖I基于面向方面的構(gòu)件庫構(gòu)建及查詢過程示意圖。圖2方面管理器結(jié)構(gòu)示意圖。圖3基于面向方面的模塊結(jié)構(gòu)轉(zhuǎn)化實例示意圖。
具體實施例方式下面參見本發(fā)明的附圖并結(jié)合具體實施例對本發(fā)明進行進一步詳細說明,但本發(fā)明的保護范圍不受具體的實施例所限制,以權(quán)利要求書為準。另外,以不違背本發(fā)明方案的前提下,對本發(fā)明所作的本領(lǐng)域普通技術(shù)人員容易實現(xiàn)的任何改動或改變都將落入本發(fā)明的權(quán)利要求范圍之內(nèi)。參見附圖1,本發(fā)明包括以下步驟
第一步,軟件產(chǎn)品入庫。對源代碼文件進行掃描,并將源代碼信息輸入源代碼信息庫;第二步,知識庫建立。根據(jù)語義知識、領(lǐng)域知識和源代碼信息,分別構(gòu)建語義規(guī)則庫、方面規(guī)則庫和方面構(gòu)件庫。本步驟的具體過程描述如下
(1)對源代碼信息庫的代碼信息進行解析,提取代碼信息中的類。具體過程為對源代碼進行語法解析;提取代碼信息的語法樹;對語法樹進行語義解析;獲得代碼信息中的類;
(2)參見附圖2,運用方面規(guī)則庫配置并管理基于該領(lǐng)域的基于方面的組件群,該組件群中體現(xiàn)了該系統(tǒng)的全部核心業(yè)務關(guān)注點和橫切關(guān)注點;
(3)參見附圖2,使用編織機制,將代碼信息中的類信息分解,將類的核心功能和橫切關(guān)注點功能分離,分離后的程序代碼結(jié)構(gòu)參見附圖3。最終,形成方面構(gòu)件庫。語義規(guī)則庫的建立,是在分析用戶可能提出的模糊概念的查詢,設(shè)計語義知識并由此建立語義規(guī)則庫,該規(guī)則庫中包括蘊涵規(guī)則知識、兼容規(guī)則知識、方面規(guī)則知識等。方面規(guī)則庫的建立,是根據(jù)領(lǐng)域知識得到的,這里包括該系統(tǒng)的全部核心業(yè)務關(guān)注點和橫切關(guān)注點。領(lǐng)域知識是該領(lǐng)域功能的描述集,對每個功能的描述包括功能編號、所屬領(lǐng)域、所屬方面、版本號、功能描述、業(yè)務對象、備份。對于一些特殊屬性還可填寫且他內(nèi)容,如關(guān)聯(lián)關(guān)系、申報部門等。方面構(gòu)建庫的建立,是在方面規(guī)則下對源代碼信息編織后得到的。這里的面向方面的構(gòu)件包括代碼和接口描述信息,其中每個構(gòu)件的接口描述包括構(gòu)件編號、所屬方面、接口名稱、服務的功能描述、輸入?yún)?shù)、輸出參數(shù)、返回值、構(gòu)件提供者、版本號、關(guān)鍵字。第三步,實現(xiàn)用戶的智能查詢。本步驟的具體過程描述如下
(1)用戶輸入查詢關(guān)鍵字,系統(tǒng)利用語義規(guī)則庫和方面規(guī)則庫對輸入關(guān)鍵字進行語義推理,進行匹配度計算;
(2)根據(jù)匹配度到方面構(gòu)件庫里進行構(gòu)件查找;
(3)對查找到的結(jié)構(gòu)進行排序評價;
(4)向用戶推薦匹配度高的一個或多個構(gòu)件,允許用戶從方面構(gòu)件庫中下載相關(guān)構(gòu)件 實體。完成以上步驟,可以實現(xiàn)基于面向方面的構(gòu)件庫的構(gòu)建,以及檢索并獲取滿足構(gòu)件查詢條件的構(gòu)件。
權(quán)利要求
1.基于面向方面的構(gòu)件庫構(gòu)建方法,其特征在于所述方法依次含有以下步驟為 步驟1,軟件產(chǎn)品入庫,對源代碼文件進行掃描,并將源代碼信息輸入源代碼信息庫; 步驟2,知識庫建立,本步驟的具體過程描述如下 (1)對源代碼信息庫的代碼信息進行解析,提取代碼信息中的類,具體過程為對源代碼進行語法解析;提取代碼信息的語法樹;對語法樹進行語義解析;獲得代碼信息中的類; (2)運用方面規(guī)則庫配置并管理基于該領(lǐng)域的基于方面的組件群,該組件群中體現(xiàn)了該系統(tǒng)的全部核心業(yè)務關(guān)注點和橫切關(guān)注點; (3)運用編織機制,將代碼信息中的類信息分解,將類的核心功能和橫切關(guān)注點功能分離,最終,形成方面構(gòu)件庫; 步驟3,實現(xiàn)用戶的智能查詢,本步驟的具體過程描述如下 (1)用戶輸入查詢關(guān)鍵字,系統(tǒng)利用語義規(guī)則庫和方面規(guī)則庫對輸入關(guān)鍵字進行語義推理,進行匹配度計算; (2)根據(jù)匹配度到方面構(gòu)件庫里進行構(gòu)件查找; (3)對查找到的構(gòu)件進行排序評價; (4)向用戶推薦匹配度高的ー個或多個構(gòu)件,允許用戶從方面構(gòu)件庫中下載相關(guān)構(gòu)件實體。
2.根據(jù)權(quán)利要求I所述的基于面向方面的構(gòu)件庫構(gòu)建方法,其特征在干,由語義知識建立語義規(guī)則庫,該規(guī)則庫中包括蘊涵規(guī)則知識、兼容規(guī)則知識、方面規(guī)則知識。
3.根據(jù)權(quán)利要求I所述的基于面向方面的構(gòu)件庫構(gòu)建方法,其特征在于,由領(lǐng)域知識建立方面規(guī)則庫,領(lǐng)域知識是該領(lǐng)域功能的描述集,對每個功能的描述包括功能編號、所屬領(lǐng)域、所屬方面、版本號、功能描述、業(yè)務對象、備份。
4.根據(jù)權(quán)利要求I所述的基于面向方面的構(gòu)件庫構(gòu)建方法,其特征在于在方面規(guī)則下對源代碼信息編織后得到方面構(gòu)建庫,其中面向方面的構(gòu)件包括代碼和接ロ描述信息,其中每個構(gòu)件的接ロ描述包括構(gòu)件編號、所屬方面、接ロ名稱、服務的功能描述、輸入?yún)?shù)、輸出參數(shù)、返回值、構(gòu)件提供者、版本號、關(guān)鍵字。
全文摘要
本發(fā)明涉及一種基于面向方面的構(gòu)件庫構(gòu)建方法,屬于軟件工程技術(shù)領(lǐng)域。其特征在于包括如下步驟將源代碼輸入源代碼信息庫;對源代碼信息庫的代碼信息進行解析,提取代碼信息中的類;運用編織機制,將代碼信息中的類信息分解,將類的核心功能和橫切關(guān)注點功能分離;利用語義規(guī)則庫和方面規(guī)則庫進行語義推理,實現(xiàn)構(gòu)件查詢;對查詢結(jié)果進行排序評價,并根據(jù)查詢匹配度向用戶進行構(gòu)件推薦。本發(fā)明將面向?qū)ο蟮拇a結(jié)構(gòu)轉(zhuǎn)化為面向方面的代碼結(jié)構(gòu),使系統(tǒng)的橫切關(guān)注點構(gòu)件化,提高代碼的可重用性,使系統(tǒng)代碼冗余小,易于理解、維護和擴展;同時,基于語義推理的查詢機制,使方面構(gòu)件庫能夠靈活地隨著領(lǐng)域知識演化。
文檔編號G06F9/44GK102955697SQ20121044313
公開日2013年3月6日 申請日期2012年11月8日 優(yōu)先權(quán)日2012年11月8日
發(fā)明者曹陽, 王永會, 王守金, 宋曉宇 申請人:沈陽建筑大學