TY - JOUR
T1 - Identifying self-admitted technical debt in issue tracking systems using machine learning
AU - Li, Yikun
AU - Soliman, Mohamed
AU - Avgeriou, Paris
N1 - Funding Information:
This work was supported by ITEA3 and RVO under grant agreement No. 17038 VISDOM ( https://visdomproject.github.io/website ).
Funding Information:
This study was funded by ITEA3 and RVO under grant agreement No. 17038 VISDOM ( https://visdom-project.github.io/website ).
Publisher Copyright:
© 2022, The Author(s).
PY - 2022/11
Y1 - 2022/11
N2 - Technical debt is a metaphor indicating sub-optimal solutions implemented for short-term benefits by sacrificing the long-term maintainability and evolvability of software. A special type of technical debt is explicitly admitted by software engineers (e.g. using a TODO comment); this is called Self-Admitted Technical Debt or SATD. Most work on automatically identifying SATD focuses on source code comments. In addition to source code comments, issue tracking systems have shown to be another rich source of SATD, but there are no approaches specifically for automatically identifying SATD in issues. In this paper, we first create a training dataset by collecting and manually analyzing 4,200 issues (that break down to 23,180 sections of issues) from seven open-source projects (i.e., Camel, Chromium, Gerrit, Hadoop, HBase, Impala, and Thrift) using two popular issue tracking systems (i.e., Jira and Google Monorail). We then propose and optimize an approach for automatically identifying SATD in issue tracking systems using machine learning. Our findings indicate that: 1) our approach outperforms baseline approaches by a wide margin with regard to the F1-score; 2) transferring knowledge from suitable datasets can improve the predictive performance of our approach; 3) extracted SATD keywords are intuitive and potentially indicating types and indicators of SATD; 4) projects using different issue tracking systems have less common SATD keywords compared to projects using the same issue tracking system; 5) a small amount of training data is needed to achieve good accuracy.
AB - Technical debt is a metaphor indicating sub-optimal solutions implemented for short-term benefits by sacrificing the long-term maintainability and evolvability of software. A special type of technical debt is explicitly admitted by software engineers (e.g. using a TODO comment); this is called Self-Admitted Technical Debt or SATD. Most work on automatically identifying SATD focuses on source code comments. In addition to source code comments, issue tracking systems have shown to be another rich source of SATD, but there are no approaches specifically for automatically identifying SATD in issues. In this paper, we first create a training dataset by collecting and manually analyzing 4,200 issues (that break down to 23,180 sections of issues) from seven open-source projects (i.e., Camel, Chromium, Gerrit, Hadoop, HBase, Impala, and Thrift) using two popular issue tracking systems (i.e., Jira and Google Monorail). We then propose and optimize an approach for automatically identifying SATD in issue tracking systems using machine learning. Our findings indicate that: 1) our approach outperforms baseline approaches by a wide margin with regard to the F1-score; 2) transferring knowledge from suitable datasets can improve the predictive performance of our approach; 3) extracted SATD keywords are intuitive and potentially indicating types and indicators of SATD; 4) projects using different issue tracking systems have less common SATD keywords compared to projects using the same issue tracking system; 5) a small amount of training data is needed to achieve good accuracy.
KW - Deep learning
KW - Issue tracking system
KW - Self-admitted technical debt
KW - Technical debt identification
KW - Transfer learning
UR - http://www.scopus.com/inward/record.url?scp=85133665305&partnerID=8YFLogxK
U2 - 10.1007/s10664-022-10128-3
DO - 10.1007/s10664-022-10128-3
M3 - Article
AN - SCOPUS:85133665305
SN - 1382-3256
VL - 27
JO - Empirical software engineering
JF - Empirical software engineering
IS - 6
M1 - 131
ER -