1 / 21

利用程式碼相似度輔助學生程式作業分群之實作

淡江大學資訊管理學系. 利用程式碼相似度輔助學生程式作業分群之實作. 前言. 程式碼比對可以分為語彙層及語法層兩種 比對技術 。 語彙層比對 : 以符號為單位,依兩程式之間的相同符號之多寡 , 決定兩者相似度 語法層比對 : 必須將程式碼轉換成結構圖或流程圖,再將圖形依節點互相比對,找出最相似的兩個節點 , 決定 程式 相似度 程式碼比對的應用方向包括 協助 查詢相似範例程式 , 加速開發速度 偵測重複程式,有利程式精簡及合併 偵測抄襲,利於版權維護

christmas
Download Presentation

利用程式碼相似度輔助學生程式作業分群之實作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 淡江大學資訊管理學系 利用程式碼相似度輔助學生程式作業分群之實作 淡江大學資訊管理學系

  2. 前言 • 程式碼比對可以分為語彙層及語法層兩種比對技術。 • 語彙層比對:以符號為單位,依兩程式之間的相同符號之多寡,決定兩者相似度 • 語法層比對:必須將程式碼轉換成結構圖或流程圖,再將圖形依節點互相比對,找出最相似的兩個節點,決定程式相似度 • 程式碼比對的應用方向包括 • 協助查詢相似範例程式,加速開發速度 • 偵測重複程式,有利程式精簡及合併 • 偵測抄襲,利於版權維護 • 本文將程式碼比對應用於協助程式教學。在班級眾多學生程式中,如何偵測相似寫法給予一致分數,一直是批改程式作業之困擾。本文將利用程式相似度,對學生程式作業進行分群,以輔助作業批改之給分一致性。 • 本文將實作此程式分群系統,並評估其分群正確性。 淡江大學資訊管理學系

  3. 文獻探討 • Whale (1990) 綜合各種語彙及語法層的程式碼比對技術,將其大致區分為兩類: • 屬性比對 • 結構比對 淡江大學資訊管理學系

  4. 文獻探討-屬性比對 • 六個數值維度比對程式相似度 (Sallis et al., 1996) • 容積(Volume) (Halstead, 1997) • 結構(Structure) • 資料相依(Data Dependency) • 迴圈深度(Nesting Depth) • 控制結構(Control Structure) • 控制流程(Control Flow) 淡江大學資訊管理學系

  5. 文獻探討-結構比對 • 結構比對: 以如下幾個實際系統為例 • MOSS(Measure Of Software Similarity) • YAP(Yet Another Plague) • JPlag • SID(Software Integrity Diagnosis system) • SIM(software SIMilarity tester) 淡江大學資訊管理學系

  6. 文獻探討-結構比對 • MOSS(Measure Of Software Similarity)(Schleimer et al., 2003) • 將程式的符號字串(token string),每相鄰k個符號合併成一個長度k片段(k-gram),計算其雜湊值。 • 程式有n個符號,將可計算出n-1個片段的雜湊值 • 這些雜湊值集合選擇其部分子集合可形成程式的指紋(fingerprint) • 依照雜湊原理,不相同子串得到相同雜湊值的碰撞機率很小,因此若兩程式有一個或更多個雜湊值相同,則表示其有相同的長度k片段 淡江大學資訊管理學系

  7. 文獻探討-結構比對 • YAP (Yet Another Plague) (Wise, 1992) • 可以偵測程式中相似片段 • 使用Running-Karp-Rabin Greedy-String-Tiling (RKR-GST)演算法 • 分為兩個階段 • 前處理階段 • 比對階段 淡江大學資訊管理學系

  8. 結構比對-YAP(Yet Another Plague) • 前處理階段 • 移除註解和固定字串 • 轉換大寫字母為小寫字母 • 將同義字對應到通用格式 • 依照呼叫順序重新排列function次序。並把第一次呼叫到的function展開,之後的呼叫則以FUN替代 • 移除非程式語言字彙的字詞 淡江大學資訊管理學系

  9. 結構比對-YAP(Yet Another Plague) • 比對階段 • 片段(tile)需為兩程式共有之子字串 • 當一個符號成為片段一部份,將作標記(marked),不再重複使用 • 定義MaxM為最大匹配相似片段,表示兩程式目前找到的最大相似片段 • 定義MinML為最小匹配長度,凡是比MinML小的片段皆忽略之 • GST演算法找出兩程式間最大相似片段 • 先找出兩程式中相同而不重疊,且大於MinML的子字串 • 再將片段能覆蓋到的符號擴大到最大數量 淡江大學資訊管理學系

  10. 結構比對- JPlag • JPlag(Prechelt et al.,2002) • 採用GST演算法 • 排除空白,註解,和變數命名,並將語義概念放入符號,例如用BEGIN_METHOD符號表示方法開頭大括號 • 為一線上使用系統,程式要上傳到JPlag主機比對,再透過網頁顯示比對結果 淡江大學資訊管理學系

  11. 結構比對- SID • SID(Software Integrity Diagnosis System) (Chen et al., 2002) • 一種利用壓縮找尋程式相似片段的作法 • 分為兩階段 • 第一階段將程式轉換成符號字串 • 第二階段則改用壓縮器(compressor)找出兩程式的相似片段 • 可避免受大量插入無意義敘述,例如: int x=1;之干擾 淡江大學資訊管理學系

  12. 結構比對- SIM • SIM(software SIMilarity tester) (Gitchell, 1999) • 利用DNA序列排比方式來計算程式間的相似性 • 定義每種序列排比的得分,再由動態規畫找出其中分數最高者,而得最佳排比方式。 • 利用此最佳排比得分,可以比較兩程式相似度 淡江大學資訊管理學系

  13. 結構比對-各系統比較 結構比對常用系統方法之比較 結構比對常用系統能力之比較 淡江大學資訊管理學系

  14. 有效相似門檻值區間 非相似集合 相似集合 相似集合平均值減一標準差 非相似集合平均值加一標準差 相似門檻值 分群方法 • 相似比對工具 • YAP • 最小比對長度和相似門檻值 • 最小比對長度(Minimal Match Length, MML) • 相似門檻值(THreshold of Similarity, THS) 淡江大學資訊管理學系

  15. 分群方法 • 相似度計算 • sFile,tFile分別是來源程式和目標程式的符號序列 • 每一片段t之符號長度為lengtht • 分數大小介於0跟1之間,愈接近1表示兩程式相似性愈高 淡江大學資訊管理學系

  16. 分群方法 c1 c2 c3 • 單次無階層分群法 • 隨機挑某程式作第1群 • 找出和程式i群相似度大於THS群集合 • i加入群集合中最近一群 • 若群集合為空,則i另成一群 i1 i2 淡江大學資訊管理學系

  17. 實驗結果 • 實驗方法: • 資料集: 淡江大學資管系大學部JAVA程式課四題程式作業,每題約100份作業。其中,三題供參數訓練,一題作結果測試。為評估正確性,四題皆先以人工分群得到相似程式集合作為標準答案。 • 參數訓練:用三題資料,以不同的最小比對長度和相似門檻值,找出最適合的最小比對長度和相似門檻值 • 結果測試:以訓練所得的最小比對長度和相似門檻值,套用到第四題,計算分群正確率 淡江大學資訊管理學系

  18. 實驗結果 • 分群正確率將以所有程式配對(pairs)為母體,如下: • 任何兩兩程式之間,只存在同群或不同群兩種關係。 • m=1 or 0表示由人工(manual)判斷之同群否結果, • a=1 or 0表示由機器(automatic)判斷之同群否結果 淡江大學資訊管理學系

  19. 實驗結果 • 內部訓練 • 用三題資料,以不同的最小比對長度和相似門檻值,找出最適合的最小比對長度和相似門檻值 不同最小比對長度和相似門檻值下,分群的正確率 淡江大學資訊管理學系

  20. 實驗結果 • 外部訓練 • 以訓練所得的最小比對長度和相似門檻值,套用到第四題,計算分群正確率 在最小比對長度15,相似門檻值0.665下基於YAP相似度做為分群的正確率 淡江大學資訊管理學系

  21. 結語 • 針對程式教學的評分一致性需求,本文利用程式的相似度來為學生作業分群,以方便老師或是助教可以就相近程式進行一致性的評分 • 本文實作分群系統,以實際程式作業作測試,結果顯示採用本文作法,其分群正確性與人工分群結果非常接近 • 未來將利用更多資料做測試,進一步驗證YAP相似度作為程式分群指標的普遍可行性。也可嘗試單次無階層分群方法之外的其他分群法做測試 淡江大學資訊管理學系

More Related