ABSTRACT
Our prior work showed that the majority of error-prone source files in a software system are architecturally connected. Flawed architectural relations propagate defects among these files and accumulate high maintenance costs over time, just like debts accumulate interest. We model groups of architecturally connected files that accumulate high maintenance costs as architectural debts. To quantify such debts, we formally define architectural debt, and show how to automatically identify debts, quantify their maintenance costs, and model these costs over time. We describe a novel history coupling probability matrix for this purpose, and identify architecture debts using 4 patterns of architectural flaws shown to correlate with reduced software quality. We evaluate our approach on 7 large-scale open source projects, and show that a significant portion of total project maintenance effort is consumed by paying interest on architectural debts. The top 5 architectural debts, covering a small portion (8% to 25%) of each project's error-prone files, capture a significant portion (20% to 61%) of each project's maintenance effort. Finally, we show that our approach reveals how architectural issues evolve into debts over time.
- N. S. Alves, L. F. Ribeiro, V. Caires, T. S. Mendes, and R. O. Spinola. Towards an ontology of terms on technical debt. In Managing Technical Debt (MTD), 2014 Sixth International Workshop on, pages 1--7. IEEE, 2014. Google ScholarDigital Library
- C. Y. Baldwin and K. B. Clark. Design Rules, Vol. 1: The Power of Modularity. MIT Press, 2000. Google ScholarDigital Library
- L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice. Addison-Wesley, 3rd edition, 2012. Google ScholarDigital Library
- F. Beck and S. Diehl. Evaluating the impact of software evolution on software clustering. In Proc. 17th Working Conference on Reverse Engineering, pages 99--108, Oct. 2010. Google ScholarDigital Library
- J. Brondum and L. Zhu. Visualising architectural dependencies. In Proceedings of the Third International Workshop on Managing Technical Debt, MTD '12, pages 7--14, Piscataway, NJ, USA, 2012. IEEE Press. Google ScholarDigital Library
- N. Brown, Y. Cai, Y. Guo, R. Kazman, M. Kim, P. Kruchten, E. Lim, A. MacCormack, R. Nord, I. Ozkaya, R. Sangwan, C. Seaman, K. Sullivan, and N. Zazworka. Managing technical debt in software-reliant systems. pages 47--52, 2010. Google ScholarDigital Library
- W. Cunningham. The WyCash portfolio management system. In Addendum to Proc. 7th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 29--30, Oct. 1992. Google ScholarDigital Library
- B. Curtis, J. Sappidi, and A. Szynkarski. Estimating the principal of an application's technical debt. IEEE Software, 29(6):34--42, 2012. Google ScholarDigital Library
- E. da S. Maldonado and E. Shihab. Detecting and quantifying different types of self-admitted technical debt. SIGSOFT Softw. Eng. Notes, Apr. 2015.Google ScholarCross Ref
- D. Falessi, P. Kruchten, R. L. Nord, and I. Ozkaya. Technical debt at the crossroads of research and practice: report on the fifth international workshop on managing technical debt. ACM SIGSOFT Software Engineering Notes, 39(2):31--33, 2014. Google ScholarDigital Library
- M. Gethers, B. Dit, H. Kagdi, and D. Poshyvanyk. Integrated impact analysis for managing software changes. In Proceedings of the 34th International Conference on Software Engineering, ICSE '12, pages 430--440, Piscataway, NJ, USA, 2012. IEEE Press. Google ScholarDigital Library
- T. Gîrba, S. Ducasse, A. Kuhn, R. Marinescu, and R. Daniel. Using concept analysis to detect co-change patterns. In Ninth International Workshop on Principles of Software Evolution: In Conjunction with the 6th ESEC/FSE Joint Meeting, IWPSE '07, pages 83--89, New York, NY, USA, 2007. ACM. Google ScholarDigital Library
- I. Griffith and C. Izurieta. Design pattern decay: The case for class grime. In Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM '14, pages 39:1--39:4, New York, NY, USA, 2014. ACM. Google ScholarDigital Library
- H. Kagdi, M. Gethers, D. Poshyvanyk, and M. L. Collard. Blending conceptual and evolutionary couplings to support change impact analysis in source code. In Proc. 17th Working Conference on Reverse Engineering, pages 119--128, Oct. 2010. Google ScholarDigital Library
- R. Kazman, Y. Cai, R. Mo, Q. Feng, L. Xiao, S. Haziyevy, V. Fedaky, and A. Shapochkay. A case study in locating the architectural roots of technical debt. In Proc. 37th International Conference on Software Engineering, 2015. Google ScholarDigital Library
- R. Kazman and S. J. Carriere. Playing detective: Reconstructing software architecture from available evidence. Automated Software Engineering, 6(2):107--138, Apr. 1999. Google ScholarDigital Library
- E. Kouroshfar. Studying the effect of co-change dispersion on software quality. In Software Engineering (ICSE), 2013 35th International Conference on, pages 1450--1452, May 2013. Google ScholarDigital Library
- E. Kouroshfar, M. Mirakhorli, H. Bagheri, L. Xiao, S. Malek, and Y. Cai. A study on the role of software architecture in the evolution and quality of software. In Proceedings of the 12th Working Conference on Mining Software Repositories, MSR '15, pages 246--257, Piscataway, NJ, USA, 2015. IEEE Press. Google ScholarDigital Library
- Z. Li, P. Avgeriou, and P. Liang. A systematic mapping study on technical debt and its management. J. Syst. Softw., 101(C):193--220, Mar. 2015. Google ScholarDigital Library
- A. Martini and J. Bosch. The danger of architectural technical debt: Contagious debt and vicious circles. In Software Architecture (WICSA), 2015 12th Working IEEE/IFIP Conference on, pages 1--10, May 2015. Google ScholarDigital Library
- R. Mo, Y. Cai, R. Kazman, and L. Xiao. Hotspot patterns: The formal definition and automatic detection of architecture smells. In Proc. 15th Working IEEE/IFIP International Conference on Software Architecture, May 2015. Google ScholarDigital Library
- R. Mo, J. Garcia, Y. Cai, and N. Medvidovic. Mapping architectural decay instances to dependency models, 2013.Google ScholarCross Ref
- M. Naedele, H.-M. Chen, R. Kazman, Y. Cai, L. Xiao, and C. A. Silva. Manufacturing execution systems: A vision for managing software development. Journal of Systems and Software, 101:59--68, Mar. 2015. Google ScholarDigital Library
- L. Peters. Technical debt: The ultimate antipattern - the biggest costs may be hidden, widespread, and long term, 2014.Google Scholar
- F. Shull, D. Falessi, C. Seaman, M. Diep, and L. Layman. Technical debt: Showing the way for better transfer of empirical results. In J. Münch and K. Schmid, editors, Perspectives on the Future of Software Engineering, pages 179--190. Springer Berlin Heidelberg, 2013.Google ScholarCross Ref
- L. Xiao, Y. Cai, and R. Kazman. Design rule spaces: A new form of architecture insight. In Proc. 36th International Conference on Software Engineering, 2014. Google ScholarDigital Library
- N. Zazworka, A. Vetro, C. Izurieta, S. Wong, Y. Cai, C. Seaman, and F. Shull. Comparing four approaches for technical debt identification. Software Quality Journal, pages 1--24, 2013. Google ScholarDigital Library
- T. Zimmermann, P. Weißgerber, S. Diehl, and A. Zeller. Mining version histories to guide software changes. In Proc. 26th International Conference on Software Engineering, pages 563--572, May 2004. Google ScholarDigital Library
Index Terms
- Identifying and quantifying architectural debt
Recommendations
Quantifying architectural debts
ESEC/FSE 2015: Proceedings of the 2015 10th Joint Meeting on Foundations of Software EngineeringIn our prior research, we found that problematic architectural connections can propagate errors. We also found that among multiple files, the architectural connections that violate common design principles strongly correlate with the error-proneness of ...
Towards an Understanding of Technical Debt in Reference Architectures
SBES '22: Proceedings of the XXXVI Brazilian Symposium on Software EngineeringReference architectures refer to a special type of software architecture that has supported the development, evolution, and standardization of software systems in several critical domains. However, important decisions made while designing a reference ...
Architectural Technical Debt: A Grounded Theory
Software ArchitectureAbstractArchitectural technical debt in a software-intensive system is driven by design decisions about its structure, frameworks, technologies, languages, etc. Unlike code-level technical debt, which can be readily detected by static analysers, and can ...
Comments