[發明專利]一種基于多候選程序的軟件缺陷修復方法及裝置有效
| 申請號: | 202110026716.9 | 申請日: | 2021-01-09 |
| 公開(公告)號: | CN112685320B | 公開(公告)日: | 2023-04-25 |
| 發明(設計)人: | 王浩仁;崔展齊;鄭麗偉;劉建賓;劉秀磊 | 申請(專利權)人: | 北京信息科技大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/65 |
| 代理公司: | 北京睿智保誠專利代理事務所(普通合伙) 11732 | 代理人: | 周新楣 |
| 地址: | 100192 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 候選 程序 軟件 缺陷 修復 方法 裝置 | ||
1.一種基于多候選程序的軟件缺陷修復方法,其特征在于,包括:
S1:在待修復程序中定位缺陷單元,將所述缺陷單元存放至缺陷集合中,對所述缺陷單元生成對應的補丁單元,同時將所述補丁單元存放至補丁集合;
S2:將所述補丁集合添加到待修復程序中,生成對應的修復程序集合;
S3:構造適應度函數,利用所述適應度函數對所述修復程序集合進行評估得到對應的適應度值,將所述適應度值進行排序,選取其中排名前k的修復程序作為候選修復程序集合;
S4:對所述候選修復程序集合進行多數決機制投票,輸出多數決投票得分最高的所述候選修復程序運行結果,并將所述候選修復程序和多數決機制封裝成一個整體程序;
所述步驟S4還包括:
S41:引入測試用例集,對所述測試用例集中每個測試程序進行權重賦值,對應的表達式為:
式中,failCount(tn)表示為未通過測試程序tn的候選版修復程序數,k為候選版修復程序的個數;
S42:將候選修復程序集合輸入多數決機制中,生成對應的執行結果集合,同時對候選修復程序集合中的每個元素進行投票權賦值,對應的表達式為:
式中,weight(tn)為第n個測試程序的權重,rnj’為執行結果;
S43:在多數決機制中將候選修復程序集合及測試用例集并行執行同一輸入,并將輸出結果存儲在輸出結果集合;
S44:對所述輸出結果集合進行多數決投票,將得到分數最高的運行結果作為程序的輸出。
2.根據權利要求1所述的一種基于多候選程序的軟件缺陷修復方法,其特征在于,所述步驟S3還包括:
S31:構造適應度函數,其中適應度函數的表達式為:
式中,sj表示為第j個修復版程序通過的測試程序數量,|T|代表測試程序集T中的元素個數;
S32:利用適應度函數對所述修復程序進行適應度值計算,得到對應的適應度值集合。
3.根據權利要求1所述的一種基于多候選程序的軟件缺陷修復方法,其特征在于,所述步驟S1具體包括:
S11:對所述待修復程序定位缺陷單元,獲取所述缺陷單元的懷疑度,并按照懷疑度從大到小的順序對所述缺陷單元進行排序,同時存儲至缺陷集合中;
S12:依據補丁生成規則對所述缺陷集合中的前θ個缺陷單元生成對應的補丁單元,同時將補丁單元存儲到補丁集合中。
4.根據權利要求1所述的一種基于多候選程序的軟件缺陷修復方法,其特征在于,所述步驟S2具體包括:
S21:對所述補丁單元逐個生成對應的修復程序,并將所有修復程序存儲到所述修復程序集合中;
S22:引入所述測試用例集對所有修復程序進行測試,將修復程序執行結果存儲到結果集合中。
5.一種利用權利要求1-4任一項所述的基于多候選程序的軟件缺陷修復方法的修復裝置,其特征在于,包括:
獲取模塊,用于依次獲取待修復程序的缺陷單元及對應的補丁單元;
添加模塊,用于將所述補丁單元添加到待修復程序中,生成對應的修復程序集合;
處理模塊,用于對修復程序集合進行適應度函數處理及多數決機制投票處理,得到候選修復程序集合;
輸出模塊,用于輸出多數決機制投票分數最高的運行結果。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京信息科技大學,未經北京信息科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110026716.9/1.html,轉載請聲明來源鉆瓜專利網。





