Technical Debt Prioritization: A Search-Based Approach

Technical Debt (TD) prioritization is the process of deciding which TD items should be repaid first and which items can be endured until later releases. The goal of the process is to maximize the value of the TD repayment with limited resources. Unfortunately, researchers have indicated the scarcity of TD prioritization techniques and limitations in them. To address these limitations, we propose a novel search-based approach for prioritizing TD using a Multi-objective Evolutionary Algorithm (MOEA). The approach indicates which TD items should be repaid to maximize the value of a repayment activity within a specific cost constraint. An empirical evaluation that we performed on 40 Open-Source Software (OSS) systems demonstrated our approach's ability to improve the value of TD repayment by 1,796 over random search. Additionally, a user study that we conducted with developers confirmed the suitability of our approach in industry and its usefulness in improving the value of TD repayment over developers' prioritization by 423.

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

[2]  Lawrence Davis,et al.  Shall We Repair? Genetic AlgorithmsCombinatorial Optimizationand Feasibility Constraints , 1993, ICGA.

[3]  Thomas Bäck,et al.  A Survey of Evolution Strategies , 1991, ICGA.

[4]  Gunar E. Liepins,et al.  Some Guidelines for Genetic Algorithms with Penalty Functions , 1989, ICGA.

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

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

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

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

[9]  Zadia Codabux,et al.  Technical Debt Prioritization Using Predictive Analytics , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

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

[11]  Gary B. Lamont,et al.  Evolutionary Algorithms for Solving Multi-Objective Problems , 2002, Genetic Algorithms and Evolutionary Computation.

[12]  Francesca Arcelli Fontana,et al.  Towards a prioritization of code debt: A code smell Intensity Index , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[13]  Kalyanmoy Deb,et al.  A fast and elitist multiobjective genetic algorithm: NSGA-II , 2002, IEEE Trans. Evol. Comput..

[14]  Zbigniew Michalewicz,et al.  A Survey of Constraint Handling Techniques in Evolutionary Computation Methods , 1995 .

[15]  R. Hyman Quasi-Experimentation: Design and Analysis Issues for Field Settings (Book) , 1982 .

[16]  Thomas Weise,et al.  Global Optimization Algorithms -- Theory and Application , 2009 .

[17]  K. Miettinen,et al.  Quasi-random initial population for genetic algorithms , 2004 .

[18]  David J. C. MacKay,et al.  Information Theory, Inference, and Learning Algorithms , 2004, IEEE Transactions on Information Theory.

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

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

[21]  Yuren Zhou,et al.  A comparison of GAs using penalizing infeasible solutions and repairing infeasible solutions on restrictive capacity knapsack problem , 2007, GECCO '07.

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

[23]  Yuanyuan Zhang,et al.  The multi-objective next release problem , 2007, GECCO '07.

[24]  Dorothea Heiss-Czedik,et al.  An Introduction to Genetic Algorithms. , 1997, Artificial Life.

[25]  A. Vargha,et al.  A Critique and Improvement of the CL Common Language Effect Size Statistics of McGraw and Wong , 2000 .

[26]  A. E. Eiben,et al.  Introduction to Evolutionary Computing , 2003, Natural Computing Series.

[27]  A. Kai Qin,et al.  A review of population initialization techniques for evolutionary algorithms , 2014, 2014 IEEE Congress on Evolutionary Computation (CEC).

[28]  Zbigniew Michalewicz,et al.  Genetic Algorithms for the 0/1 Knapsack Problem , 1994, ISMIS.

[29]  Valeria Simoncini,et al.  Basic Statistical Concepts , 2010 .

[30]  Mark Harman,et al.  Search Based Software Engineering: Techniques, Taxonomy, Tutorial , 2010, LASER Summer School.

[31]  A. Dias-Neto,et al.  0006/2011 - Threats to Validity in Search-based Software Engineering Empirical Studies , 2011 .

[32]  Mark Harman,et al.  Search Based Approaches to Component Selection and Prioritization for the Next Release Problem , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

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

[34]  Victor J. Rayward-Smith,et al.  The next release problem , 2001, Inf. Softw. Technol..

[35]  Allysson Allex Araújo,et al.  Incorporating user preferences in ant colony optimization for the next release problem , 2016, Appl. Soft Comput..

[36]  Toshihisa Ohtsuka,et al.  Cast , 2002, The Journal of Cell Biology.

[37]  Enrique Alba,et al.  A Study of the Multi-objective Next Release Problem , 2009, 2009 1st International Symposium on Search Based Software Engineering.

[38]  Kenneth S. Rubin,et al.  Essential Scrum: A Practical Guide to the Most Popular Agile Process , 2012 .

[39]  Larry J. Eshelman,et al.  The CHC Adaptive Search Algorithm: How to Have Safe Search When Engaging in Nontraditional Genetic Recombination , 1990, FOGA.

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

[41]  Lothar Thiele,et al.  A Comparison of Selection Schemes Used in Evolutionary Algorithms , 1996, Evolutionary Computation.

[42]  Eneko Osaba,et al.  On the influence of using initialization functions on genetic algorithms solving combinatorial optimization problems: A first study on the TSP , 2014, 2014 IEEE Conference on Evolving and Adaptive Intelligent Systems (EAIS).

[43]  Markus Wagner,et al.  Seeding the initial population of multi-objective evolutionary algorithms: A computational study , 2015, Appl. Soft Comput..

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

[45]  Zbigniew Michalewicz,et al.  Evolution Strategies and Other Methods , 1994 .

[46]  Ruhul A. Sarker,et al.  Search space reduction technique for constrained optimization with tiny feasible space , 2008, GECCO '08.

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