Self-Admitted Technical Debt in the Embedded Systems Industry: An Exploratory Case Study
技术债是指软件开发过程中的捷径,主要是为了方便。当开发人员明确承认这种快捷方式时(例如,写一个TODO/Fixme评论),它们被称为自我承认的技术债务或SATD。在开源项目中已经有相当多的研究SATD管理的工作,但在工业中的SATD相对较少。与此同时,没有工作集中在开发人员对SATD及其管理的观点。为了解决这个问题,我们与一个行业合作伙伴合作进行了一个探索性的案例研究,以研究他们如何看待SATD以及他们如何管理它。具体来说,我们通过识别和描述不同来源(问题,源代码注释和提交)的SATD来收集数据,并对12名软件从业者进行了一系列访谈。结果显示:1)工业项目中SATD的核心特征; 2)开发者对已识别的SATD和统计数据的态度; 3)从业者引入和回报SATD的触发因素; 4)不同来源的SATD之间的关系; 5)用于管理SATD的实践; 6)SATD管理的挑战和工具思想。
2022-11-21 cs.SE
FIXME: Synchronize with Database An Empirical Study of Data Access Self-Admitted Technical Debt
开发人员有时会因为紧张的发布时间表的压力而选择设计和实现的捷径。然而,快捷方式引入了技术债务,随着软件的发展而增加。债务需要尽快偿还,以尽量减少其对软件开发和软件质量的影响。有时,开发人员在评论和提交消息中承认技术债务。这种债务被称为自我承认的技术债务(SATD)。在数据密集型系统中,数据操作是一个关键功能,在数据访问逻辑中存在SATD可能会严重损害性能和可维护性。了解SATD在软件系统中的组成和分布及其演变可以为有效管理技术债务提供见解。我们提出了一个大规模的实证研究的患病率,组成和演变的SATD在数据密集型系统。我们分析了83个依赖于关系数据库的开源系统以及19个依赖于NoSQL数据库的系统。我们在从主题系统的不同快照获得的源代码注释中检测到SATD。为了了解SATD的进化动力学,我们进行了生存分析。接下来,我们对361个样本数据访问SATD进行了手动分析,调查了数据访问SATD的组成以及引入和删除它们的原因。我们确定了15个新的SATD类别,其中11个是特定于数据库访问操作。我们发现,大多数数据访问SATD是在变更历史的后期阶段而不是在开始时引入的。我们还观察到,bug修复和重构是引入数据访问SATD的主要原因。
2022-01-06 cs.SE
Multi-Artifact Analysis of Self-Admitted Technical Debt in Scientific Software
Boise State University(博伊西州立大学);Oak Ridge National Laboratory(橡树岭国家实验室)
本研究通过多工件分析识别科学软件中的科学债务,发现传统SATD分类不足,需专门方法进行检测与管理。
2026-01-15 cs.SE
Identifying Self-Admitted Technical Debts with Jitterbug: A Two-step Approach
跟踪和管理自我承认的技术债务(SATD)对于维护一个健康的软件项目非常重要。这需要人类专家花费大量时间和精力来手动识别SATD。目前的自动化解决方案在识别SATD以完全自动化该过程方面不具有令人满意的精确度和召回率。为了解决上述问题,我们提出了一个两步的框架,称为Jitterbug识别SATD。Jitterbug首先使用一种新的模式识别技术自动识别“容易找到”的SATD,精度接近100%。随后,应用机器学习技术来帮助人类专家以减少的人力手动识别剩余的“难以找到的”SATD。我们对十个软件项目的模拟研究表明,Jitterbug可以比现有的最先进的方法更有效地识别SATD(以更少的人力)。
2020-10-17 cs.SE
Characterizing and Mitigating Self-Admitted Technical Debt in Build Systems
技术债是一个比喻,用来描述软件项目中的短期目标与长期软件工件质量的交换。自承技术债(SATD)是近年来提出的一个概念,它主要针对开发者有意引入和描述的技术债。虽然先前的工作已经对源代码中公认的技术债务进行了重要的观察,但对构建系统中的SATD知之甚少。在本文中,我们将更好地理解SATD在构建系统中的特性。要做到这一点,通过对Maven构建系统中291个项目的500条SATD评论进行定性分析,我们通过位置和理由(原因和目的)来表征SATD。我们的研究结果表明,工具和库的限制以及依赖管理的复杂性是最常见的原因,分别占评论的50%和24%。我们还发现,开发人员经常将SATD记录为以后要解决的问题。作为自动检测SATD原理的第一步,我们训练分类器来检测Maven构建系统中注释内容中SATD的两个最常见原因和四个最常见目的。分类器的性能是有前途的,实现了0.71-0.79的F1分数。最后,在16个确定的“准备解决”SATD实例中,通过拉取请求提交的三个SATD和通过问题报告提交的五个SATD在开发人员意识到之后得到了解决。我们的工作为理解构建系统中的技术债务迈出了第一步,并为未来的工作开辟了道路,例如跟踪和管理SATD积压的工具支持。
2021-11-02 cs.SE
Beyond the Code: Mining Self-Admitted Technical Debt in Issue Tracker Systems
自我承认的技术债务(SATD)是技术债务(TD)的一种特殊情况,开发人员明确承认他们的次优实现决策。以前的研究通过在源代码注释中搜索特定的TD相关术语来挖掘SATD。相比之下,在本文中,我们认为开发人员可以通过其他方式承认技术债务,例如,通过在跟踪系统中创建问题并将其标记为涉及TD。我们将这种类型的SATD称为基于问题的SATD或SATD-I。我们研究了从五个开源项目中收集的286个SATD-I实例的样本,包括Microsoft Visual Studio和GitLab Community Edition。我们发现,只有29%的研究SATD-I实例可以跟踪到源代码注释。我们还表明,SATD-I问题需要更多的时间来关闭,相比其他问题,虽然他们并不更复杂的代码流失。此外,在所研究的问题中,45%的TD是在早期引入的,近60%的TD是指设计缺陷。最后,我们报告说,大多数开发人员支付SATD-I,以减少其成本或利益(66%)。我们的研究结果表明,有空间设计新的工具,以支持技术债务管理,特别是工具,鼓励开发人员创建和标签问题包含TD的关注。
2020-03-20 cs.SE
Self-Admitted Technical Debt in LLM Software: An Empirical Comparison with ML and Non-ML Software
École de Technologie Supérieure - ÉTS Montreal(蒙特利尔高等工程技术学院);Trent University(特伦特大学)
本文通过实证研究比较了大语言模型、机器学习和非机器学习软件中的技术债情况,发现LLM系统积累技术债的速度与ML系统相似,但保持无债时间更长,并发现了三种新的技术债类型。
2026-01-20 cs.SE
Data Balancing Improves Self-Admitted Technical Debt Detection
技术债和非技术债源代码注释之间存在高度不平衡。这种不平衡影响了自承认技术债务(SATD)检测性能,现有文献缺乏经验证据的平衡技术的选择。在这项工作中,我们评估了多种平衡技术的影响,包括数据级,分类器级和混合,SATD检测在项目内和跨项目设置。我们的研究结果表明,数据级平衡技术SMOTE或分类器级Ensemble方法随机森林或XGBoost是合理的选择,这取决于目标是最大化精度,召回率,F1或AUC-ROC。我们将我们的最佳性能模型与之前的SATD检测基准(成本敏感卷积神经网络)进行了比较。有趣的是,具有SMOTE采样的性能最好的XGBoost将项目内F1分数提高了10%,但在跨项目设置中却下降了9%。这支持深度学习在跨项目SATD检测中的更高泛化能力,但在单个项目中工作时,经典的机器学习算法可以提供更好的性能。我们还评估和量化重复的源代码注释在SATD检测性能的影响。最后,我们采用SHAP和讨论解释的SATD功能。我们已经包括了复制包,并在这项研究中与平衡技术分享了一个基于网络的SATD预测工具。
2021-03-24 cs.SE
MAT: A simple yet strong baseline for identifying self-admitted technical debt
在软件演化过程中,开发人员往往由于特定的原因而牺牲长期的代码质量来满足短期的目标,这就是所谓的技术债。自我承认的技术债务(SATD)是指那些故意引入并由代码注释注释的债务。这些技术债务降低了软件的质量,增加了后续软件维护的成本。因此,必须及时发现和解决这些债务。最近,已经提出了许多方法来识别SATD。然而,这些方法要么具有低精度,要么在实践中实现复杂。在本文中,我们提出了一个简单的无监督基线方法,模糊匹配任务注释标签(MAT),以确定SATD。MAT不需要任何训练数据来建立预测模型。相反,MAT只检查四个任务标签(即TODO、FIXME、XXX和HACK)中的任何一个是否出现在目标项目的注释中,以识别SATD。从这个意义上说,MAT是一种自然的基线方法,具有良好的可理解性,在SATD识别。为了评估MAT的有用性,我们使用了10个开源项目来进行实验。实验结果表明,MAT有一个令人惊讶的SATD识别性能相比,国家的最先进的方法。因此,我们建议,在未来的SATD识别研究中,MAT应被视为一个易于实施的基线,任何新的方法应进行比较,以证明其有用性。
2019-10-29 cs.SE
FixMe: A GitHub Bot for Detecting and Monitoring On-Hold Self-Admitted Technical Debt
自我承认的技术债务(SATD)是一种特殊形式的技术债务,开发人员通过添加注释来故意在代码中记录他们的黑客行为。在这里,我们关注与问题相关的“暂停SATD”,即开发人员由于项目内部或外部报告的问题而暂停适当的实现。当所引用的问题得到解决时,还需要解决On-hold SATD,但由于监视这些问题报告需要花费大量时间和精力,因此开发人员可能不知道已解决的问题,并将On-hold SATD留在代码中。在本文中,我们提出了FixMe,这是一个GitHub机器人,可以帮助开发人员检测和监控其存储库中的On-hold SATD,并在On-hold SATD准备修复时通知他们(即解决了引用的问题)。机器人可以使用机器学习技术自动检测源代码中的等待SATD注释,并发现引用的问题。当所提到的问题得到解决时,FixMe bot将通知开发人员。对11名参与者进行的评估表明,我们的FixMe机器人可以支持他们处理等待SATD。FixMe可在https://www.fixmebot.app/上获得,FixMe的VDO可在https://youtu.be/YSz9kFxN_YQ上获得。
2021-09-07 cs.SE
SATDBailiff- Mining and Tracking Self-Admitted Technical Debt
自我承认的技术债务(SATD)是一个隐喻性的概念,用来描述以源代码注释的形式向软件项目中添加的自我记录的技术债务。SATD可能会在项目中存在并降低源代码质量,但它也可能比无意中添加或未记录的技术债务更明显。理解将SATD添加到软件项目中的含义是很重要的,因为开发人员可以从更好地理解他们所做的质量权衡中受益。然而,分析SATD注释的生存性和删除的实证研究受到潜在代码更改或SATD注释更新的挑战,这些更改或更新可能会干扰正确跟踪它们的外观,存在和删除。在本文中,我们提出了SATDBailiff,一个使用现有的最先进的SATD检测工具的工具,以识别方法注释中的SATD,然后正确地跟踪它们的生命周期。SATDBailiff作为开源项目的输入链接,其输出是所有已识别SATD的列表,对于每个检测到的SATD,SATDBailiff报告所有相关更改,包括对其文本的任何更新,一直到报告其删除。SATDBailiff的目标是帮助研究人员和从业人员更好地跟踪SATD实例,并为他们提供一个可靠的工具,可以很容易地扩展。SATDBailiff使用先前检测到并手动验证的SATD实例的数据集进行验证。SATDBailiff作为一个开放源代码,以及与其验证相关的SATD实例的手动分析,可在项目网站上公开获得
2021-06-30 cs.SE
An Empirical Study of Self-Admitted Technical Debt in Machine Learning Software
本文研究了机器学习软件中自我承认的技术债务,发现其比例高于非机器学习项目,且在开发早期出现,长期债务多由复杂代码更改引入。
2025-11-27 cs.SE
Self-Admitted Technical Debt in Scientific Software: Prioritization, Sentiment, and Propagation Across Artifacts
Boise State University(博伊西州立大学);Oak Ridge National Laboratory(橡树岭国家实验室)
研究科学软件中自我承认技术债务的优先级、情感、持久性和跨工件传播,发现注释、提交和拉取请求中的SATD优先级高于问题,负面情感增加紧迫性,但移除和解决率低于开源软件平均水平。
2026-06-29 cs.SE
Evidence is All We Need: Do Self-Admitted Technical Debts Impact Method-Level Maintenance?
本文通过分析49个开源项目中的774,051个方法,实证研究了自承认技术债务对方法级软件维护的影响,发现SATD会降低代码质量与可读性、增加缺陷和变更倾向,并长期未解决,从而强调早期识别与主动管理的必要性。
2025-02-05 cs.SE
A First Look at Duplicate and Near-duplicate Self-admitted Technical Debt Comments
自我承认的技术债务(SATD)是指由开发人员故意引入并明确记录在代码注释或其他软件工件中的技术债务(例如,问题报告)来注释开发人员在软件开发过程中做出的次优决策。在这项工作中,我们首先研究了五个流行的Apache OSS项目中重复和近似重复的SATD注释的存在和特征,即,JSPWiki、Hacker、Jackrabbit、Archiva和SystemML。我们设计了一种方法来自动识别组的重复和接近重复的SATD评论,并跟踪其演变的软件系统中挖掘的提交历史的软件项目。利用所提出的方法,我们从目标项目中识别出3,520条重复和近似重复的SATD评论,这些评论属于1,141组。我们手动分析了1,505条SATD评论的内容和上下文(每个项目抽取100组),并确定它们是否注释了相同的根本原因。我们还调查了重复的SATD注释是否存在于代码克隆中,它们是否共存于同一个文件中,以及它们是否同时被引入和删除。我们的初步研究揭示了几个令人惊讶的发现,这将有助于未来的研究,旨在改善重复SATD评论的管理。例如,在常规代码克隆中,只有48.5%的具有相同根本原因的重复SATD注释组存在,并且只有33.9%的重复SATD注释对在同一提交中引入。
2022-03-30 cs.SE
How Do Community Smells Influence Self-Admitted Technical Debt in Machine Learning Projects?
本研究针对155个开源机器学习项目的版本数据,分析10类社区异味与6类自承认技术债(SATD)的关联及演化规律,发现特定异味与SATD高发强相关,强调早期干预社会技术问题对ML系统长期质量的重要性。
2025-07-31 cs.SE
Understanding Self-Admitted Technical Debt in Test Code: An Empirical Study
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);Hangzhou Dianzi University(杭州电子科技大学)
本研究通过实证分析揭示测试代码中自我承认技术债务的分布和类型,并开发机器学习模型进行自动分类,发现其与测试质量无直接关联。
2026-02-09 cs.SE
Utilization of machine learning for the detection of self-admitted vulnerabilities
本文提出利用 NLP 和 NL-PL 方法检测自承认技术债务及其相关漏洞,并设计 CI/CD 流水线以便从业者高效发现源代码中的薄弱环节。
2023-09-27 cs.SE
Negativity in Self-Admitted Technical Debt: How Sentiment Influences Prioritization
本文通过 59 名开发人员参与的实验,研究 SATD 描述中的负面情绪是否影响优先级排序,发现负面情绪会使三分之一到一半的开发人员提高其紧急性、重要性和工作量估计,但多数开发人员认为这种做法不可接受。
2025-01-02 cs.SE
A Framework for Conditional Statement Technical Debt Identification and Description
当开发团队更喜欢短期的可操作性而不是长期的稳定性时,就会出现技术债务。由于这将软件的可维护性置于风险之中,技术债务需要尽早关注,以避免支付累积的利息。现有的大多数工作都集中在使用代码注释来检测技术债务,称为自承认技术债务(SATD)。然而,在许多情况下,技术债务实例并没有被明确承认,而是深深隐藏在代码中。在本文中,我们提出了一个框架,迎合了没有SATD注释的代码。我们的自承认技术债务识别和描述(SATDID)框架确定是否应该为输入代码片段自承认技术债务。如果是这种情况,SATDID将自动生成可以附加到代码中的适当的描述性SATD注释。虽然我们的方法原则上适用于任何类型的代码片段,但在这项研究中,我们专注于隐藏在条件语句中的技术债务,这是代码中最具TD的部分之一。我们探索和评估SATDID的不同实现。评估结果表明,我们的框架在多个基准的适用性和有效性。与基准测试的结果相比,我们的方法提供了至少21.35%,59.36%,31.78%,和583.33%的精度,召回,F-1和蓝-4分数,分别提高。此外,我们对SATDID生成的SATD评论进行人工评估。在可接受性和可理解性的1-5和0-5量表中,通过我们的方法实现的总平均值分别为3.128和3.172。
2022-10-13 cs.SE
Automated Identification of On-hold Self-admitted Technical Debt
现代软件是在相当大的时间压力下开发的,这意味着当涉及到编写良好的代码和完成工作的代码时,开发人员往往不得不采取妥协。在过去的几十年里,这导致了“技术债务”的概念,这是一种短期的黑客行为,可能会产生长期的维护问题。自我承认的技术债务(SATD)是技术债务的一种特殊形式:开发人员有意识地执行黑客行为,但也通过添加注释作为提醒(或作为认罪)在代码中记录它。我们专注于一种特定类型的SATD,即“暂停”SATD,其中开发人员在其评论中记录了由于其工作范围之外的条件(例如,在可以实现功能之前,必须关闭打开的问题)。我们提出了一种基于正则表达式和机器学习的方法,该方法能够检测代码注释中引用的问题,并将检测到的实例自动分类为"On-hold"(引用问题是为了表明在完成任务之前需要等待其解决),或作为"交叉引用",(该问题被引用以记录代码,例如解释实现选择背后的基本原理)。我们的方法还挖掘项目的问题跟踪器,以检查是否保持SATD实例是"多余的"并且可以被移除(即,引用的问题已关闭,但SATD仍在代码中)。我们的评估证实,我们的方法确实可以识别相关的情况下,等待SATD。我们通过识别原始开发人员确认的开源项目中多余的暂停SATD实例来说明其有用性。
2020-09-28 cs.SE
Automated Self-Admitted Technical Debt Tracking at Commit-Level: A Language-independent Approach
本文提出首个语言无关的自我承认技术债务(SATD)提交级追踪工具,通过检测提交块中的 SATD 并计算上下文匹配分数来识别创建、删除和更新动作,在 Apache Tomcat 和 Apache Ant 上分别取得 92.8% 和 96.7% 的 F1 分数。
2023-04-16 cs.SE
A Taxonomy of Self-Admitted Technical Debt in Deep Learning Systems
本研究针对深度学习系统中的自承认技术债(SATD)开展实证分析,通过分析100个开源项目的443条SATD样本构建了含7大类41细分类目的分类体系,发现其多为次优方案问题且现有静态分析工具无法覆盖,需专门支持手段应对。
2024-09-18 cs.SE
Is Self-Admitted Technical Debt Tested? An Empirical Study of Coverage, Co-change, and Impact
Nara Institute of Science and Technology(奈良先端科学技术大学院大学);University of Groningen(格罗宁根大学)
本研究实证分析八个Java项目中自我承认的技术债务(SATD)与测试的关系,发现债务移除很少伴随针对性测试,且测试与否对短期缺陷影响不大,但长期可能影响缺陷可观察性。
2026-09-15 cs.SE
DebtFree: Minimizing Labeling Cost in Self-Admitted Technical Debt Identification using Semi-Supervised Learning
Department of Computer Science, North Carolina State University(北卡罗来纳州立大学计算机科学系);North Carolina State University(北卡罗来纳州立大学);Raleigh, USA(美国罗利)
跟踪和管理自我承认的技术债务(SATD)对于维护一个健康的软件项目非常重要。目前主动学习的SATD识别工具需要人工检查24%的测试评论,平均达到90%的召回率。在所有的测试评论中,大约5%是SATD。然后,人类专家需要阅读几乎五倍的SATD评论,这表明该工具的效率低下。此外,人类专家仍然容易出错:以前工作中95%的假阳性标签实际上是真阳性。为了解决上述问题,我们提出了DebtFree,一个基于无监督学习的双模式框架,用于识别SATD。在模式1中,当现有的训练数据未标记时,DebtFree从无监督学习器开始,自动伪标记训练数据中的编程注释。相比之下,在模式2中,标签与相应的训练数据一起可用,DebtFree从一个预处理器开始,该预处理器从测试数据集中识别高度倾向的SATD。然后,我们的机器学习模型被用来帮助人类专家手动识别剩余的SATD。我们对10个软件项目的实验表明,这两种模型在统计上都比最先进的自动化和半自动化模型的有效性有显著的提高。具体来说,DebtFree可以在模式1(未标记的训练数据)中减少99%的标记工作,在模式2(标记的训练数据)中减少63%,同时将当前主动学习者的F1相对提高到几乎100%。
2022-01-25 cs.AI cs.SE
A First Look at the Self-Admitted Technical Debt in Test Code: Taxonomy and Detection
University of Manitoba(曼尼托巴大学)
本研究首次分析测试代码中的自我承认技术债务,通过大规模样本识别其分类并评估现有检测工具的性能。
2026-09-28 cs.SE
Automatically Identifying Relations Between Self-Admitted Technical Debt Across Different Sources
Bernoulli Institute for Mathematics, Computer Science and Artificial Intelligence(伯努利数学、计算机科学与人工智能研究所);University of Groningen(格罗宁根大学)
自我承认的技术债务或SATD可以在各种来源中找到,例如源代码注释,提交消息,问题跟踪系统和拉取请求。以往的研究已经建立了不同来源的SATD项目之间的关系,这种关系可以是有用的调查和改善SATD管理。然而,目前缺乏自动检测这些SATD关系的方法。为了解决这个问题,我们提出并评估了自动识别不同来源的SATD关系的方法。我们的研究结果表明,我们的方法优于基线方法的大幅度,实现了平均F1得分为0.829,在确定SATD项目之间的关系。此外,我们探讨了103个开源项目中的SATD关系的特点,描述了9个主要案例,其中相关的SATD记录在第二个来源,并给出了26种关系的定量概述。
2023-03-13 cs.AI cs.SE
A First Look at the Lifecycle of DL-Specific Self-Admitted Technical Debt
本文挖掘40个ML项目中的185个深度学习专属SATD实例,分析其引入、承认与持续生命周期,发现债务集中于开发早中期及Training、Hardware阶段。
2025-10-04 cs.SE
Identifying Self-Admitted Technical Debt in Issue Tracking Systems using Machine Learning
University of Groningen(格罗宁根大学)
技术债是一个隐喻,表示通过牺牲软件的长期可维护性和可演化性来实现短期利益的次优解决方案。一种特殊类型的技术债务由软件工程师明确承认(例如使用TODO注释);这被称为自承认技术债务或SATD。大多数自动识别SATD的工作都集中在源代码注释上。除了源代码注释之外,问题跟踪系统已经被证明是SATD的另一个丰富来源,但是没有专门用于自动识别问题中的SATD的方法。在本文中,我们首先通过收集和手动分析来自七个开源项目(即,Camel、Chromium、Gerrit、Hadoop、HBase、Impala和Thrift),使用两种流行的问题跟踪系统(即,Jira和Google Monorail)。然后,我们提出并优化了一种使用机器学习自动识别问题跟踪系统中的SATD的方法。我们的研究结果表明:1)我们的方法在F1分数方面远远优于基线方法; 2)从合适的数据集转移知识可以提高我们方法的预测性能; 3)提取的SATD关键字是直观的,并且可能指示SATD的类型和指标; 4)与使用相同问题跟踪系统的项目相比,使用不同问题跟踪系统的项目具有较少的SATD关键字; 5)需要少量的训练数据来实现良好的精度。
2022-02-04 cs.AI cs.SE
Descriptor: C++ Self-Admitted Technical Debt Dataset (CppSATD)
University of Oulu(奥卢大学)
为解决现有SATD研究局限于Java语言的问题,本文提出了包含超53万条注释的C++自认技术债数据集CppSATD,为跨语言SATD检测与泛化研究奠定基础。
2025-06-01 cs.IR cs.LG cs.PL
Measuring Improvement of F$_1$-Scores in Detection of Self-Admitted Technical Debt
University of Ottawa(渥太华大学)
人工智能和机器学习见证了自然语言处理(NLP)任务的快速、显著改进。利用深度学习,研究人员利用软件工程中的存储库注释,从20个开源Java项目的代码中生成了检测自承认技术债务(SATD)的准确方法。在这项工作中,我们提高了SATD检测与一种新的方法,利用双向编码器表示从Transformers(BERT)架构。为了进行比较,我们重新评估了以前的深度学习方法,并应用分层10倍交叉验证来报告可靠的F $_1$分数。我们在跨项目和项目内的上下文中检查我们的模型。对于每种情况,我们使用重新采样和重复作为增强策略来解决数据不平衡问题。我们发现,我们训练的BERT模型在跨项目场景中的20个项目中的19个项目中比所有以前的方法的最佳性能有所提高。然而,数据增强技术不足以克服项目内假设情景中存在的数据缺乏问题,现有方法的效果仍然更好。未来的研究将探讨如何使SATD数据集多样化,以最大限度地提高大型BERT模型的潜在能力。
2023-03-16 cs.AI cs.SE
Automatic Identification of Self-Admitted Technical Debt from Four Different Sources
University of Groningen(格罗宁根大学)
本文提出整合代码注释、提交消息、拉取请求和问题跟踪系统四类来源的 SATD 自动识别方法,F1 达 0.611,并基于 103 个开源项目揭示其分布、关键词与跨来源关系。
2023-04-21 cs.AI cs.SE
Hidden in Plain Sight: Where Developers Confess Self-Admitted Technical Debt
University of Oulu(奥卢大学);University of Helsinki(赫尔辛基大学)
本研究利用PENTACET数据集分析超9000个Java开源仓库,将超22.5万条SATD注释与源代码结构关联,发现SATD主要出现在定义、条件判断和异常处理附近的内联代码中,是开发者在变更时有意识的认知信号。
2025-11-03 cs.CL cs.PL cs.SE
Text Tells the Cost: Predicting and Analyzing Repayment Effort of Self-Admitted Technical Debt
Bernoulli Institute for Mathematics, Computer Science and Artificial Intelligence, University of Groningen(格罗宁根大学数学、计算机科学与人工智能学院);Intelligent Game and Decision Lab(智能游戏与决策实验室);Harbin Institute of Technology(哈尔滨工业大学)
本文通过分析341740个技术债务项,提出PRESTI模型,利用文本信息预测偿还努力,发现不同类型的债务偿还难度差异显著。
2026-04-26 cs.AI cs.SE
SATDAUG -- A Balanced and Augmented Dataset for Detecting Self-Admitted Technical Debt
Bernoulli Institute, University of Groningen(格罗宁根大学伯努利研究所)
针对现有自承认技术债务检测数据集存在的类别不平衡、标注数据稀缺问题,研究团队发布了增强版平衡数据集SATDAUG,覆盖多类软件开发制品,可支撑相关机器学习与深度学习模型的训练优化。
2024-03-12 cs.CL cs.SE
Deep Learning and Data Augmentation for Detecting Self-Admitted Technical Debt
Bernoulli Institute, University of Groningen(格罗宁根大学伯努利研究所);Department of Information Systems, Telkom University(电信大学信息系统系)
针对自承认技术债务(SATD)检测中因数据极度不平衡导致的性能欠佳问题,提出结合BiLSTM与BERT架构及大语言模型数据增强的两步方法,显著提升了SATD的识别与分类性能。
2024-10-21 cs.AI cs.LG cs.SE
Comments or Issues: Where to Document Technical Debt?
本文调查了190个GitHub项目中74K条SATD-C和20K条SATD-I实例的作者,探究开发者选择用注释或议题记录技术债务的动因,并提出了13条指南以辅助决策。
2024-08-27 cs.SE
Understanding the Effectiveness of LLMs in Automated Self-Admitted Technical Debt Repayment
针对大语言模型在自动偿还自承认技术债务领域研究不足的问题,构建了大规模多语言数据集与新型评估指标,对比评估了微调和提示工程两类方法的效果,为该领域研究提供了基准与参考。
2025-01-17 cs.SE
Quantifying and Characterizing Clones of Self-Admitted Technical Debt in Build Systems
对50,608条构建系统SATD注释开展大规模研究,发现构建系统中SATD克隆普遍率(62%-95%)远高于源代码(41%-65%),76%克隆语句相似度>0.8,1/4由原作者引入入,外部因素为主要位置、工具库限制为原因,为设计自动偿还SATD推荐系统奠定基础。
2024-02-14 cs.SE
Towards Automatically Addressing Self-Admitted Technical Debt: How Far Are We?
Università della Svizzera italiana (USI)(瑞士意大利语区大学(USI));University of Sannio(桑尼奥大学)
本文构建5,039个SATD移除数据集并评估七种生成式DL配置及LLM聊天机器人,发现最佳模型仅能自动修复约2%至8%的实例,预训练与SATD注释输入至关重要。
2023-08-17 cs.AI cs.SE
Self-Admitted Technical Debt Detection Approaches: A Decade Systematic Review
Bernoulli Institute for Mathematics, Computer Science and Artificial Intelligence(伯努利数学、计算机科学与人工智能研究所);University of Groningen(格罗宁根大学);Department of Information Systems(信息系统系);Telkom University(Telkom大学)
本文综述了2014-2025年间技术债务检测方法的发展,分析了从启发式方法到机器学习、深度学习和Transformer模型的演变,评估了不同方法的精度、召回率和F1分数,指出现存挑战及未来研究方向。
2026-04-26 cs.AI cs.SE
Versioned Analysis of Software Quality Indicators and Self-admitted Technical Debt in Ethereum Smart Contracts with Ethstractor
本文提出首个智能合约收集工具 Ethstractor,用于构建版本化合约数据集,研究发现代码指标无法有效指示漏洞,漏洞数量随时间保持一致,且多数自认技术债务从未被移除。
2024-07-22 cs.CR cs.DC cs.SE
Refactoring Debt: Myth or Reality? An Exploratory Study on the Relationship Between Technical Debt and Refactoring
为了满足项目时间表或预算限制,开发人员故意偏离编写最佳代码的可行性代码,这被称为招致技术债务(TD)。此外,作为计划纠正的一部分,开发人员将这些缺陷记录为代码中的注释(即,自我承认的技术债务或SATD)。作为提高源代码质量的一种手段,开发人员经常对代码库应用一系列重构操作。在这项研究中,我们探讨开发人员偿还这种债务,通过重构操作,检查发生的SATD删除76个开源Java系统的代码。我们的研究结果表明,TD支付通常发生在重构活动中,开发人员出于特定原因重构代码以删除TD。我们设想我们的研究结果支持供应商提供工具,以更好地支持开发人员自动偿还技术债务。
2022-03-10 cs.SE
Detection, Classification and Prevalence of Self-Admitted Aging Debt
University of Oulu(奥卢大学);University of Helsinki(赫尔辛基大学)
本文提出软件老化债务(AD)概念,通过分析源代码注释中的自我承认老化债务(SAAD),构建分类体系并量化9000多个开源仓库,发现超21%存在SAAD且休眠型为主,助力主动维护。
2025-04-24 cs.AI cs.CE cs.GL
Reducing Labeling Effort in Architecture Technical Debt Detection through Active Learning and Explainable AI
Bernoulli Institute, University of Groningen(格罗宁根大学伯努利学院);Department of Information Systems, Telkom University(Telkom大学信息系统系)
结合关键词过滤、主动学习和可解释AI检测架构技术债务,将标注工作量减少49%,F1分数达0.72。
2026-07-03 cs.SE
The Nature of Technical Debt in Research Software
University of Victoria(维多利亚大学);IIT Palakkad(印度理工学院帕拉克卡德分校);University of Oklahoma(俄克拉荷马大学)
本文研究了研究软件中技术债的性质与影响,通过分析28k条代码注释和访谈,识别出九种独特技术债类型及四个影响主题。
2026-03-20 cs.SE
Better Technical Debt Detection via SURVEYing
North Carolina State University(北卡罗来纳州立大学)
软件分析可以通过调查来改进;即重新检查和(可能)修改先前分析提供的标签。测量是一项耗时的任务,有效的测量师必须仔细管理他们的时间。具体而言,他们必须在进一步调查的成本与额外努力的额外收益之间取得平衡。本文提出了SURVEY0,增量Logistic回归估计方法,实现成本/效益分析。一些分类器被用来根据它们可能有多有趣来对尚未访问的示例进行排名。然后,人类回顾最有趣的例子,之后他们的反馈被用来更新估计器,以估计剩余的例子数量。本文评估的背景下,自我承认的技术债务的调查。随着软件项目的成熟,他们可能会积累“技术债务”,即开发人员的决策是次优的,并降低了代码的整体质量。这样的决定经常被程序员在代码中注释;也就是说,它是自我承认的技术债务(SATD)。最近的研究结果表明,文本分类器可以自动检测这种债务。我们发现,我们可以显着优于以前的结果,通过调查的数据。具体来说,对于10个开源JAVA项目,我们可以通过SURVEY0使用16%的评论找到83%的技术债务(如果需要更高水平的召回,SURVEY0可以通过一些额外的努力进行调整)。
2019-05-20 cs.AI cs.SE
An Exploratory Study on the Introduction and Removal of Different Types of Technical Debt
为了更快地完成任务,开发人员往往不得不牺牲软件的质量。这种折衷的做法导致开发人员在未来开发中的负担越来越重。技术债务这个比喻描述了这种做法。先前的研究已经说明了技术债务的负面影响,许多研究人员调查了开发人员如何处理某种类型的技术债务。然而,很少有研究关注实践中消除不同类型的技术债务。为了填补这一空白,我们使用了不同类型的自我承认的技术债务(即,SATD)在7个深度学习框架中作为例子。这是因为深度学习框架是当今最重要的软件系统之一,因为它们在影响生活的深度学习应用中的普遍使用。此外,不同的深度学习框架的开发领域是相同的,这使我们能够找到跨项目消除不同类型技术债务的共同行为。通过挖掘这些框架的文件历史,我们发现设计债是沿着开发过程中引入最多的。在技术债的去除方面,我们发现需求债被去除的最多,而设计债被去除的最快。大多数测试债、设计债和需求债都被引入它们的开发人员删除了。基于不同类型的技术债务的引入和去除,我们讨论了不同类型的技术债务的频率的演变,以描述开发人员在开发过程中所面临的未解决的次优权衡或决策。我们还讨论了不同类型的技术债务的去除模式,强调未来的研究方向,并为从业者提供建议。
2021-01-11 cs.SE
PromptDebt: A Comprehensive Study of Technical Debt Across LLM Projects
本文首次大规模实证研究LLM项目中的自我承认技术债务,分析93,142个Python文件,发现OpenAI集成和提示设计是主要债务来源,并发布数据集以支持可复现性。
2025-09-24 cs.SE
What Can Self-Admitted Technical Debt Tell Us About Security? A Mixed-Methods Study
本文结合 8,812 个 SATD 实例分析与 222 名开源从业者调查,揭示 SATD 中安全线索对应的 CWE 类型、开发者动机及被利用风险。
2024-03-02 cs.HC cs.SE
Detection of Technical Debt in Java Source Code
本研究通过分析974个Java项目的注释及源代码,构建了首个结合代码注释的TD数据集,并证明包含分类代码能显著提升各类技术债务预测的准确率,为后续研究提供了数据集与基线分类器。
2025-08-09 cs.SE
Reading Between the Code Lines: On the Use of Self-Admitted Technical Debt for Security Analysis
Hamburg University of Technology(汉堡工业大学);Free University of Bozen-Bolzano(博尔扎诺自由大学);RMIT University(皇家墨尔本理工大学);The University of Melbourne(墨尔本大学)
本文研究了自认技术债务在静态分析工具辅助安全分析中的补充作用,发现其能有效弥补 SATs 的局限性。
2026-08-25 cs.CR cs.HC cs.SE
Exploring Scientific Debt: Harnessing AI for SATD Identification in Scientific Software
本研究利用AI识别科学软件中的SATD,发现其比通用软件具有更高的债务水平,并揭示了管理SATD对科学发现的重要性。
2025-11-21 cs.SE
Automated Detection of Algorithm Debt in Deep Learning Frameworks: An Empirical Study
本研究旨在提高深度学习框架中算法债务的自动化检测性能,通过结合TF-IDF等多种特征提取方法与ROBERTA等深度学习及大型语言模型,在七个DL框架的数据集上训练多种分类器以识别和改进AD检测。
2024-08-22 cs.SE