Achieving Excellence in Software Development Using Metrics ◾ 87
Design Complexity
With proper design, the features come cheaply. This approach
is arduous, but continues to succeed.
Dennis Ritchie
Function point (FP) and its variants can be used to judge design complexity; we
need to measure the flow of information from and into every module. A summary
of function point metrics is presented by Caper Jones [6].
A simple design metric has been proposed by Ball State University [7]:
e external design metric De is defined as
De = e1 (inflows * outflows) + e2 (fan-in * fan-out)
where inflows is the number of data entities passed to the module from
superordinate or subordinate modules plus external entities, outflows is
the number of data entities passed from the module to superordinate
or subordinate modules plus external entities, fan-in and fan-out are
the number of superordinate and subordinate modules, respectively,
directly connected to the given module, and e1 and e2 are weighting
factors.
e internal design metric Di is defined as
Di = i1 (CC) + i2 (DSM) + i3 (I/O)
where CC, the Central Calls, is the number of procedure or function
invocations, DSM, the Data Structure Manipulations, is the number of
references to complex data types, which are data types that use indirect
addressing, I/O, the Input/Output, is the number of external device
accesses, and i1, i2, and i3 are weighting factors.
D(G) is a linear combination of the external design metric De and
the internal design metric Di and has the form
D(G) = De + Di