Methods and Tools for TD Estimation and Forecasting: A State-of-the-art Survey

Technical debt (TD), a metaphor inspired by the financial debt of economic theory, indicates quality compromises that can yield short-term benefits in the software development process, but may negatively affect the long-term quality of software products. Numerous techniques, methods, and tools have been proposed over the years for estimating and managing TD, providing a variety of options to the developers and project managers of software applications. However, apart from managing TD, predicting its future value is equally important since this knowledge is expected to facilitate decision-making tasks regarding software implementation and maintenance, such as incurring or paying off TD instances. To this end, the purpose of the present study is to (i) summarize the work that has been conducted until today in the field of TD estimation and forecasting, and (ii) to identify existing open issues that have not been adequately addressed yet and require further research. The present survey led to two interesting observations. Firstly, none of the existing TD estimation methods and tools has reached a desired level of maturity, while a large volume of previously uninvestigated metrics and techniques exist that could potentially increase the completeness of TD estimation. Secondly, no notable contributions exist in the field of TD forecasting, indicating that it is a scarcely investigated field. The latter constitutes the main finding of the present literature review, since TD forecasting could lead to the development of practical decision-making mechanisms, which could assist developers and project managers in taking proactive actions regarding TD repayment.

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

[2]  John D. Musa,et al.  Software Reliability Engineering: More Reliable Software Faster and Cheaper , 2004 .

[3]  Tom Mens,et al.  Introduction and Roadmap: History and Challenges of Software Evolution , 2008, Software Evolution.

[4]  S. Strasser,et al.  An Automated Software Tool for Validating Design Patterns , 2011 .

[5]  Mika Mäntylä,et al.  Comparing and experimenting machine learning techniques for code smell detection , 2015, Empirical Software Engineering.

[6]  Jean-Louis Letouzey,et al.  The SQALE method for evaluating Technical Debt , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[7]  Chris Sterling,et al.  Managing Software Debt: Building for Inevitable Change , 2010 .

[8]  Forrest Shull,et al.  Prioritizing design debt investment opportunities , 2011, MTD '11.

[9]  Jürgen Döllner,et al.  Monitoring code quality and development activity by software maps , 2011, MTD '11.

[10]  Yuanfang Cai,et al.  Using technical debt data in decision making: Potential decision approaches , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[11]  Ethem Alpaydin,et al.  Introduction to machine learning , 2004, Adaptive computation and machine learning.

[12]  George Mastorakis,et al.  Predicting and quantifying the technical debt in cloud software engineering , 2014, 2014 IEEE 19th International Workshop on Computer Aided Modeling and Design of Communication Links and Networks (CAMAD).

[13]  Bill Curtis,et al.  Estimating the Principal of an Application's Technical Debt , 2012, IEEE Software.

[14]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[15]  P. Werbos,et al.  Beyond Regression : "New Tools for Prediction and Analysis in the Behavioral Sciences , 1974 .

[16]  Thomas Bäck,et al.  What is the value of your software? , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[17]  ISO / IEC 25010 : 2011 Systems and software engineering — Systems and software Quality Requirements and Evaluation ( SQuaRE ) — System and software quality models , 2013 .

[18]  Delbet C. Hastings,et al.  Statistics for Business Decisions.@@@Workbook to Accompany Statistics for Business Decisions. , 1960 .

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

[20]  Radu Marinescu,et al.  Assessing technical debt by identifying design flaws in software systems , 2012, IBM J. Res. Dev..

[21]  Ville Leppänen,et al.  DebtFlag: Technical debt management with a development environment integrated tool , 2013, 2013 4th International Workshop on Managing Technical Debt (MTD).

[22]  Apostolos Ampatzoglou,et al.  A Framework for Managing Interest in Technical Debt: An Industrial Validation , 2018, 2018 IEEE/ACM International Conference on Technical Debt (TechDebt).

[23]  Ipek Ozkaya,et al.  Managing Technical Debt in Software Engineering (Dagstuhl Seminar 16162) , 2016, Dagstuhl Reports.

[24]  Apostolos Ampatzoglou,et al.  A Financial Approach for Managing Interest in Technical Debt , 2015, BMSD.

[25]  James Walden,et al.  SAVI: Static-Analysis Vulnerability Indicator , 2012, IEEE Security & Privacy.

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

[27]  Indrajit Ray,et al.  Measuring, analyzing and predicting security vulnerabilities in software systems , 2007, Comput. Secur..

[28]  Apostolos Ampatzoglou,et al.  Estimating the breaking point for technical debt , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[29]  Neil A. Ernst On the role of requirements in understanding and managing technical debt , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[30]  PAUL J. WERBOS,et al.  Generalization of backpropagation with application to a recurrent gas market model , 1988, Neural Networks.

[31]  Girish Suryanarayana,et al.  Refactoring for Software Design Smells: Managing Technical Debt , 2014 .

[32]  Robert L. Nord,et al.  In Search of a Metric for Managing Architectural Technical Debt , 2012, 2012 Joint Working IEEE/IFIP Conference on Software Architecture and European Conference on Software Architecture.

[33]  Michael W. Godfrey,et al.  The past, present, and future of software evolution , 2008, 2008 Frontiers of Software Maintenance.

[34]  Juan Garbajosa,et al.  Identification and analysis of the elements required to manage technical debt by means of a systematic mapping study , 2017, J. Syst. Softw..

[35]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[36]  P. Avgeriou,et al.  Establishing a framework for managing interest in technical debt , 2015, BMSD 2015.

[37]  Alexander Chatzigeorgiou,et al.  Forecasting Java Software Evolution Trends Employing Network Models , 2015, IEEE Transactions on Software Engineering.

[38]  Yaman Roumani,et al.  Examining the relationship between firm's financial records and security vulnerabilities , 2016, Int. J. Inf. Manag..

[39]  Laurie A. Williams,et al.  Is complexity really the enemy of software security? , 2008, QoP '08.

[40]  Victor R. Basili,et al.  A validation of object oriented metrics as quality indicators , 1996 .

[41]  Jean-Louis Letouzey,et al.  Managing Technical Debt with the SQALE Method , 2012, IEEE Software.

[42]  Juan Garbajosa,et al.  An Open Tool for Assisting in Technical Debt Management , 2017, 2017 43rd Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

[43]  Valery Buzungu,et al.  Predicting Fault-prone Components in a Java Legacy System , 2006 .

[44]  Apostolos Ampatzoglou,et al.  The financial aspect of managing technical debt: A systematic literature review , 2015, Inf. Softw. Technol..

[45]  Joost Visser,et al.  An empirical model of technical debt and interest , 2011, MTD '11.

[46]  Juan Garbajosa,et al.  An Analysis of Techniques and Methods for Technical Debt Management: A Reflection from the Architecture Perspective , 2015, 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics.

[47]  Paris Avgeriou,et al.  The Evolution of Technical Debt in the Apache Ecosystem , 2017, ECSA.

[48]  Bill Curtis,et al.  Estimating the size, cost, and types of Technical Debt , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[49]  Kyriakos C. Chatzidimitriou,et al.  QATCH - An adaptive framework for software product quality assessment , 2017, Expert Syst. Appl..

[50]  Yuanfang Cai,et al.  Comparing four approaches for technical debt identification , 2014, Software Quality Journal.

[51]  Harald C. Gall,et al.  Software evolution: analysis and visualization , 2006, ICSE '06.

[52]  Carolyn B. Seaman,et al.  A portfolio approach to technical debt management , 2011, MTD '11.

[53]  Carolyn B. Seaman,et al.  Measuring and Monitoring Technical Debt , 2011, Adv. Comput..

[54]  Reinhold Plösch,et al.  Operationalised product quality models and assessment: The Quamoco approach , 2014, Inf. Softw. Technol..

[55]  Udo Kelter,et al.  Analysis and Prediction of Design Model Evolution Using Time Series , 2014, CAiSE Workshops.

[56]  Stéphane Ducasse,et al.  Modeling history to analyze software evolution , 2006, J. Softw. Maintenance Res. Pract..

[57]  C. van Koten,et al.  An application of Bayesian network for predicting object-oriented software maintainability , 2006, Inf. Softw. Technol..

[58]  Rami Bahsoon,et al.  CloudMTD: Using real options to manage technical debt in cloud-based service selection , 2013, 2013 4th International Workshop on Managing Technical Debt (MTD).

[59]  Yuming Zhou,et al.  Predicting object-oriented software maintainability using multivariate adaptive regression splines , 2007, J. Syst. Softw..

[60]  Robert L. Nord,et al.  Managing technical debt in software-reliant systems , 2010, FoSER '10.

[61]  Francesca Arcelli Fontana,et al.  Technical Debt Indexes Provided by Tools: A Preliminary Discussion , 2016, 2016 IEEE 8th International Workshop on Managing Technical Debt (MTD).