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 (http://essere.disco.unimib.it/wiki/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.