论文标题

开源软件中技术债务的长期评估

Long-Term Evaluation of Technical Debt in Open-Source Software

论文作者

Molnar, Arthur-Jozsef, Motogna, Simona

论文摘要

现有的软件工具可以表征和衡量选择性粒度水平的技术债务量。在本文中,我们旨在研究开源软件中技术债务的发展和特征。我们进行了一项纵向研究,涵盖了几种复杂应用的整个发展历史。我们研究如何在软件中引入技术债务,并确定开发人员在长期内如何处理其积累。我们使用三个复杂的开源Java应用程序进行了评估。使用Sonarqube分析了所有110个已发布的版本,涵盖了每个应用程序的10年以上的开发历史。我们研究了开发过程中技术债务的数量,组成和历史的变化,比较了我们在研究应用程序中的结果,并提出了我们最重要的发现。对于每个应用程序,我们确定了关键版本,在此期间添加,删除或两者兼而有之。与开发过程中通常发生的代码或班级计数增加相比,这具有明显的影响。在每个版本中,我们发现代码线和技术债务的文件行之间的高度相关性。我们观察到,帕累托原则已满足所研究的应用程序,因为有20%的问题类型占技术债务的80%。早期申请版本显示现有技术债务的数量更大。应用规模似乎是技术债务数量的不可靠预测因素。大多数债务是在应用程序中引入的,这是扩大其功能集的里程碑发行的一部分。我们还发现,在源代码中,技术债务问题持续了很长时间,而其删除似乎并未根据类型或严重性优先考虑。

Existing software tools enable characterizing and measuring the amount of technical debt at selective granularity levels. In this paper we aim to study the evolution and characteristics of technical debt in open-source software. We carry out a longitudinal study that covers the entire development history of several complex applications. We study how technical debt is introduced in software, as well as identify how developers handle its accumulation over the long term. We carried out our evaluation using three complex, open-source Java applications. All 110 released versions, covering more than 10 years of development history for each application were analyzed using SonarQube. We studied how the amount, composition and history of technical debt changed during development, compared our results across the studied applications and present our most important findings. For each application, we identified key versions during which large amounts of technical debt were added, removed or both. This had significantly more impact when compared to the lines of code or class count increases that generally occurred during development. Within each version, we found high correlation between file lines of code and technical debt. We observed that the Pareto principle was satisfied for the studied applications, as 20% of issue types generated around 80% of total technical debt. Early application versions showed greater fluctuation in the amount of existing technical debt. Application size appeared to be an unreliable predictor for the quantity of technical debt. Most debt was introduced in applications as part of milestone releases that expanded their feature set. We also discovered that technical debt issues persist for a long time in source code, and their removal did not appear to be prioritized according to type or severity.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源