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