Core Concepts
Self-Admitted Technical Debt (SATD) is significantly associated with software development activities, particularly refactoring, in the majority of the 77 Java projects analyzed.
Abstract
This study investigates the relationship between Self-Admitted Technical Debt (SATD) and other software development activities, including refactoring, bug fixing, adding new features, and testing. The analysis is conducted on a dataset of 77 Java projects, which is larger than previous studies in this area.
The key findings are:
At the general level, refactoring is the most common activity that co-occurs with SATD removal and addition, although it accounts for only 14% of the overall commits.
At the project level, the study finds that in 95% of the projects, SATD removal is significantly associated with refactoring, with a p-value less than 0.05. Similarly, in 89% of the projects, SATD addition is significantly associated with refactoring.
The odds ratio test also shows values above 1 for all projects, indicating a positive association between SATD and refactoring.
The chi-square test shows a significant co-occurrence between SATD and bug fixing in 34 out of the 77 projects.
The analysis of the distribution of refactoring types reveals that while the overall trend is descending, there are three specific refactoring types ("move class", "remove method", and "move attribute") that occur more frequently in the presence of SATD. However, the general distribution of refactoring types remains similar in the presence and absence of SATD.
These findings provide valuable insights into the dynamics between SATD and software development activities, which can inform more effective strategies for managing technical debt and improving software quality.
Stats
The total number of commits in the dataset is 1,153,089.
The number of commits with SATD removal is 24,836.
The number of commits with SATD addition is 21,551.
Quotes
"SATD removal occurs simultaneously with refactoring in 95% of projects, while its addition occurs in 89% of projects."
"Three types of refactoring - 'move class', 'remove method', and 'move attribute' - occur more frequently in the presence of SATD."