Managing architectural technical debt: A unified model and systematic literature review

Large Software Companies need to support the continuous and fast delivery of customer value in both the short and long term. However, this can be impeded if the evolution and maintenance of existing systems is hampered by what has been recently termed Technical Debt (TD). Specifically, Architectural TD has received increased attention in the last few years due to its significant impact on system success and, left unchecked, it can cause expensive repercussions. It is therefore important to understand the underlying factors of architectural TD. With this as background, there is a need for a descriptive model to illustrate and explain different architectural TD issues. The aim of this study is to synthesize and compile research efforts with the goal of creating new knowledge with a specific interest in the architectural TD field. The contribution of this paper is the presentation of a novel descriptive model, providing a comprehensive interpretation of the architectural TD phenomenon. This model categorizes the main characteristics of architectural TD and reveals their relations. The results show that, by using this model, different stakeholders could increase the system's success rate, and lower the rate of negative consequences, by raising awareness about architectural TD.

[1]  Jan Bosch,et al.  The Danger of Architectural Technical Debt: Contagious Debt and Vicious Circles , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.

[2]  Claes Wohlin,et al.  Guidelines for snowballing in systematic literature studies and a replication in software engineering , 2014, EASE '14.

[3]  Ville Leppänen,et al.  Technical Debt and the Effect of Agile Software Development Practices on It - An Industry Practitioner Survey , 2014, 2014 Sixth International Workshop on Managing Technical Debt.

[4]  Frederic S. Mishkin,et al.  Financial Markets and Institutions , 1999 .

[5]  Nenad Medvidovic,et al.  Are automatically-detected code anomalies relevant to architectural modularity?: an exploratory analysis of evolving systems , 2012, AOSD.

[6]  Pearl Brereton,et al.  Systematic literature reviews in software engineering - A systematic literature review , 2009, Inf. Softw. Technol..

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

[8]  Rick Kazman,et al.  A cost-benefit framework for making architectural decisions in a business context , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[9]  Liming Zhu,et al.  Visualising architectural dependencies , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[10]  Claes Wohlin,et al.  Systematic literature studies: Database searches vs. backward snowballing , 2012, Proceedings of the 2012 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement.

[11]  Philippe Kruchten,et al.  Strategic Management of Technical Debt: Tutorial Synopsis , 2012, 2012 12th International Conference on Quality Software.

[12]  Narayan Ramasubbu,et al.  Technical Debt and the Reliability of Enterprise Software Systems: A Competing Risks Analysis , 2015, Manag. Sci..

[13]  Antonio Martini,et al.  Estimating and Quantifying the Benefits of Refactoring to Improve a Component Modularity: A Case Study , 2016, 2016 42th Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

[14]  Jan Bosch,et al.  A Systematic Literature Review and a Unified Model of ATD , 2016, 2016 42th Euromicro Conference on Software Engineering and Advanced Applications (SEAA).

[15]  Claes Wohlin,et al.  On the reliability of mapping studies in software engineering , 2013, J. Syst. Softw..

[16]  Clemente Izurieta,et al.  Towards Assessing the Technical Debt of Undesired Software Behaviors in Design Patterns , 2016, 2016 IEEE 8th International Workshop on Managing Technical Debt (MTD).

[17]  Paramvir Singh,et al.  Minimizing Refactoring Effort through Prioritization of Classes based on Historical, Architectural and Code Smell Information , 2016, QuASoQ/TDA@APSEC.

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

[19]  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).

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

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

[22]  Neil A. Ernst,et al.  Measure it? Manage it? Ignore it? software practitioners and technical debt , 2015, ESEC/SIGSOFT FSE.

[23]  Clemente Izurieta,et al.  Preemptive management of model driven technical debt for improving software quality , 2015, 2015 11th International ACM SIGSOFT Conference on Quality of Software Architectures (QoSA).

[24]  Jane Webster EXECUTIVE OVERVIEWS Volume 26 Iss. 4 , 2002 .

[25]  Jan Bosch,et al.  Investigating Architectural Technical Debt accumulation and refactoring over time: A multiple-case study , 2015, Inf. Softw. Technol..

[26]  Jan Bosch,et al.  Towards Introducing Agile Architecting in Large Companies: The CAFFEA Framework , 2015, XP.

[27]  Ipek Ozkaya,et al.  Technical Debt , 2017, ACM SIGSOFT Softw. Eng. Notes.

[28]  Francesca Arcelli Fontana,et al.  Towards Assessing Software Architecture Quality by Exploiting Code Smell Relations , 2015, 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics.

[29]  Olaf Zimmermann Designed and delivered today, eroded tomorrow?: towards an open and lean architecting framework balancing agility and sustainability , 2016, ECSA Workshops.

[30]  Jan Bosch,et al.  An Empirically Developed Method to Aid Decisions on Architectural Technical Debt Refactoring: AnaConDebt , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[31]  Peng Liang,et al.  Architectural Technical Debt Identification Based on Architecture Decisions and Change Scenarios , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.

[32]  Jan Muntermann,et al.  Taxonomy development in information systems: Developing a taxonomy of mobile applications , 2009, ECIS.

[33]  Elisabetta Di Nitto,et al.  When Software Architecture Leads to Social Debt , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.

[34]  Forrest Shull,et al.  Practical considerations, challenges, and requirements of tool-support for managing technical debt , 2013, 2013 4th International Workshop on Managing Technical Debt (MTD).

[35]  Alexander Chatzigeorgiou,et al.  Identification of Refused Bequest Code Smells , 2013, 2013 IEEE International Conference on Software Maintenance.

[36]  Barbara Kitchenham,et al.  Procedures for Performing Systematic Reviews , 2004 .

[37]  Jan Bosch,et al.  Time to Pay Up: Technical Debt from a Software Quality Perspective , 2017, CIbSE.

[38]  Peri L. Tarr,et al.  An enterprise perspective on technical debt , 2011, MTD '11.

[39]  Peng Liang,et al.  An empirical investigation of modularity metrics for indicating architectural technical debt , 2014, QoSA '14.

[40]  Pearl Brereton,et al.  The Case for Knowledge Translation , 2013, 2013 ACM / IEEE International Symposium on Empirical Software Engineering and Measurement.

[41]  Klaus Schmid A formal approach to technical debt decision making , 2013, QoSA '13.

[42]  Richard T. Vidgen,et al.  An exploration of technical debt , 2013, J. Syst. Softw..

[43]  Richard T. Watson,et al.  Analyzing the Past to Prepare for the Future: Writing a Literature Review , 2002, MIS Q..

[44]  Jan Bosch,et al.  The Introduction of Technical Debt Tracking in Large Companies , 2016, 2016 23rd Asia-Pacific Software Engineering Conference (APSEC).

[45]  Sven Johann,et al.  Technical Debt , 2015, IEEE Softw..

[46]  Nenad Medvidovic,et al.  Mapping architectural decay instances to dependency models , 2013, 2013 4th International Workshop on Managing Technical Debt (MTD).

[47]  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.

[48]  Eltjo Poort Just Enough Anticipation: Architect Your Time Dimension , 2016, IEEE Software.

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

[50]  Alan MacCormack,et al.  Technical debt and system architecture: The impact of coupling on defect-related activity , 2016, J. Syst. Softw..

[51]  Robert L. Nord,et al.  Reducing Friction in Software Development , 2016, IEEE Software.

[52]  Shari Lawrence Pfleeger,et al.  Preliminary Guidelines for Empirical Research in Software Engineering , 2002, IEEE Trans. Software Eng..

[53]  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.

[54]  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..

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

[56]  Rodrigo O. Spínola,et al.  Towards an Ontology of Terms on Technical Debt , 2014, 2014 Sixth International Workshop on Managing Technical Debt.

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

[58]  Barry W. Boehm Architecture-Based Quality Attribute Synergies and Conflicts , 2015, 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics.

[59]  Yuanfang Cai,et al.  A Case Study in Locating the Architectural Roots of Technical Debt , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

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

[61]  Neil A. Ernst,et al.  Toward Design Decisions to Enable Deployability: Empirical Study of Three Projects Reaching for the Continuous Delivery Holy Grail , 2014, 2014 44th Annual IEEE/IFIP International Conference on Dependable Systems and Networks.

[62]  Yuanfang Cai,et al.  Identifying and Quantifying Architectural Debt , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[63]  Jan Bosch,et al.  Towards Prioritizing Architecture Technical Debt: Information Needs of Architects and Product Owners , 2015, 2015 41st Euromicro Conference on Software Engineering and Advanced Applications.

[64]  Peng Liang,et al.  Architecture viewpoints for documenting architectural technical debt , 2016 .

[65]  Hans van Vliet,et al.  Software engineering - principles and practice , 1993 .

[66]  Jennifer Pérez,et al.  Guiding Flexibility Investment in Agile Architecting , 2014, 2014 47th Hawaii International Conference on System Sciences.

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

[68]  Forrest Shull,et al.  Identification and management of technical debt: A systematic mapping study , 2016, Inf. Softw. Technol..

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

[70]  Peng Liang,et al.  Architectural Debt Management in Value-Oriented Architecting , 2013, Economics-Driven Software Architecture.