摘要
技术债务是指在软件开发过程中,为了追求短期利益而做出的次优决策所带来的后果,这些决策优先考虑短期利益而非长期可维护性。自我承认的技术债务(SATD)是一种特殊形式的技术债务,由开发者在软件制品中明确记录,如源代码注释和提交消息。由于SATD可能阻碍软件开发和维护,因此估算偿还SATD所需的努力至关重要,以便我们能够有效地进行优先排序。然而,我们目前对SATD偿还的理解不足,更重要的是,我们缺乏能够根据其文本描述自动估算SATD偿还努力的方法。为了填补这一空白,我们从1,060个Apache仓库的2,568,728次提交中整理了341,740个SATD项目,并分析了SATD与非SATD项目以及不同类型SATD项目的偿还努力。此外,我们提出了一种名为PRESTI的创新方法,用于使用文本信息预测SATD的偿还努力。我们的研究结果表明,不同类型的SATD需要不同程度的偿还努力,其中代码/设计、需求和测试债务比非SATD项目需要更多的努力,而文档债务则需要较少的努力。我们评估了我们的方法,特别是基于BERT和TextCNN的模型,这些模型在估算偿还努力方面优于传统的机器学习方法和基线。此外,我们总结了在SATD偿还过程中与不同偿还努力水平相关的关键词。我们的工作旨在增强SATD偿还的优先排序和资源分配,从而提高软件开发和可维护性。