Skip to main content
QUICK REVIEW

[论文解读] Early Life Cycle Software Defect Prediction. Why? How?

N. C. Shrikanth, Suvodeep Majumder|arXiv (Cornell University)|Nov 26, 2020
Software Engineering Research参考文献 71被引用 4
一句话总结

本文提出一种数据量极少的早期软件生命周期缺陷预测方法,表明仅使用前150次提交和四个月数据训练的模型,其性能与使用完整项目历史数据训练的模型相当。关键发现是,在长期运行的GitHub项目中,96%的时间内无需进一步收集数据,从而挑战了软件分析领域中‘数据越多越好’的普遍假设。

ABSTRACT

Many researchers assume that, for software analytics, "more data is better." We write to show that, at least for learning defect predictors, this may not be true. To demonstrate this, we analyzed hundreds of popular GitHub projects. These projects ran for 84 months and contained 3,728 commits (median values). Across these projects, most of the defects occur very early in their life cycle. Hence, defect predictors learned from the first 150 commits and four months perform just as well as anything else. This means that, at least for the projects studied here, after the first few months, we need not continually update our defect prediction models. We hope these results inspire other researchers to adopt a "simplicity-first" approach to their work. Some domains require a complex and data-hungry analysis. But before assuming complexity, it is prudent to check the raw data looking for "short cuts" that can simplify the analysis.

研究动机与目标

  • 挑战软件分析领域中‘更多数据总是能提升缺陷预测模型性能’的假设。
  • 探究早期阶段的数据是否足以生成有效的缺陷预测器,而无需长期数据收集。
  • 评估数据密集型方法是否真正必要,还是仅使用早期数据的方法已足够用于缺陷预测。
  • 提供一种可复现的方法论,用于使用最少数据评估早期生命周期缺陷预测。
  • 激励在软件工程研究中采用‘简洁优先’的方法,尤其是在数据收集成本高或不稳定的场景下。

提出的方法

  • 本研究分析了155个长期运行、高星标GitHub项目(中位项目寿命84个月,共3,728次提交),以评估缺陷在项目生命周期中的分布情况。
  • 比较了基于早期数据(前150次提交和4个月)训练的缺陷预测模型,与基于完整项目历史数据训练的模型之间的性能差异。
  • 使用六种分类学习器(逻辑回归、最近邻、决策树、SVM、随机森林、朴素贝叶斯)在不同训练数据窗口下评估模型性能。
  • 评估使用七项指标:召回率、PF、IFA、Brier、GM、D2H和AUC,由于不平衡数据问题,未包含精确率。
  • 采用采样策略'E',从最初的150次提交中随机选择50次提交,以确保对早期数据变异性的鲁棒性。
  • 该方法比较了基于早期数据(E)训练的模型与基于近期数据(RR)训练的模型,评估数据的‘新鲜度’是否能提升性能。

实验结果

研究问题

  • RQ1在项目生命周期早期(仅占其生命周期4%)的数据上训练缺陷预测模型,其性能是否与使用完整项目历史数据相当?
  • RQ2在项目生命周期的某个时间点之后,是否会出现数据增加带来的收益递减现象?
  • RQ3基于近期数据训练的‘新鲜度’模型是否优于基于早期数据训练的模型?
  • RQ4‘简洁优先’方法是否能减少对持续模型重训练的需求,同时不牺牲准确性?
  • RQ5在非平凡的、长期运行的软件项目中,仅靠早期数据在多大程度上能支持可靠的缺陷预测?

主要发现

  • 缺陷高度集中在项目早期阶段:项目生命周期的96%时间无需额外数据即可实现有效的缺陷预测。
  • 基于前150次提交和四个月数据训练的模型,其性能与基于完整项目历史数据训练的模型相当,表明早期数据已足够。
  • 基于早期数据和近期数据训练的模型之间,性能无显著差异,挑战了‘数据越新越好’的假设。
  • 不同学习器(共六种)在早期生命周期预测器上的表现稳定且相近,表明其对模型选择具有鲁棒性。
  • 结果表明,对于长期运行的非平凡项目,缺陷预测可能并不需要数据密集型方法,尤其当早期数据本身已具信息量时。
  • 本研究结果对依赖近期验证数据的先前研究提出质疑,因为此类数据可能位于项目生命周期中信息量较低的区域。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。