On the value of a prioritization scheme for resolving Self-admitted technical debt

Abstract Programmers tend to leave incomplete, temporary workarounds and buggy codes that require rework in software development and such pitfall is referred to as Self-admitted Technical Debt (SATD). Previous studies have shown that SATD negatively affects software project and incurs high maintenance overheads. In this study, we introduce a prioritization scheme comprising mainly of identification, examination and rework effort estimation of prioritized tasks in order to make a final decision prior to software release. Using the proposed prioritization scheme, we perform an exploratory analysis on four open source projects to investigate how SATD can be minimized. Four prominent causes of SATD are identified, namely code smells (23.2%), complicated and complex tasks (22.0%), inadequate code testing (21.2%) and unexpected code performance (17.4%). Results show that, among all the types of SATD, design debts on average are highly prone to software bugs across the four projects analysed. Our findings show that a rework effort of approximately 10 to 25 commented LOC per SATD source file is needed to address the highly prioritized SATD ( vital few ) tasks. The proposed prioritization scheme is a novel technique that will aid in decision making prior to software release in an attempt to minimize high maintenance overheads.

[1]  Fazli Can,et al.  Information retrieval on Turkish texts , 2008 .

[2]  Narayan Ramasubbu,et al.  Managing Technical Debt in Enterprise Software Packages , 2014, IEEE Transactions on Software Engineering.

[3]  CunninghamWard The WyCash portfolio management system , 1992 .

[4]  Robbie T. Nakatsu,et al.  A taxonomy of crowdsourcing based on task complexity , 2014, J. Inf. Sci..

[5]  Jan Bosch,et al.  Architecture Technical Debt: Understanding Causes and a Qualitative Model , 2014, 2014 40th EUROMICRO Conference on Software Engineering and Advanced Applications.

[6]  N. Cliff Dominance statistics: Ordinal analyses to answer ordinal questions. , 1993 .

[7]  Rong Jin,et al.  Understanding bag-of-words model: a statistical framework , 2010, Int. J. Mach. Learn. Cybern..

[8]  Emad Shihab,et al.  Detecting and quantifying different types of self-admitted technical Debt , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[9]  Bashar Nuseibeh,et al.  Signing Off: The State of the Journal , 2014, IEEE Trans. Software Eng..

[10]  Tore Dybå,et al.  A systematic review of effect size in software engineering experiments , 2007, Inf. Softw. Technol..

[11]  Forrest Shull,et al.  Investigating the impact of design debt on software quality , 2011, MTD '11.

[12]  Emad Shihab,et al.  Examining the Impact of Self-Admitted Technical Debt on Software Quality , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[13]  Pearl Brereton,et al.  Robust Statistical Methods for Empirical Software Engineering , 2017, Empirical Software Engineering.

[14]  Claes Wohlin,et al.  Experimentation in Software Engineering , 2012, Springer Berlin Heidelberg.

[15]  Jonathan I. Maletic,et al.  Lightweight Transformation and Fact Extraction with the srcML Toolkit , 2011, 2011 IEEE 11th International Working Conference on Source Code Analysis and Manipulation.

[16]  Emad Shihab,et al.  An Exploratory Study on Self-Admitted Technical Debt , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[17]  ArcuriAndrea,et al.  A Hitchhiker's guide to statistical tests for assessing randomized algorithms in software engineering , 2014 .

[18]  Thomas Zimmermann,et al.  Predicting Bugs from History , 2008, Software Evolution.

[19]  Robert L. Nord,et al.  Technical Debt: From Metaphor to Theory and Practice , 2012, IEEE Software.

[20]  William J. J. Rey,et al.  Robust statistical methods , 1978 .

[21]  R Core Team,et al.  R: A language and environment for statistical computing. , 2014 .

[22]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[23]  Lionel C. Briand,et al.  A Hitchhiker's guide to statistical tests for assessing randomized algorithms in software engineering , 2014, Softw. Test. Verification Reliab..

[24]  Razvan C. Bunescu,et al.  Learning to rank relevant files for bug reports using domain knowledge , 2014, SIGSOFT FSE.

[25]  Harald C. Gall,et al.  Do Code and Comments Co-Evolve? On the Relation between Source Code and Comment Changes , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[26]  Juan Garbajosa,et al.  A framework to aid in decision making for technical debt management , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[27]  Pierre-Yves Schobbens,et al.  Towards statistical prioritization for software product lines testing , 2013, VaMoS.

[28]  Peng Liang,et al.  A systematic mapping study on technical debt and its management , 2015, J. Syst. Softw..

[29]  Yuming Zhou,et al.  Is Learning-to-Rank Cost-Effective in Recommending Relevant Files for Bug Localization? , 2015, 2015 IEEE International Conference on Software Quality, Reliability and Security.

[30]  Gabriele Bavota,et al.  A Large-Scale Empirical Study on Self-Admitted Technical Debt , 2016, 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR).

[31]  Xingming Sun,et al.  Toward Efficient Multi-Keyword Fuzzy Search Over Encrypted Outsourced Data With Accuracy Improvement , 2016, IEEE Transactions on Information Forensics and Security.

[32]  Song Wang,et al.  Will This Bug-Fixing Change Break Regression Testing? , 2015, 2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM).

[33]  Jacky W. Keung,et al.  Rework Effort Estimation of Self-admitted Technical Debt , 2016, QuASoQ/TDA@APSEC.

[34]  Rafael Morales Bueno,et al.  TF-SIDF: Term frequency, sketched inverse document frequency , 2011, 2011 11th International Conference on Intelligent Systems Design and Applications.

[35]  Mário André de Freitas Farias,et al.  A Contextualized Vocabulary Model for identifying technical debt on code comments , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[36]  Ward Cunningham,et al.  The WyCash portfolio management system , 1992, OOPSLA '92.

[37]  Danilo Caivano,et al.  Does the level of detail of UML diagrams affect the maintainability of source code?: a family of experiments , 2016, Empirical Software Engineering.

[38]  Yasutaka Kamei,et al.  Defect Prediction: Accomplishments and Future Challenges , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[39]  James M. Tien,et al.  Progressive Random Sampling With Stratification , 2007, IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews).