识别多样软件项目中的技术债务及其类型
DebtFree, a two-mode framework based on unsupervised learning is proposed as a more efficient and accurate way for identifying Self-Admitted Technical Debts (SATDs) in software projects, reducing labeling effort by up to 99% and improving the F1 score to almost 100%.
Jan, 2022
通过机器学习方法,本文针对问题跟踪系统中的自认技术债务(Self-Admitted Technical Debt, SATD)提出自动识别方案,并使用两种流行的跟踪系统(Jira和Google Monorail)收集和手动分析来自七个开源项目的4,200个问题。研究结果表明,我们的方法比基线方法在F1得分方面表现出更好的性能,并且所提取的SATD关键字是直观的,可能表明了SATD的类型和指标。
Feb, 2022
本研究提出了一种结合源代码注释、提交信息、拉请求和问题跟踪系统的方法,以自动化地识别自认为存在的技术债务,并展示了其比基线方法更高的性能,同时分析了103个开源项目中自认为存在的技术债务的关键字和不同来源之间的关系。
Feb, 2022
本文介绍一种新的使用BERT架构改进自我承认技术债务检测的方法,并比较之前的深度学习方法,发现在跨项目情况下,该方法的性能优于之前的所有方法。
Mar, 2023
本文综合回顾了关于使用AI工具避免技术债务的现有研究,其中分析了15篇涵盖不同AI技术的文章,如代码分析与审查,自动化测试,代码重构,预测性维护,代码生成和代码文档化,并探讨了它们在解决技术债务方面的效果、挑战和限制,为想要在软件开发过程中有效减轻技术债务的团队提供了实用指南。
Jun, 2023
本文采用变换器预训练和微调等不同策略的深度学习模型,实证研究技术债务能否自动偿还。研究结果表明,自动偿还技术债务是一项具有挑战性的任务,最佳模型仅能自动修复2%至8%的测试实例,对性能提升起到关键作用。
Aug, 2023
自我承认技术债务(SATD)是一种特定形式的技术债务,由开发人员在软件工件中明确记录,如源代码注释和提交消息。本研究旨在提出一种新方法,利用大规模数据集自动估计SATD的还款工作,通过评估不同类型的债务及其还款的程度,并应用机器学习技术来提高还款工作的优先级和资源分配效率,以最终促进软件开发和可维护性。
Sep, 2023
软件开发项目中技术债务检测的特征提取技术和算法进行了综述,发现NLP+DL组在所有项目中的精确度和F1分数上始终表现优秀,并且在召回率度量上几乎所有项目都优于其他组。此外,PTWE在每个项目的精确度、召回率和F1分数上均表现较优,根据综述结果,我们确定了每个软件开发生命周期阶段最佳的特征提取技术和算法,并提出了对研究人员和实践者可能关注的问题。
Dec, 2023
自承的技术债(SATD)是一种技术债形式,在其中开发人员明确承认和记录代码库中存在的技术捷径、变通方案或暂时解决方案。在过去几年中,研究人员通过人工标注数据集,包括源代码注释、问题跟踪器和拉取请求部分的消息以及提交消息,以用于训练、评估、性能验证和改进机器学习和深度学习模型来准确识别SATD实例。然而,现有数据集中存在类别不平衡的严重挑战,特别是当研究人员有兴趣对SATD的具体类型进行分类时。为了解决现有数据集中SATD识别(即实例是否为SATD)和分类(即对哪种类型的SATD进行分类)的标记数据不足的问题,我们分享了SATDAUG数据集,这是现有SATD数据集的增强版本,包括源代码注释、问题跟踪器、拉取请求和提交消息。这些增强的数据集在可用的工件相关性方面进行了平衡,并为训练机器学习或深度学习模型提供了更丰富的标记数据源。
Mar, 2024
研究了软件项目中不同因素对于识别漏洞的准确性的影响,通过挖掘软件库中的漏洞并使用机器学习技术进行自动检测。通过实验发现,将基于词袋模型的签名与随机森林模型相结合,在17个真实世界项目中能提高4%的检测准确率,并观察到在跨域中转移漏洞签名的局限性。
Jun, 2024