Metric | Symbol | Description | Calculation | Value Range |
# of methods (modules) | n | The total number of methods in the application | Count of methods in the application | 1 ≤ n ≤ +∞ |
Design complexity | S0 | The size or volume of the application design | S0 = ∑ iv | 1 ≤ S0 ≤ +∞ |
Integration complexity | S1 | The size of the high level integration basis set of subtrees | S1 = S0 – n + 1 | 1 ≤ S1 ≤ +∞ |
Cyclomatic complexity | v, v(g) | The number of decision predicatesin the module;the size of a basis set of paths for unit level testing | # design predicates + 1; v = e – n + 2 where e is the # of edges and n is the number of nodes in a flowgraph | 1 ≤ v ≤ +∞ v > 10 is considered risky; higher v is riskier |
Essential complexity | ev, ev(g) | How well structured is the code; how easily is the code modularized (decomposed); how easily is the codemaintained | The v of a reduced flowgraph where only single-entry, single-exit constructs are logically eliminated | 1 ≤ ev ≤ v; ev = 1 is considered optimal, McCabe IQ defaults to ev ≤ 3; higher ev is riskier |
Module design complexity | iv, iv(g) | The number of decision predicates (plus 1) that significantly impact calls to subroutines; the size of a basis set of paths for low level integration testing; iv risk is based on where the module is located; a management module should have a high iv, higher iv is riskier | The v of a reduced flowgraph where design predicates that do not significantly impact calls to subroutine are logically eliminated | 1 ≤ iv ≤ v |
Local data complexity | ldv, ldv(g), (sdvlocal data) | The number of decision predicates (plus 1)that significantly impact the use of local data; the size of a basis set of paths for local data testing | The v of a reduced flowgraph where design predicates that do not significantly impact the use of local data | 0 ≤ ldv ≤ v; lower ldv is riskier |
Public global data complexity | pgdv, pgdv(g), (sdvglobal data) | The number of decision predicates (plus 1) that significantly impact the use of public global data; the size of a basis set of paths for public data testing | The v of a reduced flowgraph where design predicates that do not significantly impact the use of public global data | 0 ≤ pgdv ≤ v; higher pgdv is riskier |
Parameter data complexity | pdv, pdv(g), (sdvparameter data) | The number of decision predicates (plus 1) that significantly impact the use of parameter data; the size of a basis set of paths for parameter data testing | The v of a reduced flowgraph where design predicates that do not significantly impact the use of parameter data | 0 ≤ pdv ≤ v; lower pdv is riskier |