6.1 System Complexity
The classic System Complexity is a polymetric view showing a graph in which nodes represent classes and edges represent inheritance relationships between classes. The nodes are visually enriched with three metrics:
- the number of methods (NOM) is mapped on the height: the taller the rectangle, the more methods the class has;
- the number of attributes (NOA) is mapped on the width: the wider the rectangle, the more attributes the class has;
- the number of lines of code (LOC) is mapped on the color: the darker the rectangle, the more lines of code the class has.
Moose offers a slightly improved version. First, to maximize the screen real estate, instead of displaying all hierarchies next to each other horizontally, they are displayed in multiple rows. Second, the classes that do not inherit from any other class are placed in a “Lonely classes” group to the right.
The picture below shows the System Complexity of ArgoUML 0.28.1.
You can obtain the default visualization through the contextual menu of any class group: Visualize/System Complexity. You can also get a user interface that enables you to select the properties that you want mapped on each dimension: Visualize/Customizable System Complexity.