Abstract:Many design guidelines state that a software system architecture should avoid cycles between its packages. Yet such cycles appear again and again in many programs. We believe that the existing approaches for cycle detection are too coarse to assist developers to remove cycles from their programs. In this paper, we describe an efficient algorithm that performs a fine-grained analysis of cycles among application packages. In addition, we define multiple metrics to rank cycles by their level of undesirability, pr… Show more
“…The Affected design level, similarly, is important because the cycles present at both package and class level have an impact on two different levels at once. Finally, the Number of inheritance edges characteristic is considered because inheritance edges are considered an indicator of an intentional design choice [17], thus intentional cycles that contain a high number of inheritance edges between the components may be more interesting for a developer to inspect.…”
Architectural smells may substantially increase maintenance effort and thus require extra attention for potential refactoring. While we currently understand this concept and have identified different types of such smells, we have not yet studied their evolution in depth. This is necessary to inform their prioritisation and refactoring. This study analyses the evolution of individual architectural smell instances over time, and the characteristics that define these instances. Three different types of architectural smells are taken into consideration and mined from a total of 524 versions across 14 different projects. The results show how different smell types differ in multiple aspects, such as their growth rate, the importance of the affected elements over time in the dependency network of the system, and the time each instance affects the system. They also cast valuable insights on what aspects are the most important to consider during prioritisation and refactoring activities.
“…The Affected design level, similarly, is important because the cycles present at both package and class level have an impact on two different levels at once. Finally, the Number of inheritance edges characteristic is considered because inheritance edges are considered an indicator of an intentional design choice [17], thus intentional cycles that contain a high number of inheritance edges between the components may be more interesting for a developer to inspect.…”
Architectural smells may substantially increase maintenance effort and thus require extra attention for potential refactoring. While we currently understand this concept and have identified different types of such smells, we have not yet studied their evolution in depth. This is necessary to inform their prioritisation and refactoring. This study analyses the evolution of individual architectural smell instances over time, and the characteristics that define these instances. Three different types of architectural smells are taken into consideration and mined from a total of 524 versions across 14 different projects. The results show how different smell types differ in multiple aspects, such as their growth rate, the importance of the affected elements over time in the dependency network of the system, and the time each instance affects the system. They also cast valuable insights on what aspects are the most important to consider during prioritisation and refactoring activities.
“…For experimentation, we took the four projects considered in [46] (namely, ANTLR, ArgoUML, Chocho solver, and jEdit) and we analyzed their package dependency graphs in order to detect the two considered anomalies. Since all our mutation operators are refactorings, we only had to measure the quality.…”
Section: Methodsmentioning
confidence: 99%
“…Regarding software architectures and program refactoring, the classical technique for detecting anomalies is to use static analysis and some heuristics (like estimation of cycle undesirability in [46]). There exist several attempts to automatically improve the source code structure by using mutation.…”
“…either class or package) PCT Depth* Depth refers to the number of packages that are an ancestor of the affected element in the system's package hierarchy (i.e. the PCT) [25]. PCT Distance*…”
A key aspect of technical debt (TD) management is the ability to measure the amount of principal accumulated in a system. The current literature contains an array of approaches to estimate TD principal, however, only a few of them focus specifically on architectural TD, and none of these are fully automated, freely available, and thoroughly validated. Moreover, a recent study has shown that many of the current approaches suffer from certain shortcomings, such as relying on hand-picked thresholds. In this paper, we propose a novel approach to estimate architectural technical debt principal based on machine learning and architectural smells to address such shortcomings. Our approach can estimate the amount of technical debt principal generated by a single architectural smell instance. To do so, we adopt novel techniques from Information Retrieval to train a learning-to-rank machine learning model that estimates the severity of an architectural smell and ensure the transparency of the predictions. Then, for each instance, we statically analyse the source code to calculate the exact number of lines of code creating the smell. Finally, we combine these two values to calculate the technical debt principal. To validate the approach, we conducted a case study and interviewed 16 practitioners, from both open source and industry, and asked them about their opinions on the TD principal estimations for several smells detected in their projects. The results show that for 71% of instances, practitioners agreed that the estimations provided were representative of the effort necessary to refactor the smell.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.