摘要

对软件构建过程中所产生的错误(build process bugs)进行实证研究。

5个开源项目:CXF, Camel, Felix,Struts, and Tuscany。

把build process bugs 和 other bugs在3个维度比较:bug severity, bug fix time, the number of files modified to fix a bug。

结论表明,

Ⅰ.the fraction of build process bugs which are above major severity level(严重级别) is lower than that of other bugs.

小部分高于major级别的软件构建过程中的错误数量少于非软件构建过程中的错误数量

Ⅱ.the time effort required to fix a build process bug is around 2.03 times more than that of a non-build process bug.

修复一个软件构建过程中的错误的时间花费是非构建错误的2.03倍

Ⅲ.the number of source files modified to fix a build process bug is around 2.34 times more than that modified for a non-build bug.

修复一个软件构建过程过程中的错误需要改动的源文件数量是非构建错误的2.34倍


S1   Introduction

软件系统生成过程:编译成二进制代码,封装,执行测试样例,静态分析,生成文档,部署产品。

3个研究问题:

    • build process bugs 和 non-build bugs的严重级别分布
    • 修复build process bugs 和 non-build bugs所花的时间
    • 修复build process bugs 和 non-build bugs需要修改多少的源码

S2   METHODOLOGY & BASIC STATISTICS

To collect build process bugs we follow a two step approach: bug report collection and build process bug identification.

Bug Report Collection

5个开源项目,利用JIRA bug tracking systems搜集错误报告:

Build Process Bug Identification

标识Build Process Bug:

  1. 半自动的分析出哪些report是我们需要的;
  2. 从这些报告中,手动分析出哪些是构建过程中产生的错误,哪些不是;

由于并非每一个构建阶段的文件都会出现在构建文件中,因此筛选到最后,left with 3,205 bug reports (642, 836, 811, 343, and 573 for CXF, Camel, Felix, Struts2, and Tuscany, respectively)。

对于所有的错误报告,人工地去检测它是否是构建过程中出现的错误,最后,identified 121 build process bugs (27, 33, 12, 11, and 38 for CXF, Camel, Felix, Struts2,
and Tuscany, respectively).


S3    EMPIRICAL STUDY RESULTS 实证研究结果

RQ1:构建过程中的错误的严重分布

JIRA在bug report中指定了5中严重等级:Blocker, Critical, Major, Minor, and Trivial.

发现:

  1. 无论是构建错误还是非构建错误,他们导致系统严重问题(级别为Blocker和Critical)的错误数量都相对较少;
  2. 导致系统严重问题(级别为Blocker和Critical)的错误中,构建错误的数量小于非构建错误的数量;

RQ2:BUG修复时间

用两个时间戳来记录fix time

发现:

  1. To fix a bug, the time effort for a build process bug is around 2.03 times the time required to fix a non-build bug.(构建错误的维护时间是非构建错误的维护时间的2.03倍)
  2. the mean fix time of bug reports whose severity levels are either Major, Critical, or Blocker is much longer for build process bugs than for other bugs(严重等级在Major, Critical, or Blocker 的构建错误的平均维护时间要比相应的非构建错误的维护时间要长)

RQ3:修改过的源文件的数量

发现:

  1. the number of source files modified for build process bugs is much more than that of non-build bugs(修复构建错误所需要修改的源文件数量远远多余非构建错误)
  2. the number of source files modified for bug reports whose severity levels are either Major, Critical, or Blocker is much more for build

process bugs than for other bugs, (严重等级在Major, Critical, or Blocker的构建错误修复所需的源文件数量远远大于非构建错误)

实证研究结果的有效性

由于有些过程是人工检测的,所以难免会有一些错误

【软件分析与挖掘】An Empirical Study of Bugs in Build Process的更多相关文章

  1. 【软件分析与挖掘】ELBlocker: Predicting blocking bugs with ensemble imbalance learning

    摘要: 提出一种方法——ELBlocker,用于自动检测出Blocking Bugs(prevent other bugs from being fixed). 难度在于这些Blocking Bugs仅 ...

  2. 【软件分析与挖掘】A Comparative Study of Supervised Learning Algorithms for Re-opened Bug Prediction

    摘要: 本文主要是评估多种监督机器学习算法的有效性,这些算法用于判断一个错误报告是否是reopened的,算法如下: 7种监督学习算法:kNN,SVM, SimpleLogistic,Bayesian ...

  3. 【软件分析与挖掘】Vision of Software Clone Management: Past, Present, and Future (Keynote Paper)

    abstract: 代码克隆的综述 S1    INTRODUCTION AND MOTIVATION 代码克隆的利弊: 利:可以有效地去耦合,避免其他一些可能的错误: 弊:当被复制的那段code中带 ...

  4. 【软件分析与挖掘】Multiple kernel ensemble learning for software defect prediction

    摘要: 利用软件中的历史缺陷数据来建立分类器,进行软件缺陷的检测. 多核学习(Multiple kernel learning):把历史缺陷数据映射到高维特征空间,使得数据能够更好地表达: 集成学习( ...

  5. 【软件分析与挖掘】BOAT: An Experimental Platform for Researchers to Comparatively and Reproducibly Evaluate Bug Localization Techniques

    摘要: 目前有许多的bug定位技术,但是,由于他们基于不同的数据集,而且有些数据集还不是公开的,甚至有些技术只应用于小数据集,不具有通用性,因此,不好比较这些技术之间的优劣. 因此,BOAT应运而生. ...

  6. 第二次作业-Steam软件分析

    1 .介绍产品相关信息 随着电子音频游戏产业的发展以及正版意识的崛起,Steam已经成为大部分游戏爱好者必备的一款游戏下载平台.这款软件也使得Valve公司从一个游戏制作公司成功扩展业务到一个承揽众多 ...

  7. 使用AES加密的勒索类软件分析报告

    报告名称:  某勒索类软件分析报告    作者:        李东 报告更新日期: 样本发现日期: 样本类型: 样本文件大小/被感染文件变化长度: 样本文件MD5 校验值: da4ab5e31793 ...

  8. [软件逆向]实战Mac系统下的软件分析+Mac QQ和微信的防撤回

      0x00  一点废话 最近因为Mac软件收费的比较多,所以买了几款正版软件,但是有的软件卖的有点贵,买了感觉不值,不买吧,又觉得不方便,用别人的吧,又怕不安全.于是我就买了正版的Hopper Di ...

  9. 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】

    1.序言: 随着手机功能的不断更新和推广,手机应用市场的竞争变得愈发激烈.这次我们选择必应词典和有道词典的苹果客户端作对比,进一步分析这两款词典的客户端在功能和用户体验方面的利弊.这次测评的主要评测人 ...

随机推荐

  1. Unity 基础-------------------------关于Anchor锚点的理解

    Unity进阶技巧 - RectTransform详解 Zui 关注 2016.02.17 01:27 字数 1704 阅读 22157评论 13喜欢 57赞赏 2 RectTransform属性一览 ...

  2. 学习Unity的步骤

    作者:王选易链接:https://www.zhihu.com/question/23790314/answer/46815232来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  3. hdu 2771(uva 12171) Sculpture bfs+离散化

    题意: 给出一些边平行于坐标轴的长方体,这些长方体可能相交.也可能相互嵌套.这些长方体形成了一个雕塑,求这个雕塑的整体积和表面积. 题解: 最easy想到直接进行bfs或者dfs统计,但此题的麻烦之处 ...

  4. ASP.NET后台输出js脚本代码

    利用asp.net输出js我们大多数都会直接使用Respone.Write()然后根js格式的代码,再在页面调用时我们直接这样是完全可以实现的,下面我来给大家介绍另一种方法 我是我最初的想法以下是代码 ...

  5. perl 查看某个模块的安装路径

    perldoc 命令可以查看某个模块的安装路径 命令: perldoc -l Bio::Seq 返回值如下: /usr/local/share/perl5/Bio/Seq.pm

  6. 近期全国各地联通线路无法访问OA的解决方案

    最近有多地区使用联通线路的用户无法访问easyradius控制台,即oa.ooofc.com,其主要的原因是由于联通的DNS解析错误,导致的 oa.ooofc.com的解析IP是115.239.252 ...

  7. linux中crontab命令

    一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...

  8. lakala反欺诈建模实际应用代码GBDT监督学习

    /** * Created by lkl on 2018/1/16. */ import org.apache.spark.mllib.evaluation.BinaryClassificationM ...

  9. EJB的魅惑来源

      有人发帖子问学习EJB有个屁用啊?看完下面一个简单的介绍,也许你对EJB很感兴趣,它的优点极具魅惑力. 一.EJB是基于组件的开发. 利用Enterprise JavaBean,你就能像搭积木一样 ...

  10. Android:AS与Unity3D之间打包的各种坑及解决方案

    作者:DrkCore (http://blog.csdn.net/DrkCore) 原文链接:(http://blog.csdn.net/drkcore/article/details/5207937 ...