迈向自动消除自承认技术债务:我们还有多远?
软件工程
2023-08-21 v1 人工智能
摘要
在软件演进过程中,组织与个人开发者必须投入大量精力来偿还技术债务,即软件以不如预期良好的形态发布(例如在功能性、可靠性或可维护性方面)。本文实证研究了基于神经生成模型、特别是采用不同预训练与微调策略的模型能自动消除多少技术债务。我们首先从595个开源项目中提取了一个包含5,039条自承认技术债务(SATD)移除记录的日期集。SATD指由开发者记录(如通过代码注释)的技术债务实例。我们利用该数据集对七种不同的生成式深度学习(DL)模型配置进行实验。具体而言,我们比较了采用不同训练目标组合进行预训练与微调的Transformer,包括修复通用代码变更、SATD移除,以及SATD注释提示微调。此外,我们探究了近期可用的基于大语言模型(LLM)的聊天机器人在此场景下的适用性。研究结果表明,SATD的自动化偿还是一项具有挑战性的任务,我们所实验的最佳模型能自动修复约2%至8%的测试实例,具体取决于允许其尝试的次数。鉴于微调数据集规模有限(约5k实例),模型的预训练对提升性能起着基础性作用。同时,若未将记录SATD的注释作为模型输入,其消除SATD的能力会稳步下降。最后,我们发现通用LLM并非解决SATD的竞争性方案。
引用
@article{arxiv.2308.08943,
title = {Towards Automatically Addressing Self-Admitted Technical Debt: How Far Are We?},
author = {Antonio Mastropaolo and Massimiliano Di Penta and Gabriele Bavota},
journal= {arXiv preprint arXiv:2308.08943},
year = {2023}
}