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