標籤:
摘要:
目前有許多的bug定位技術,但是,由於他們基於不同的資料集,而且有些資料集還不是公開的,甚至有些技術只應用於小資料集,不具有通用性,因此,不好比較這些技術之間的優劣。
因此,BOAT應運而生。BOAT是指:Bug lOcalization experimental plATform.這是一個web平台,開發人員註冊之後,可以在這上面上傳他們的bug定位技術,因為在這個平台上測試的資料集是相同的,所以與其他的bug定位技術具有可比性。
地址:http://www.vlis.zju.edu.cn/blp. (不知道是什麼原因,不能訪問 =.=)
S1 Introduction
主要介紹動機,和摘要基本相同。
S2 BOAT PLATFORM
BOAT由3個模組組成:
- Data Collection Component:運行軟體項目,並分析它們的bug跟蹤系統和版本控制系統(從中提取日誌,並分析每次提交過後,是否修複了相應的bug),BOAT利用Regex來判斷日誌中是否存在bug,如果存在,則從相應的bug跟蹤系統中擷取bug的細節。BOAT將分組提交,修複相似的bug report。通過這些資訊,對於每一個已經提交了的bug report,修複原始碼。這些已經提取出來的資訊存在資料庫中,供BOAT其他的模組使用。注意到,BOAT無需一次性執行大量的工程,它可以不斷增加bug report以及相應的buggy檔案,因此,BOAT會不斷包含更多的report。
- Local Debugging Component:BOAT支援開發人員在他們的本地環境下,執行他們的bug定位程式。目標就是當開發人員上傳他們的可執行檔時,減少調試的影響。
- Remote Execution Component:執行上傳的可執行檔,通過Data Collection component 提取出來的資料集,並返回結果給開發人員。
與此同時,開發人員可以通過一個設定檔來管理BOAT如何執行上傳的可執行檔。在這個設定檔中,若干任務被指定。每個任務都指定一個bug定位演算法用於執行演算法工程。當設定檔設定好之後,remote execution模組將執行被選中的工程中所指定的bug report。開發人員將收到一封郵件,告知執行詳細情況。如果任務成功執行,則通過幾個指標對其優劣程度進行排序。方便開發人員之間比較。
S3 現有的資料集和技術
6080bug report
29 開源系統
S4 related work
與TraceLab(追蹤實驗平台)相比,BOAT有何不同?
- 目標問題和資料集。TraceLab是一個通用的可回溯回複的平台,主要關注程式碼的串連需求。資料集小。
BOAT關注代碼定位,主要搜集bug report;
- 計算資源支援。為了使用TraceLab,開發人員需要下載並安裝他們的機器和計算資源。
BOAT為開發人員提供計算資源,並管理可執行檔。
- 支援和評估。為了比較,TraceLab需要提交他們的代碼。
BOAT會自動與多種技術進行比較。
為了滿足大規模特徵定位基準。基於基準,Xing等人提出Linux kernel,本文的工作與其的不同之處:
- 實驗平台和基準:本文不僅提供一個基準,還提供了一個平台來支援研究人員比較和評估他們的演算法;
- 資料集:Xing等人的資料集主要是文本描述和代碼。本文的資料集主要是bug report以及他們修複的bug。
S6 結論和以後研究方向
將增加更多的資料集,實現更多的bug定位演算法,增加更多的度量方式,並通過BOAT組織比賽。
【軟體分析與挖掘】BOAT: An Experimental Platform for Researchers to Comparatively and Reproducibly Evaluate Bug Localization Techniques