Imagix 4D User Guide


Subsystem Metrics

The following metrics are generated for each subsystem in a given architecture in a project. Multiple architectures can be defined for a project; a given display indicates the metrics for one specific architecture, and the subsystems it contains. As user changes are made to an architecture, by adding, moving or deleting a subsystem or its members, the metrics for that architecture are recalculated.

Size Metrics

Lines in SubsystemNumber of lines in the functions in the subsystem.
Lines of Source CodeNumber of lines of code in the functions in the subsystem.
Related Source FilesNumber of files containing function definitions, variable declarations and class declarations for the subsystem.
Classes in SubsystemNumber of classes in the subsystem.
Abstract Classes in SubsystemNumber of abstract classes in the system.
Members in SubsystemNumber of total members transitively in the subsystem. Includes subsystems as well as symbols.
Direct MembersNumber of direct members of the subsystem. Includes subsystems as well as symbols.
Functions in SubsystemNumber of functions transitively in the subsystem.
Variables in SubsystemNumber of variables transitively in the subsystem.

Complexity Metrics

McCabe Total ComplexityTotal cyclomatic complexity for all functions defined in the subsystem.
McCabe Average ComplexityAverage cyclomatic complexity for all functions defined in the subsystem.
McCabe Maximum ComplexityMaximum cyclomatic complexity for any function defined in the subsystem.

Structure Metrics

Level in HierarchyLevel of the subsystem in the architecture's overall hierarchy.
Depth of Interior SubsystemsDepth of the hierarchy of lower-level subsystems contained within the architecture.
Stability of SubsystemMeasure of how sensitive the subsystem is when classes in the subsystem are changed.
Average Usage of SubsystemMeasure of how many classes are affected when the subsystem is changed.
Instability of SubsystemMeasure of how concrete the subsystem is. The more that concrete implementations are used along with high dependency, the more instable a subsystem will become.
Abstractness of SubsystemRatio of abstract classes to total classes in subsystem.
Abstractness vs. InstabilityMeasure of abstractness versus instability.
Violations RelaxedNumber of external relationships in violation of relaxed layering.
Violations StrictNumber of external relationships in violation of strict layering.

Fan In Metrics

Class Usage Fan-InSum of number of classes outside the subsystem that depdend on classes inside the subsystem.
Function Call Fan-InNumber of functions outside the subsystem that call subsystem functions.
Subsystem Call Fan-InNumber of external subsystems that directly contain functions that call subsystem functions.
Variable Use Fan-InNumber of functions outside the subsystem that set or read subsystem variables.
Subsystem Use Fan-InNumber of external subsystems that directly contain functions that set or read subsystem variables.

Member Usage Metrics

Functions Called TotalPercentage of subsystem functions that are called from anywhere.
Functions Called ExternalPercentage of subsystem functions that are called from outside of the subsystem.
Variables Used TotalPercentage of subsystem variables that are set or read from anywhere.
Variables Used ExternalPercentage of subsystem variables that are set or read from outside of the subsystem.

Fan Out Metrics

Class Usage Fan-OutSum of number of classes outside the subsystem depended upon by classes inside the subsystem.
Function Call Fan-OutNumber of functions outside the subsystem that are called by subsystem functions.
Variable Use Fan-OutNumber of variables outside the subsystem that are set or read by subsystem functions.
Subsystem Use Fan-OutNumber of external subsystems that directly contain members that are used by subsystem functions.
Functions with External DependenciesPercentage of subsystem functions that call, set or read symbols outside the subsystem.