上下文敏感的學生程序自動修復方法
發(fā)布時間:2023-04-01 17:34
近年來,在線學習環(huán)境日益普及,逐漸作為一個常見手段應用在大學生程序設計教學中,但已有的在線編程系統(tǒng)只能判別提交程序的正誤,不能給出錯誤原因并進行修正。因此,本文針對高校設立的Java程序設計課程的代碼,研究了自動程序修復在學生程序中的應用。不同于工業(yè)界的缺陷程序具有近似正確、補丁小及大部分測試用例可通過等特點,含有缺陷的學生程序具有錯誤密度大、缺少關鍵語句等特點。工業(yè)界方法通過對比測試用例通過情況實現(xiàn)修復功能,但學生程序可能一個測試用例也不能通過,因此工業(yè)界方法并不適用于修復學生程序。學生程序代碼規(guī)模較小,同一個題目作答人數(shù)多,可以采用提供模板的方法進行修復,從正確的學生程序中挖掘模板,使模板程序更具有多樣性。但一個程序設計問題會存在多種解決方案,學生給出的答案在實現(xiàn)算法、正確性以及語法使用上都有可能存在差異,選擇不同的模板程序作為示例程序,會直接影響缺陷程序修復的正確性和修復率。本課題使用了從在線編程系統(tǒng)中收集的大量正確的模板程序,這些數(shù)據(jù)中蘊含著“編程智慧”,可以為自動程序修復提供豐富的信息。針對上述問題,本文完成了以下工作:本文提出了模板程序的挖掘方法,解決了從大量實現(xiàn)相同功能的...
【文章頁數(shù)】:90 頁
【學位級別】:碩士
【文章目錄】:
摘要
Abstract
第1章 緒論
1.1 課題研究的背景和意義
1.2 國內外研究現(xiàn)狀
1.2.1 程序自動修正方法國內外研究現(xiàn)狀
1.2.2 國內外研究現(xiàn)狀分析
1.3 本文研究內容及章節(jié)安排
第2章 模板程序的挖掘方法
2.1 引言
2.2 研究框架
2.3 數(shù)據(jù)流和控制流分析
2.4 模板程序的特征提取方法和編碼
2.4.1 變量特征
2.4.2 基本塊特征
2.4.3 變量和基本塊之間的關系特征
2.4.4 矩陣編碼
2.5 模板程序的聚類
2.5.1 特征矩陣的分析策略
2.5.2 聚類算法介紹
2.6 示例程序的選取方法
2.7 實驗結果與分析
2.7.1 研究問題
2.7.2 實驗設置
2.7.3 實驗結果與分析
2.8 本章小結
第3章 動態(tài)執(zhí)行和上下文分析相結合的變量映射方法
3.1 引言
3.2 研究框架
3.3 抽象語法樹
3.4 變量映射方法
3.4.1 基于程序動態(tài)執(zhí)行的變量映射方法
3.4.2 基于上下文信息的變量映射方法
3.5 變量替換
3.6 實驗結果與分析
3.6.1 研究問題
3.6.2 實驗設置
3.6.3 實驗結果分析
3.7 本章小結
第4章 上下文敏感的學生程序自動修復方法
4.1 引言
4.2 遺傳編程算法的研究
4.2.1 遺傳算法
4.2.2 遺傳編程算法
4.2.3 基于遺傳編程的修復算法:Gen Prog
4.3 基于示例演化的JAVA學生程序錯誤自動修正
4.4 研究框架
4.5 交叉策略的改進
4.6 變異體選擇算法的改進
4.7 變異語句的選擇算法
4.8 實驗結果與分析
4.8.1 研究問題
4.8.2 實驗設置
4.8.3 實驗結果分析
4.9 本章小結
結論
參考文獻
致謝
本文編號:3777569
【文章頁數(shù)】:90 頁
【學位級別】:碩士
【文章目錄】:
摘要
Abstract
第1章 緒論
1.1 課題研究的背景和意義
1.2 國內外研究現(xiàn)狀
1.2.1 程序自動修正方法國內外研究現(xiàn)狀
1.2.2 國內外研究現(xiàn)狀分析
1.3 本文研究內容及章節(jié)安排
第2章 模板程序的挖掘方法
2.1 引言
2.2 研究框架
2.3 數(shù)據(jù)流和控制流分析
2.4 模板程序的特征提取方法和編碼
2.4.1 變量特征
2.4.2 基本塊特征
2.4.3 變量和基本塊之間的關系特征
2.4.4 矩陣編碼
2.5 模板程序的聚類
2.5.1 特征矩陣的分析策略
2.5.2 聚類算法介紹
2.6 示例程序的選取方法
2.7 實驗結果與分析
2.7.1 研究問題
2.7.2 實驗設置
2.7.3 實驗結果與分析
2.8 本章小結
第3章 動態(tài)執(zhí)行和上下文分析相結合的變量映射方法
3.1 引言
3.2 研究框架
3.3 抽象語法樹
3.4 變量映射方法
3.4.1 基于程序動態(tài)執(zhí)行的變量映射方法
3.4.2 基于上下文信息的變量映射方法
3.5 變量替換
3.6 實驗結果與分析
3.6.1 研究問題
3.6.2 實驗設置
3.6.3 實驗結果分析
3.7 本章小結
第4章 上下文敏感的學生程序自動修復方法
4.1 引言
4.2 遺傳編程算法的研究
4.2.1 遺傳算法
4.2.2 遺傳編程算法
4.2.3 基于遺傳編程的修復算法:Gen Prog
4.3 基于示例演化的JAVA學生程序錯誤自動修正
4.4 研究框架
4.5 交叉策略的改進
4.6 變異體選擇算法的改進
4.7 變異語句的選擇算法
4.8 實驗結果與分析
4.8.1 研究問題
4.8.2 實驗設置
4.8.3 實驗結果分析
4.9 本章小結
結論
參考文獻
致謝
本文編號:3777569
本文鏈接:http://sikaile.net/jiaoyulunwen/gaodengjiaoyulunwen/3777569.html
最近更新
教材專著