一句话:首次研究真实在线学习场景下,跨项目数据对即时软件缺陷预测何时及多大程度有用。
即时软件缺陷预测(JIT-SDP)用机器学习分类器判断代码变更是否引入缺陷,但项目初期训练数据不足。跨项目(CP)JIT-SDP 可借用其他项目数据,但此前未在真实在线学习场景(WP 变更持续到达并更新分类器)中考察。本文提出三种可在线运行、随时间同时利用 CP 与 WP 样本更新的 CP JIT-SDP 方法,并在某公司 3 个仓库的 2048 次提交和 10 个开源 GitHub 项目共 198,468 次提交上评估。结果显示:项目初期 CP+WP 训练使 G-mean 相对仅用 WP 最高提升 53.90%;对长期项目,CP 数据可缓解性能下降,下降期 G-mean 提升约 40%,且大量 WP 数据到达后仍有益,整体最高提升 18.5%。
Just-In-Time Software Defect Prediction (JIT-SDP) is concerned with predicting whether software changes are defect-inducing or clean based on machine learning classifiers. Building such classifiers requires a sufficient amount of training data that is not available at the beginning of a software project. Cross-Project (CP) JIT-SDP can overcome this issue by using data from other projects to build the classifier, achieving similar (not better) predictive performance to classifiers trained on Within-Project (WP) data. However, such approaches have never been investigated in realistic online learning scenarios, where WP software changes arrive continuously over time and can be used to update the classifiers. It is unknown to what extent CP data can be helpful in such situation. In particular, it is unknown whether CP data are only useful during the very initial phase of the project when there is little WP data, or whether they could be helpful for extended periods of time. This work thus provides the first investigation of when and to what extent CP data are useful for JIT-SDP in a realistic online learning scenario. For that, we develop three different CP JIT-SDP approaches that can operate in online mode and be updated with both incoming CP and WP training examples over time. We also collect 2048 commits from three software repositories being developed by a software company over the course of 9 to 10 months, and use 19,8468 commits from 10 active open source GitHub projects being developed over the course of 6 to 14 years. The study shows that training classifiers with incoming CP+WP data can lead to improvements in G-mean of up to 53.90% compared to classifiers using only WP data at the initial stage of the projects. For the open source projects, which have been running for longer periods of time, using CP data to supplement WP data also helped the classifiers to reduce or prevent large drops in predictive performance that may occur over time, leading to up to around 40% better G-Mean during such periods. Such use of CP data was shown to be beneficial even after a large number of WP data were received, leading to overall G-means up to 18.5% better than those of WP classifiers.
@inproceedings{paperbot5623,
title = {An investigation of cross-project learning in online just-in-time software defect prediction},
author = {Sadia Tabassum and Leandro L. Minku and Danyi Feng and George G. Cabral and Liyan Song},
booktitle = {ICSE},
year = {2020},
doi = {10.1145/3377811.3380403}
}