示例演化驅動的學生程序自動修復
摘要:已有的程序自動化調試研究大多面向工業軟件,而學生程序調試具有缺陷數多、類型復雜等特有難點問題,因此,針對學生程序設計應用背景,研究程序自動修復方法,利用模板示例程序指導補丁的演化.改進了遺傳編程算法,包括適應度的計算、變異體的生成方式和變異位置及操作的選擇方式,使其更加適合修復學生程序.提出了基于示例的靜態錯誤定位方法,能夠識別缺陷程序和參考程序差異和可能的變異操作,有效地縮小補丁的搜索空間以提高修復的準確性.提出了基于執行值序列的變量映射方法,以降低變異體的編譯錯誤,提高修復的準確性.在此基礎上,設計并實現了示例演化驅動的Java學生程序自動修復系統.實驗結果表明,該方法可以修復含有多缺陷學生程序,對于所用的測試集,當學生程序只有1個~2個錯誤時,修復率將近100%;當含有3個缺陷時,修復率約為70%;當含有4個及以上缺陷時,修復率約為50%.
注: 保護知識產權,如需閱讀全文請聯系軟件學報雜志社