COMPLEXITY METRICS
Cyclomatic Complexity |
Cyclomatic Density | Decision
Density | Design Complexity |
Design Density | Essential Complexity
| Essential Density |
Global Data Complexity | Global
Data Density | Maintenance
Severity | Normalized
Cyclomatic Complexity |
Pathological Complexity
Cyclomatic Complexity (v(G))
Handle: Cyclomatic Complexity (v(G))
Description: It is a measure of the complexity of a modules decision
structure. It is the number of linearly independent paths.
Observation: This metric is generated with McCabe IQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one path - one count.
Range: Minimum is one; right now the maximum record is 456 but it is
otherwise unlimited.
Usage: This metric has been used by IV&V to prioritize their
inspection of software modules. The complexity analysis is also standalone and
has been delivered as a product.
Relationship: It's a measure of reliability from the standpoint of what
is required to test the system. It is a predictor of error.
Threshold: McCabe threshold is ten.
Validation: There are two in-house studies that show that this metric as
a predictor of error. The studies also show that 20, as a threshold, is a
better predictor of error than 10.
+ Top
Cyclomatic Density (vd(G))
Handle: Cyclomatic Density (vd(G))
Description: It is the ratio of the module's cyclomatic complexity to
its length in NCSLOC. The intent is to factor out the size component of
complexity. It has the effect of normalizing the complexity of a module, and
therefore its maintenance difficulty. .
Observation: This metric is generated with McCabe IQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one path - one count.
Range: Minimum is one; right now the maximum record is 456 but it is
otherwise unlimited.
Usage: This metric has been used by IV&V to prioritize their
inspection of software modules. The complexity analysis is also standalone and
has been delivered as a product.
Relationship: It's a measure of reliability from the standpoint of what
is required to test the system. It is a predictor of error.
Threshold: McCabe threshold is ten.
Validation: Gill and Kemerer conducted a study that indicated that this
is "shown to be a statistically significant single-value predictor of
maintenance productivity."
+ Top
Decision Density (dd(G))
Handle: Decision Density
Description: Calculated as: Cond / Decision.
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range:
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available.
+ Top
Design complexity (iv(G))
Handle: Design Complexity (iv(G))
Description: Design complexity is a measure of a module's decision
structure as it relates to calls to other modules. This quantifies the testing
effort related to integration.
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one call - one count.
Range: Minimum of 1; maximum by definition cannot exceed the cyclomatic
complexity.
Usage: This metric has been little used at the IV&V facility.
Relationship: It is a measure of the integration effort.
Threshold: It has no threshold.
Validation: We have two studies that show it is a predictor of error.
+ Top
Design Density (id(G))
Handle: Design Density
Description: Design density is calculated as: iv(G)/v(G).
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range: Maximum is one.
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available.
+ Top
Essential complexity (ev(G))
Handle: Essential Complexity
Description: Essential complexity is a measure of the degree to which a
module contains unstructured constructs.
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range: Minimum is one. By definition it cannot exceed the cyclomatic
complexity.
Usage: This metric has been used by IV&V to prioritize their
inspection of software modules. The complexity analysis is also standalone and
has been delivered as a product.
Relationship: It is a measure of maintainability. It is a predictor of
error.
Threshold: The McCabe threshold is 4.
Validation: There are two in-house studies that confirm that this metric
is a predictor of error. In one study it is a better predictor of error than
v(G). In another, it is not.
+ Top
Essential Density (ed(G))
Handle: Essential Density
Description: Essential density is calculated as: (ev(G)-1)/(v(G)-1).
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range: Maximum is one.
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available
+ Top
Global Data Complexity (gdv(G))
Handle: Global Data Complexity
Description: Global Data Complexity quantifies the cyclomatic complexity
of a module's structure as it relates to global/parameter data.
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range: Minimum is one. By definition it cannot exceed the cyclomatic
complexity. (Note: A value of zero in the database indicates that this is
not a relevant metric for the programming language of the metric)
Usage: .
Relationship: It is a measure of maintainability. It is a predictor of
error.
Threshold:
Validation: There are no in-house studies of this metric currently
available.
+ Top
Global Data Density (gd(G))
Handle: Global Data Density
Description: Global Data density is calculated as: gdv(G) / v(G).
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range:
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available
+ Top
Maintenance Severity (MAINT_SEV)
Handle: Maintenance Severity
Description: Maintenance Severity is calculated as: ev(G)/v(G).
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range:Maximum is one.
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available
+ Top
Normalized Cyclomatic Complexity (Norm v(G))
Handle: Normalized Cyclomatic Complexity
Description: Normalized Cyclomatic Complexity is calculated as: v(G) /
nl.
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range:
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available
+ Top
Pathological Complexity (pv(G))
Handle: Pathological Complexity
Description: A measure of the degree to which a module contains
extremely unstructured constructs.
Observation: This metric is generated using McCabeIQ 7.1.
Frequency: Frequency is determined by the requirements of each project.
Scale: This is one unstructured path - one count.
Range:
Usage:
Relationship:
Threshold:
Validation: There are no in-house studies of this metric currently
available
+ Top
|