《無定型克隆代碼的檢測及重構方法》是依託哈爾濱工業大學,由蘇小紅擔任項目負責人的面上項目。
基本介紹
- 中文名:無定型克隆代碼的檢測及重構方法
- 依託單位:哈爾濱工業大學
- 項目類別:面上項目
- 項目負責人:蘇小紅
項目摘要,結題摘要,
項目摘要
針對不同軟體工程實踐導致不同類型的克隆代碼使軟體結構複雜難於理解和維護的問題,以及遺產系統逆向工程的套用背景,結合軟體自動測試、程式靜態分析、數據挖掘和模式聚類等理論,研究建立將克隆代碼檢測、相關缺陷檢測和克隆代碼重構有機融為一體的無定型克隆代碼檢測與重構模型。基於聚類分析識別功能內聚的代碼片段,避免產生語義無關或功能交叉的代碼片段,降低克隆代碼檢測的時間複雜度;在此基礎上結合隨機動態測試和程式靜態分析,檢測語法不同但功能等價的克隆代碼,並採用從功能到語法到結構語義逐級分析的方法,在統一的框架下,檢測由不同原因產生的功能/語法/結構語義等價或相似的克隆代碼,提高克隆代碼檢測的準確性和檢測模型的適應性;綜合考慮程式結構度量和運行效率並進行缺陷檢測過濾,提取適於重構的克隆代碼,對不同類型的克隆採取不同的重構轉換方法,提高克隆代碼重構的效率,並確保重構質量和安全,增強軟體的可維護性和可理解性。
結題摘要
針對不同軟體工程實踐導致不同類型的克隆代碼使軟體結構複雜難於理解和維護的問題,以及遺產系統逆向工程的套用背景,結合軟體自動測試、程式靜態分析、數據挖掘和模式聚類等理論,研究建立將克隆代碼檢測、相關缺陷檢測和克隆代碼重構有機融為一體的無定型克隆代碼檢測與重構模型,為克隆代碼檢測及重構探索了一種新思路。發表研究論文39篇,其中SCI國際期刊論文6篇,EI檢索論文37篇,國內一級期刊論文6篇。主要研究成果如下:(1)針對已有的克隆代碼檢測方法因生成語義無關、無意義的克隆代碼碎片而導致大量誤檢的問題,提出在克隆代碼檢測之前,先基於K-近鄰聚類方法識別和分離功能交叉、低內聚的代碼片段,提取功能內聚的代碼片段,僅在功能內聚的代碼片段中檢測克隆代碼,不僅可以降低克隆代碼檢測的時間複雜度,還可以降低誤檢以及判定和提取適於重構的克隆代碼的複雜性。(2)針對目前很多克隆代碼檢測方法僅適合檢測語法或結構語義相似的克隆代碼,而對功能等價但程式文本和語法結構差別很大的克隆代碼缺少有效的檢測方法的問題,提出將自動隨機測試與程式靜態分析相結合,解決語法結構不同但功能等價的克隆代碼的檢測問題。(3)針對已有的克隆代碼檢測方法通常只能檢測特定類型的克隆代碼,對克隆代碼壞味的識別能力有限的問題,提出“功能→語法→結構語義”逐級分析的方法,實現無定型克隆代碼的檢測,能夠有效增強克隆代碼檢測模型的適應性及其對克隆代碼壞味的識別能力。(4)針對目前已有的克隆代碼重構方法僅從程式結構度量的角度研究重構方法,而未考慮程式的運行效率,也未結合克隆代碼和冗餘代碼引起的邏輯和語義缺陷檢測的問題,提出將性能和結構度量與缺陷檢測過濾相結合實現過程替換方案的優選,並通過對克隆代碼的分類轉換實現無定型克隆代碼的重構,同時採用動態測試驗證相似克隆代碼的重構轉換的正確性,不僅能提高克隆代碼重構的效率,還可以確保重構的質量和重構安全。(5)針對傳統克隆代碼重構方法難於分析不連續和近似克隆代碼,提出一種語義保持的克隆代碼無定型過程提取方法,在保留程式語義一致性約束的條件下,對程式進行無定型變換,降低了對未標記語句提升的需求,並通過插入控制變數和條件語句融合近似克隆代碼的差異點,實現了近似克隆代碼的過程提取,提高了克隆代碼提取的準確性和適用性。