【软件分析与挖掘】BOAT: An Experimental Platform for Researchers to Comparatively and Reproducibly Evaluate Bug Localization Techniques
摘要:
目前有许多的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利用正则表达式来判断日志中是否存在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的更多相关文章
- 【软件分析与挖掘】Vision of Software Clone Management: Past, Present, and Future (Keynote Paper)
abstract: 代码克隆的综述 S1 INTRODUCTION AND MOTIVATION 代码克隆的利弊: 利:可以有效地去耦合,避免其他一些可能的错误: 弊:当被复制的那段code中带 ...
- 【软件分析与挖掘】Multiple kernel ensemble learning for software defect prediction
摘要: 利用软件中的历史缺陷数据来建立分类器,进行软件缺陷的检测. 多核学习(Multiple kernel learning):把历史缺陷数据映射到高维特征空间,使得数据能够更好地表达: 集成学习( ...
- 【软件分析与挖掘】An Empirical Study of Bugs in Build Process
摘要 对软件构建过程中所产生的错误(build process bugs)进行实证研究. 5个开源项目:CXF, Camel, Felix,Struts, and Tuscany. 把build pr ...
- 【软件分析与挖掘】A Comparative Study of Supervised Learning Algorithms for Re-opened Bug Prediction
摘要: 本文主要是评估多种监督机器学习算法的有效性,这些算法用于判断一个错误报告是否是reopened的,算法如下: 7种监督学习算法:kNN,SVM, SimpleLogistic,Bayesian ...
- 【软件分析与挖掘】ELBlocker: Predicting blocking bugs with ensemble imbalance learning
摘要: 提出一种方法——ELBlocker,用于自动检测出Blocking Bugs(prevent other bugs from being fixed). 难度在于这些Blocking Bugs仅 ...
- 第二次作业-Steam软件分析
1 .介绍产品相关信息 随着电子音频游戏产业的发展以及正版意识的崛起,Steam已经成为大部分游戏爱好者必备的一款游戏下载平台.这款软件也使得Valve公司从一个游戏制作公司成功扩展业务到一个承揽众多 ...
- 使用AES加密的勒索类软件分析报告
报告名称: 某勒索类软件分析报告 作者: 李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...
- [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回
0x00 一点废话 最近因为Mac软件收费的比较多,所以买了几款正版软件,但是有的软件卖的有点贵,买了感觉不值,不买吧,又觉得不方便,用别人的吧,又怕不安全.于是我就买了正版的Hopper Di ...
- 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】
1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...
随机推荐
- PHP读取日志里数据方法理解
需要函数: fopen($file, "r")打开文件 fgets($file, 1024 * 10)读取一行,注意设置字节数大小,默认的1024B可能太小了 strpos($lo ...
- 更新日志 - 关于 iOS9 设备的安装及其他优化
新版 fir.im 上线整 3 周了,感谢你们对 fir.im 的关注和支持!无以言表,唯有做更好用的产品给大家.本周我们对新版做了以下的功能更新和 bug 修复: 功能更新 在使用过程中,请注意: ...
- mysql优化之表建设
就拿常见的用户表.文章类的表.日志表来分析如下 CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMEN ...
- Perl语言——简单说明
Perl语言——简单说明 一.简单说明 Perl语言全称:实用摘录与报表语言|病态折中式垃圾列表器.Perl名称并不是缩写词,而是个溯写字. Perl语言历史:Larry Wall(拉里·沃尔)20世 ...
- vs2012 MSDN帮助文档离线包下载安装方法
vs2012安装文件 自带的 MSDN帮助文档不全, 需要自己手动添加需要的离线文档包, 具体方法如下 1. 打开 vs2012 2. 按 ctrl + alt + F1 打开帮助文档管理器 3. 在 ...
- asp.net中调用命令行
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- js弹出放大图
<script type="text/javascript"> function openpic(url){ OpenWindow = window.open(&quo ...
- openCV_java 图像二值化
较为常用的图像二值化方法有:1)全局固定阈值:2)局部自适应阈值:3)OTSU等. 局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值.这样做的好处在于每个像素位置处的二值化 ...
- iphone/ipad/ipod设置VPN(pptp连接方式)
一.点击桌面上的-设置-图标进入设置(如图) 二.点击-通用-进入通用设置 三.点击-VPN-进入VPN设置(如图) 四.点击添加VPN设置进行设置 五.选择并连接
- Scala 深入浅出实战经典 第42讲:scala 泛型类,泛型函数,泛型在spark中的广泛应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...




