[發明專利]一種基于代碼圈復雜度度量的軟件演化評估方法在審
| 申請號: | 201710330642.1 | 申請日: | 2017-05-11 |
| 公開(公告)號: | CN107239396A | 公開(公告)日: | 2017-10-10 |
| 發明(設計)人: | 廖力;李必信;何磊 | 申請(專利權)人: | 東南大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 南京蘇高專利商標事務所(普通合伙)32204 | 代理人: | 柏尚春 |
| 地址: | 211189 江蘇*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 代碼 復雜度 度量 軟件 演化 評估 方法 | ||
技術領域
本發明涉及一種基于代碼圈復雜度度量的軟件演化評估方法,屬于軟件演化與維護領域問題。
背景技術
代碼復雜度是對代碼復雜程度的一種度量,是理解和維護代碼所需工作量的一種指征。代碼復雜度會直接影響到諸如可讀性、可維護性、可理解性等軟件質量屬性。通過評估代碼復雜度,可以幫助開發人員及時了解、控制和調整代碼的復雜程度。
圈復雜度是代碼復雜度的一種,是用來衡量程序中判定結構的復雜程度的一種質量指標。通常,人們通過圈復雜度的度量與評估衡量軟件模塊判定結構的復雜程度,了解預防錯誤所需測試的最少路徑條數,為測試人員設計測試案例提供指導。經驗表明,程序的可能錯誤數和圈復雜度值的高低有很大關系:圈復雜度偏大的程序代碼往往質量低,且難于測試和維護。
隨著軟件的演化,其源代碼會產生一定的變更,會對軟件的圈復雜度、軟件質量及其后繼演化產生影響。有些演化操作能降低代碼的圈復雜度,提高代碼的質量;而有些演化操作則會提高軟件的圈復雜度。很多軟件項目或者由于最初設計結構的不合理,或者由于版本演化過程中累積問題的增多,最終在軟件復雜性得不到有效控制的情況下崩潰,導致軟件生命的結束。因此,在現有軟件開發環境下,自動化地對軟件的代碼圈復雜度進行演化分析對于軟件的迭代開發與重構、提高軟件質量、延長軟件的生命周期具有重要意義,并能為軟件的演化提供評價依據。
發明內容
技術問題:本發明的目的是提供一種自動化地對軟件代碼圈復雜度的演化進行評估和分析的方法,以解決軟件演化過程中復雜度得不到有效控制的問題。較之其他軟件演化度量和評估方法,該方法注重演化過程中軟件圈復雜度的變化,實現對軟件復雜度的控制。
技術方案:本發明方法,強調軟件演化中的質量控制,引入代碼圈復雜度度量方法、圈復雜度閾值等,從不同層次對演化前后的軟件圈復雜度進行度量和評估,進而對代碼圈復雜度變化的原因進行分析,為軟件維護方案提供參考。
本發明的基于代碼圈復雜度度量的軟件演化評估方法,步驟如下:
步驟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)中通過統計代碼解析所得的抽象語法樹中判定節點的數量來進行代碼圈復雜度度量,規則為:
判定節點是程序設計語言中表示條件判定的語句,通過條件判定來確定程序的控制流走向。
進一步的,本發明的方法中,對于Java語言,所述步驟2)中代碼圈復雜度度量規則的判定節點存在于以下關鍵字所引導的語句中:If,for,while,do,case,catch,&&,||,:?,這些判定節點在抽象語法樹AST中對應的節點如下表:
表1.圈復雜度中判定節點和ASTNode對應表
進一步的,本發明的方法中,步驟2)中分三個層次進行代碼圈復雜度度量的具體方法是:
方法層:通過掃描方法的抽象語法樹,統計方法中的判定節點個數,將該判定節點數加1即為方法層的圈復雜度;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于東南大學,未經東南大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710330642.1/2.html,轉載請聲明來源鉆瓜專利網。





