... | ... | @@ -54,7 +54,24 @@ Besides affecting complexity, their presence also has an impact on compiling (ca |
|
|
An architectural smell characteristic is a property or attribute of an architectural smell instance.
|
|
|
An architectural smell instance is a concrete occurrence of a type of architectural smell.
|
|
|
For each architectural smell type, one can measure different characteristics. We refer to the characteristics that can be measured for every type of smell as *smell-generic*, whereas we refer to the characteristics that can only be measured for certain types of smells as *smell-specific* characteristics.
|
|
|
The characteristics considered in our work are reported in Table
|
|
|
|
|
|
The characteristics considered in our work are:
|
|
|
|
|
|
* Smell Generic
|
|
|
* Age: The number of versions affected by the smell.
|
|
|
& Overlap Ratio & The ratio of the total number of components of a given smell that also take part in another smell
|
|
|
& Centrality & The importance of the components affected by the smell within the system. Measured using the PageRank of the components in the dependency graph. & \cite{Roveda2018b} \\
|
|
|
& Size & The number of elements of the system affected by the smell. & * \\
|
|
|
& Number of edges & The number of dependency edges among the components affected by the smell. & * \\ \midrule
|
|
|
\multicolumn{4}{c}{\itshape smell-specific}\\\midrule
|
|
|
\multirow{4}{0.1\linewidth}{CD} & Shape & The cycle shapes as shown in Figure \ref{fig:cycle-dep}. & \cite{Fontana2016,AlMutawa2014}\\
|
|
|
& Average edge weight & The number of dependencies (weight) between the components affected by the smell. It can be indicative of the difficulty of refactoring the cycle. & \cite{Fontana2017}\\
|
|
|
& Number of inheritance edges & The number of edges in the smell that represent an inheritance between components. & \cite{Laval2012} \\
|
|
|
& Affected design level & Whether the cycle is present only at architectural level (among packages) or also at design level (among classes) too. & \cite{AlMutawa2014} \\
|
|
|
& Parent centrality$^\dagger$ & The degree to which a package is at the centre of a cycle with its children sub-packages. & \cite{AlMutawa2014}\\ \midrule
|
|
|
\multirow{2}{0.1\linewidth}{UD} & Instability gap & The difference between the instability of the main component and the average instability of the dependencies less stable than the component itself. & \cite{Fontana2017} \\
|
|
|
& Strength (or DoUD \cite{Fontana2017}) & The ratio between the number of dependencies that point to less stable components and the total number of dependencies of the class. & \cite{Fontana2017} \\ \midrule
|
|
|
\multirow{3}{0.1\linewidth}{HL} & Average internal path length$^\dagger$ & Only computed on package HL. The average length of the paths between internal nodes with afferent dependencies and internal nodes with efferent dependencies within the central package. The shorter the length, the more the packages that depend upon the main component and packages that are depended upon by it are connected. & * \\
|
|
|
& Affected classes ratio$^\dagger$ & Only computed on package HL. The ratio between the number of classes taking part in a dependency relationship with afferent and efferent packages of the main component and the total number of classes in the main component.
|
|
|
\end{tabular}
|
|
|
|
|
|
# Tooling |
|
|
\ No newline at end of file |