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