[论文解读] Towards Software Analytics: Modeling Maintenance Activities
本文提出了一种跨项目提交分类模型,结合细粒度源代码变更与提交信息分析,以提升软件维护活动分类的准确性。通过随机森林与特征工程,该方法实现了76%的准确率和63%的Kappa值,较先前工作高出超过20个百分点,显著提升了软件分析与维护规划的可靠性。
Lehman's Laws teach us that a software system will become progressively less satisfying to its users over time, unless it is continually adapted to meet new needs. Understanding software maintenance can potentially relieve many of the pains currently experienced by practitioners in the industry and assist in reducing uncertainty, improving cost-effectiveness, reliability and more. The research community classifies software maintenance into 3 main activities: Corrective: fault fixing; Perfective: system improvements; Adaptive: new feature introduction. In this work we seek to model software maintenance activities and design a commit classification method capable of yielding a high quality classification model. We performed a comparative analysis of our method and existing techniques based on 11 popular open source projects from which we had manually classified 1151 commits, over 100 commits from each of the studied projects. The model we devised was able to achieve an accuracy of 76% and Kappa of 63% (considered '"Good" in this context) for the test dataset, an improvement of over 20 percentage points, and a relative improvement of ~40% in the context of cross-project classification. We then leverage our commit classification method to demonstrate two applications: (1) a tool aimed at providing an intuitive visualization of software maintenance activities over time, and (2) an in-depth analysis of the relationship between maintenance activities and unit tests.
研究动机与目标
- 超越现有基于词频的方法,提升提交分类为维护活动(纠错性、完善性、适应性)的准确率与可靠性。
- 通过聚焦于跨项目分类,解决先前研究的局限性,更真实地反映现实世界中的软件工程场景。
- 通过使用Cohen's Kappa(一种在先前研究中常被忽视的指标)来应对维护活动分布中的类别不平衡问题。
- 开发分类模型的实际应用,包括可视化与测试缺陷检测,以支持软件分析与维护规划。
- 证明细粒度源代码变更类型即使在不同开源项目之间,也是区分维护活动类型的有效特征。
提出的方法
- 从11个流行的开源项目中收集并人工分类了1,151个提交,每个项目约100个提交,形成一个平衡的基准数据集。
- 通过提交差异的静态分析提取细粒度源代码变更类型(如添加、删除、修改),将其作为结构化特征。
- 通过文本清洗、归一化和TF-IDF向量化对提交信息进行预处理,以提取语言学特征。
- 将结构化特征(代码变更)与语言学特征(提交信息)结合,构建混合模型用于分类。
- 在85%的数据上使用重复5折交叉验证训练并评估多种分类器(随机森林RF、梯度提升机GBM、J48),剩余15%用于测试。
- 基于准确率与Kappa值选择表现最佳的模型(基于RF的复合模型),并在未见的跨项目测试数据上验证其性能。
实验结果
研究问题
- RQ1RQ1:细粒度源代码变更是否可有效用于构建高质量的软件提交维护活动分类模型?
- RQ2RQ2:结合源代码变更与提交信息特征的模型是否能在跨项目提交分类中超越现有的基于词频的模型?
- RQ3RQ3:所提出的分类方法是否能支持软件分析中的实际应用,如可视化维护趋势与检测测试缺陷项目?
主要发现
- 所提出的复合模型在测试集上实现了76%的准确率与63%的Kappa值,相较于先前的跨项目分类方法,准确率提升超过20个百分点,相对提升约40%。
- 随机森林(RF)算法在跨项目分类中表现优于GBM与J48,展现出该任务中的稳健性。
- 文本清洗与归一化提升了基线词频模型的表现,在跨项目数据上达到68–69%的准确率与51–53%的Kappa值。
- 表现最佳的模型(复合模型)在测试集上达到76%准确率与63% Kappa值,根据Altman(1990)标准被归类为“良好”级别。
- 本研究证实,源代码变更类型是维护活动类型的统计显著预测因子,支持其在预测建模中的应用。
- 软件维护活动探索工具成功可视化了随时间变化的维护活动趋势,有助于识别项目与开发者之间的同质化维护特征。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。