[發明專利]一種基于多候選程序的軟件缺陷修復方法及裝置有效
| 申請號: | 202110026716.9 | 申請日: | 2021-01-09 |
| 公開(公告)號: | CN112685320B | 公開(公告)日: | 2023-04-25 |
| 發明(設計)人: | 王浩仁;崔展齊;鄭麗偉;劉建賓;劉秀磊 | 申請(專利權)人: | 北京信息科技大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F8/65 |
| 代理公司: | 北京睿智保誠專利代理事務所(普通合伙) 11732 | 代理人: | 周新楣 |
| 地址: | 100192 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 候選 程序 軟件 缺陷 修復 方法 裝置 | ||
本發明公開了一種基于多候選程序的軟件缺陷修復方法及裝置,方法具體包括:S1:在待修復程序中定位缺陷單元,將缺陷單元存放至缺陷集合中,對缺陷單元生成對應的補丁單元,同時將補丁單元存放至補丁集合;S2:將補丁集合添加到待修復程序中,生成對應的修復程序集合;S3:構造適應度函數,利用適應度函數對修復程序集合進行評估得到對應的適應度值,將適應度值進行排序,選取其中排名前k的修復程序作為候選修復程序集合;S4:對候選修復程序集合進行多數決機制投票,輸出多數決投票得分最高的候選修復程序運行結果,并將候選修復程序和多數決機制封裝成一個整體程序;本發明通過并行運行多個版本的程序提高容錯性。
技術領域
本發明涉及軟件工程技術領域,更具體的說是涉及一種基于多候選程序的軟件缺陷修復方法及裝置。
背景技術
目前,隨著科技的快速發展,人們對軟件的要求逐漸提高,軟件的功能越來越豐富,規模越來越龐大,但由于當前開發人員的自身局限性或軟件本身因素,軟件中表現出來的錯誤也越來越多,而且軟件缺陷種類也更加繁雜,由軟件缺陷造成的經濟損失也越來越大。
但是,在當前的軟件開發工作中,大部分軟件缺陷都是通過開發人員手動修復的,具體首先由程序員通過反饋的錯誤報告來查找到程序中發生錯誤的代碼,并嘗試復現故障過程,分析代碼產生缺陷的原因。通常程序員會采用斷點測試的方法,通過執行程序并觀察程序中變量的數據是否符合預期情況,通過發現差異來定位到錯誤代碼所在的范圍。然后,程序員根據錯誤報告和預期的正確結果對代碼進行修復,從而得到正確運行的程序。但是,通常這個過程需要程序員反復嘗試調試、編譯、修改,并且需要通過回歸測試檢測修復版程序中是否有新增錯誤。以上步驟十分繁瑣,導致缺陷修復的成本很高。數據表明,45%的現代軟件開發成本消耗在定位和修復程序錯誤過程中,因此自動程序修復(automaticprogram?repair)方法受到了學術界和工業界的廣泛關注。
自動程序修復技術的目標是自動修復程序中的缺陷或漏洞,根據檢測到的程序錯誤,自動生成補丁(patch)并添加到修復版的程序當中。隨著軟件分析和代碼缺陷定位等技術的不斷發展,自動程序修復技術也獲得了很大的突破和進展,有效性和實用性有了大幅的提高。在近十年以來,自動程序修復領域也產生了很多經典方法,例如基于遺傳編程的方法GenProg、基于符號分析方法SemFix、基于深度學習的方法DeepFix、基于模板的方法TBar、基于靜態分析的方法MemFix等。這些方法通過不同方式完成了程序修復,但是均無法保證對所有缺陷進行修復,即使在所有現有測試數據下能正常工作,也無法保證修復版程序在其他輸入運行時也能正常工作,而且更糟的情況是可能會引入新的缺陷。
因此,如何提供一種能夠解決上述問題的軟件缺陷修復方法及裝置是本領域技術人員亟需解決的問題。
發明內容
有鑒于此,本發明提供了一種基于多候選程序的軟件缺陷修復方法及裝置,既能根據多個候選程序的運行結果進行多數決投票來提高運行結果的成功率,還能通過并行運行多個版本的程序提高容錯性。
為了實現上述目的,本發明采用如下技術方案:
一種基于多候選程序的軟件缺陷修復方法,包括:
S1:在待修復程序中定位缺陷單元,將所述缺陷單元存放至缺陷集合中,對所述缺陷單元生成對應的補丁單元,同時將所述補丁單元存放至補丁集合;
S2:將所述補丁集合添加到待修復程序中,生成對應的修復程序集合;
S3:構造適應度函數,利用所述適應度函數對所述修復程序集合進行評估得到對應的適應度值,將所述適應度值進行排序,選取其中排名前k的修復程序作為候選修復程序集合;
S4:對所述候選修復程序集合進行多數決機制投票,輸出多數決投票得分最高的所述候選修復程序運行結果,并將所述候選修復程序和多數決機制封裝成一個整體程序。
優選的,所述步驟S3還包括:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京信息科技大學,未經北京信息科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110026716.9/2.html,轉載請聲明來源鉆瓜專利網。





