Technical Debt Indexes Provided by Tools: A Preliminary Discussion

In software maintenance and evolution, it is important to assess both code health and application architecture in order to identify issues impeding software quality goals. One way to move the needle toward software quality is to use Technical Debt (TD) indexing as a method to evaluate development projects.

We recently presented a paper at MTD 2016, the International Workshop on Managing Technical Debt put on by the Software Engineering Institute at Carnegie Mellon, where we discussed the way five different and widely known tools used to compute Technical Debt Indexes (TDI), for example numbers synthesizing the overall quality and/or TD of an analyzed project.

In our analysis, we concentrated on the aspects missing from TDI and outlined if (and how) the indexes consider architectural problems that could have a major impact on architectural debt.


The focus on architectural debt is extremely important, since architectural issues have the largest (and most subtle) impact on maintenance costs. In fact, when problems appear at the architectural level, they tend to be widespread throughout the project, making them more difficult to spot and making the project more difficult, tedious, error-prone and ultimately slow.

While architecture conformance checking technology is available (and suggested whenever possible), in recent years some knowledge about generally bad architectural practices is consolidating around the term of “architectural smells”. These smells, named as an analogy to the more famous “code smells”, point to a suspect architectural construct and signal trouble in project evolution.

Architectural smells are usually detected through the analysis of dependencies. The most famous example, known for many years are Cyclic Dependencies. These make the separation of the components in the cycle impossible, so if they appear in different modules – the modules are actually not separable. Detection of Cyclic Dependencies is supported for example by CAST’s System-Level Analysis and other solutions.

Other architectural smells have been defined and are under study, combining dependency analysis with history and evolution analysis to exploit hidden dependencies, or with pattern analysis to identify architecturally relevant elements (e.g., classes) in modules and analyze the impact of their issues on the architecture.

In our research, we have already started to gather architectural smell definitions and to implement their detection in a small prototype tool called Arcan (, which currently detects three architectural smells. We are currently in the process of enhancing the implemented techniques through filters and historical information, as explained in our related ICSME 2016 paper, “Automatic Detection of Instability Architectural Smells.”

Francesca Arcelli Fontana received her Diploma and PhD degrees in Computer Science at the University of Milano. She worked at University of Salerno and University of Sannio, Faculty of Engineering, as assistant professor in software engineering. She is currently an Associate Professor at the Department of Computer Science of the University of Milano-Bicocca. Her research interests include software evolution, software quality assessment, software maintenance and reverse engineering. She is a member of the IEEE and the IEEE Computer Society.

Marco Zanoni received MS and Ph.D. degrees in computer science from the University of Milano-Bicocca. He is a post-doc research fellow of the Department of Informatics, Systems and Communication of the University of Milano-Bicocca. His research interests include software quality assessment, software architecture reconstruction and machine learning.

Riccardo Roveda is a PhD student in Computer Science at University of Milano-Bicocca (Italy). He received his bachelor degree in 2011 and master degree in 2014. He is working in the ESSeRE lab at the Department of Informatics, Systems and Communication (DISCo) of University of Milano-Bicocca. He has conducted studies on Architectural Erosion, Technical Debt and correlation between Architectural Smells and Code Smells. Open source addicted.

Filed in: CAST Events
  This report describes the effects of different industrial factors on  structural quality. Structural quality differed across technologies with COBOL  applications generally having the lowest densities of critical weaknesses,  while JAVA-EE had the highest densities. While structural quality differed  slightly across industry segments, there was almost no effect from whether the  application was in- or outsourced, or whether it was produced on- or off-shore.  Large variations in the densities in critical weaknesses across applications  suggested the major factors in structural quality are more related to  conditions specific to each application. CRASH Report 2020: CAST Research on  the Structural Condition of Critical Applications Report
Open source is part of almost every software capability we use today. At the  very least libraries, frameworks or databases that get used in mission critical  IT systems. In some cases entire systems being build on top of open source  foundations. Since we have been benchmarking IT software for years, we thought  we would set our sights on some of the most commonly used open source software  (OSS) projects. Software Intelligence Report <> Papers
Making sense of cloud transitions for financial and telecoms firms Cloud  migration 2.0: shifting priorities for application modernization in 2019  Research Report
Francesca Arcelli Fontana
Francesca Arcelli Fontana Associate Professor
Francesca Fontana is an Associate Professor in the Computer Science Department at the University of Milano-Bicocca. She has over a decade of experience teaching computer science and software engineering at various Italian Universities. Her research primarily focuses on software evolution, software quality assessment, software maintenance and reverse engineering.
Load more reviews
Thank you for the review! Your review must be approved first
You've already submitted a review for this item

Raising software developers’ productivity with CAST Imaging