[發明專利]一種基于代碼圈復雜度度量的軟件演化評估方法在審
| 申請號: | 201710330642.1 | 申請日: | 2017-05-11 |
| 公開(公告)號: | CN107239396A | 公開(公告)日: | 2017-10-10 |
| 發明(設計)人: | 廖力;李必信;何磊 | 申請(專利權)人: | 東南大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 南京蘇高專利商標事務所(普通合伙)32204 | 代理人: | 柏尚春 |
| 地址: | 211189 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 代碼 復雜度 度量 軟件 演化 評估 方法 | ||
1.一種基于代碼圈復雜度度量的軟件演化評估方法,其特征在于,該方法包括以下步驟:
步驟1)分別為待評估軟件的當前待測目標版本V_current和歷史版本V_last的程序源碼構造抽象語法樹;
步驟2)根據所述步驟1)獲取的抽象語法樹,分別從系統層、類層和方法層三個層次對待測軟件版本的代碼進行圈復雜度度量,所述待測軟件版本包括當前待測目標版本V_current和歷史版本V_last;
步驟3)從類層和方法層分別評估待測軟件版本的圈復雜度度量結果,找出軟件中圈復雜度度量結果超出閾值范圍的類和方法;
步驟4)對待測軟件的當前待測目標版本V_current和歷史版本V_last的圈復雜度度量結果按層次進行分析比較,以確定變更發生的位置,具體為:先進行兩個版本系統層圈復雜度的比較,確定兩個版本間類的增刪改;然后再進行類層次的分析,對前后版本中圈復雜度發生變化的類,確定其方法的增刪改;最后進行方法層次的分析,考察同名方法的圈復雜度變化;
步驟5)對當前待測目標版本V_current和歷史版本V_last的項目源碼本身進行分析比較,找出兩者在所述步驟4)確定的變更發生的位置的代碼差異,輸出到格式文件中;
步驟6)針對當前待測目標版本V_current和歷史版本V_last,通過所述步驟4)得到的兩個版本中圈復雜度發生增刪改的類和方法,以及所述步驟5)得到的兩個版本的代碼差異,進行差異定位,即根據代碼差異確定導致度量結果發生變化的原因,形成軟件演化評估。
2.根據權利要求1所述的基于代碼圈復雜度度量的軟件演化評估方法,其特征在于,所述步驟2)中通過統計代碼解析所得的抽象語法樹中判定節點的數量來進行代碼圈復雜度度量,規則為:
判定節點是程序設計語言中表示條件判定的語句,通過條件判定來確定程序的控制流走向。
3.根據權利要求2所述的基于代碼圈復雜度度量的軟件演化評估方法,其特征在于,對于Java語言,所述步驟2)中代碼圈復雜度度量規則的判定節點存在于以下關鍵字所引導的語句中:If,for,while,do,case,catch,&&,||,:?,這些判定節點在抽象語法樹AST中對應的節點如下表:
表1.圈復雜度中判定節點和ASTNode對應表
4.根據權利要求1、2或3所述的基于代碼圈復雜度度量的軟件演化評估方法,其特征在于,所述的步驟2)中分三個層次進行代碼圈復雜度度量的具體方法是:
方法層:通過掃描方法的抽象語法樹,統計方法中的判定節點個數,將該判定節點數加1即為方法層的圈復雜度;
類層次:通過掃描類的抽象語法樹,統計類中的判定節點個數,將該判定節點數加1即為類層次的圈復雜度;同時類層次的圈復雜度應與該類中所有方法的圈復雜度之和相等,并據此對類層次圈復雜度結果進行校驗;
系統層:通過掃描整個系統的抽象語法樹,統計系統中的判定節點個數,將該判定節點數加1即為系統層次的圈復雜度;同時系統層次的圈復雜度應與該系統中所有類和方法的圈復雜度之和相等,并據此對系統層圈復雜度進行校驗。
5.根據權利要求1、2或3所述的基于代碼圈復雜度度量的軟件演化評估方法,其特征在于,所述步驟3)中對當前待測版本V_current代碼圈復雜度的評估是通過將類層次和方法層次的度量結果與相關閾值進行比較分析完成的;
方法層的圈復雜度的閾值劃分如下:圈復雜度在1-10之間,程序簡單,風險低;復雜度在11-20之間,程序有點復雜,有點風險;復雜度在21-50之間,程序很復雜,高風險;復雜度>50,程序無法看懂;
類層的復雜度的閾值設定為50,一個項目中復雜度超過50的類所占比例應不大于5%。
6.根據權利要求1、2或3所述的基于代碼圈復雜度度量的軟件演化評估方法,其特征在于,所述步驟5)的具體流程為:
分別獲取軟件當前版本V_current和前一版本V_last的.java文件的路徑;
將兩個版本的源碼進行對比,確定發生變更的所有文件路徑,并存入變更文件路徑集合fileSet;
遍歷所述變更文件路徑集合fileSet中的路徑,并分別在V_current版本和V_last版本中去匹配相應的路徑;
將兩個版本中匹配成功的路徑文件分別輸入到源碼差異分析器ChangeDistiller中進行代碼差異分析;
提取分析結果,提取與圈復雜變化相關的代碼變更類型,將結果輸入到.csv格式文件中。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東南大學,未經東南大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710330642.1/1.html,轉載請聲明來源鉆瓜專利網。





