基于多源軟件數據分析的特征定位方法
【專利摘要】本發明公開了軟件工程【技術領域】內的一種基于多源軟件數據分析的特征定位方法,旨在解決現有技術中特征定位結果不精確、不完整的技術問題。本發明結合了信息檢索技術、數據挖掘技術和動態分析技術分別對當前軟件系統、演化歷史庫和執行軌跡進行了特征定位,并對三種技術特征定位的結果進行交集運算得出最終特征定位結果,實現了基于多源軟件數據分析的特征定位,具有更高的準確性、完整性和高效性;且本發明所采用的三項技術成熟度較高,使得本發明易于操作實現。本發明可用于類層次、方法層次的特征定位,可結合成本分析等現實情況,選擇相應的粒度層次進行特征定位,為實際多粒度層次特征定位提供了靈活的選擇框架。
【專利說明】基于多源軟件數據分析的特征定位方法
【技術領域】
[0001]本發明涉及一種特征定位方法,特別涉及一種基于多源軟件數據分析的特征定位方法,屬于軟件工程【技術領域】。
【背景技術】
[0002]隨著信息社會對軟件依賴的與日俱增,用戶對已有軟件系統的要求越來越高、越來越多,因此就需要不斷對軟件系統進行升級和維護,而這些升級和維護的修改請求通常也稱之為某個特征。在軟件系統中,一個特征可代表一種功能,這種功能是按照開發者和使用者的要求和可接受度來定義的。軟件維護與演化可能包括各種修改活動,如增加新的功能、改進現有功能和修復漏洞。確定一個已知的特殊功能在源代碼中的位置叫做特征定位。特征定位的過程是:確定初始節點;選擇下一個要訪問的節點;訪問該節點;判斷該節點是否與所調查的特征相關;檢查是否己經得到了所有相關的節點。在當前軟件中實施某個修改請求,首先要準確找到修改請求的初始節點,如果無法找到該特征位置,則整個修改過程無法順利完成。
[0003]目前的特征定位研究主要包括基于程序靜態結構的特征定位方法和基于程序動態剖面的特征定位方法。這兩種方法僅通過靜態分析目標程序和通過動態分析目標代碼來進行特征定位,對目標程序的歷史修改信息等一些重要的特征信息無法監測,導致特征定位的準確性和全面性降低。另外,軟件數據不僅包括靜態信息和動態信息,還包括軟件演化的過程信息,如果只使用其中的某一類型的信息可能會導致特征定位結果的不精確和不完難
iF.0
[0004]現有技術中有一種Java平臺調試體系結構,英文全稱為:Java PlatformDebugger Architecture,縮寫為JPDA。JPDA是虛擬機的一整套用于調試的工具和接口,通過JPDA提供的接口和協議,調試器開發人員就能根據特定開發者的需求,擴展定制Java調試應用程序,開發出吸引開發人員使用的調試工具。JPDA主要由三個部分構成:1、Java虛擬機工具接口(JVMTI):定義虛擬機(VM)在調試時必須提供的服務,包括調試信息(如棧信息)、調試行為(如客戶端設置一個斷點)和通知(如到達某個斷點時通知客戶端);2、Java調試線協議(JDWP):定義在調試過程和調試器前端之間傳輸的信息和請求的格式;3、Java調試接口(JDI):定義了調試者可以使用的調試接口,以方便與遠程的調試服務進行交互。
[0005]現有技術中還有一種測試工具和性能工具平臺,英文全稱為:Test andPerformance Tools Platform,縮寫為 TPTP。TPTP 是 Eclipse 基金會的一個頂級項目,提供了一套功能全面的開源測試和性能工具,覆蓋了整個測試和性能生命周期,從早期的測試到生產應用程序的監視,包括測試編寫和執行、監視、跟蹤和分析以及日志分析特性。
【發明內容】
[0006]本發明的目的是提供一種基于多源軟件數據分析的特征定位方法,解決了現有技術中僅對單一類型的特征信息進行分析挖掘,導致特征定位結果不精確、不完整的技術問題。
[0007]本發明的目的是這樣實現的:基于多源軟件數據分析的特征定位方法,包括以下步驟:
步驟一:通過信息檢索技術對當前軟件系統進行檢索:查詢當前軟件系統的源代碼中與所述當前修改請求相關的程序代碼,將所述程序代碼記為特征信息a ;
步驟二:通過數據挖掘技術挖掘歷史演化信息:查詢演化歷史庫中與所述當前修改請求相關的歷史修改請求,對相關的歷史修改請求中的修改元素進行并集運算,輸出的程序代碼記為特征信息b ;
步驟三:通過動態分析技術分析執行軌跡,所述執行軌跡包含有標記執行信息和完整執行信息,將完整執行信息與標記執行信息進行減法運算,輸出結果記為待定執行信息;然后對待定執行信息進行靜態分析,得到待定執行信息中與所述當前修改請求相關的信息集,對所述信息集、標記執行信息進行并集運算,輸出的程序代碼記為特征信息c ;
步驟四:對a、b、c三種特征信息進行交集計算,輸出特征定位結果m。
[0008]所述信息檢索技術的檢索步驟如下:
a)建立語料庫:定義文件粒度并建立所述文件粒度層次的語料庫;
b)自然語言處理:利用自然語言處理技術對所述語料庫實施預處理,所述預處理包括:刪除源代碼操作符和編程語言關鍵字、分離標識符和復合詞組、裁剪詞干為詞根;
c)索引語料庫:檢索語料庫中包含所述當前修改請求的關鍵字的源代碼。
[0009]所述標記執行信息的收集采用JPDA技術,所述完整執行信息的收集采用TPTP技術。
[0010]與現有技術相比,本發明的有益效果是:1、結合了信息檢索技術、數據挖掘技術和動態分析技術分別對當前軟件系統、演化歷史庫和執行軌跡進行了特征定位,實現了基于多源軟件數據分析的特征定位,相對于現有技術中僅對單一類型的信息進行特征定位的方法,本發明的特征定位結果具有更高的準確性、完整性和高效性;2、本發明所采用的信息檢索、數據挖掘和動態分析三項技術的成熟度較高,使得本發明易于操作實現;3、本發明可用于類層次、方法層次的特征定位,可結合成本分析等現實情況,選擇相應的粒度層次進行特征定位,為實際多粒度層次特征定位提供了靈活的選擇框架。
【專利附圖】
【附圖說明】
[0011]圖1為本發明的流程圖。
[0012]圖2為本發明信息檢索技術工作原理方框圖。
[0013]圖3為本發明數據挖掘技術工作原理方框圖。
[0014]圖4為本發明動態分析技術工作原理方框圖。
【具體實施方式】
[0015]下面結合附圖對本發明作進一步詳細描述。
[0016]如圖1所示,基于多源軟件數據分析的特征定位方法,包括以下步驟:
構建基于多源軟件數據分析特征定位模型:設定一個四元組< m,a,b,c >,其中為最終特征定位結果,a、b、c分別是從三種不同數據源中提取的特征信息。[0017]特征信息a的定位方法如下:通過信息檢索技術對當前軟件系統進行檢索,查詢當前軟件系統的源代碼中與當前修改請求相關的程序代碼,將程序代碼記為特征信息a。
[0018]如圖2所示,為本發明信息檢索技術工作原理方框圖。信息檢索技術的具體檢索步驟如下:
a)建立語料庫:定義文件粒度并建立文件粒度層次的語料庫。定義的文件粒度可以是包、類、方法;
b)自然語言處理:利用自然語言處理技術對語料庫實施預處理,預處理包括:刪除源代碼操作符和編程語言關鍵字,分離標識符和復合詞組,例如:將“impactAnalysis”分離為“impact”和“Analysis” ;裁剪詞干為詞根,例如:將“impacted”裁剪為“impact” ;
c)索引語料庫:檢索語料庫中包含當前修改請求的關鍵字的源代碼,設該源代碼為:el、e2、e4、e6、e8、elO,則特征信息 a={ el、e2、e4、e6、e8、elO}。
[0019]特征信息b的定位方法如下:通過數據挖掘技術挖掘歷史演化信息。如圖3所示為本發明數據挖掘技術工作原理方框圖。首先從演化歷史庫中提取歷史修改請求并對歷史修改請求進行信息集成,假設信息集成后,歷史修改請求和與其對應的修改元素如表1所示:
【權利要求】
1.基于多源軟件數據分析的特征定位方法,其特征在于,包括以下步驟: 步驟一:通過信息檢索技術對當前軟件系統進行檢索:查詢當前軟件系統的源代碼中與所述當前修改請求相關的程序代碼,將所述程序代碼記為特征信息a ; 步驟二:通過數據挖掘技術挖掘歷史演化信息:查詢演化歷史庫中與所述當前修改請求相關的歷史修改請求,對相關的歷史修改請求中的修改元素進行并集運算,輸出的程序代碼記為特征信息b ; 步驟三:通過動態分析技術分析執行軌跡,所述執行軌跡包含有標記執行信息和完整執行信息,將完整執行信息與標記執行信息進行減法運算,輸出結果記為待定執行信息;然后對待定執行信息進行靜態分析,得到待定執行信息中與所述當前修改請求相關的信息集,對所述信息集、標記執行信息進行并集運算,輸出的程序代碼記為特征信息c ; 步驟四:對a、b、c三種特征信息進行交集計算,輸出特征定位結果m。
2.根據權利要求1所述的基于多源軟件數據分析的特征定位方法,其特征在于,所述信息檢索技術的檢索步驟如下: a)建立語料庫:定義文件粒度并建立所述文件粒度層次的語料庫; b)自然語言處理:利用自然語言處理技術對所述語料庫實施預處理,所述預處理包括:刪除源代碼操作符和編程語言關鍵字、分離標識符和復合詞組、裁剪詞干為詞根; c)索引語料庫:檢索語料庫中包含所述當前修改請求的關鍵字的源代碼。
3.根據權利要求1所述的基于多源軟件數據分析的特征定位方法,其特征在于,所述標記執行信息的收集采用JPDA技術,所述完整執行信息的收集采用TPTP技術。
【文檔編號】G06F17/30GK103744788SQ201410031303
【公開日】2014年4月23日 申請日期:2014年1月22日 優先權日:2014年1月22日
【發明者】孫小兵, 吳鵬, 李云 申請人:揚州大學