90 ◾ Simple Statistical Methods for Software Engineering
Code Complexity
Again, function point is a good enough metric of code complexity. If a tool is
available for measuring complexity, we can use the McCabe complexity number.
is cyclomatic complexity measures the amount of decision logic in a single soft-
ware module. Cyclomatic complexity is equal to the number of independent paths
through the standard control flow graph model.
Highly complex modules are more prone to error, harder to understand, harder
to test, and harder to modify. Limiting complexity helps. McCabe proposed 10 as
the limit, but higher levels of complexity are in use.
Defect Density
A common metric to express quality is known as defects per kilo lines of code
(KLOC) or defects per FP. e second formula can be used even in the design
phase.
BOX 6.2 THE FULL FUNCTIONPOINT: A BREAKTHROUGH
e full function point (FFP) revolutionized size measurement. A new
paradigm was invented: data movement is size. Full function points were
proposed in 1997 with the aim of offering a functional size measure spe-
cifically adapted to real-time software. It has been proven that FFP can
also capture the functional size of technical and system software and MIS
software.
FFP distinguishes four types of data movement subprocess: entry, exit,
read, and write, as identified in the context model of software. FFP makes
use of the measurement principle: the functional size of software is directly
proportional to the number of its data movement subprocesses.
Practice tends to show that the FFP approach, while offering results very
similar to those of the IFPUG approach when applied to MIS software, offers
more adequate results when applied to real-time, embedded, or technical soft-
ware by virtue of the fact that (a) its measurement functions are not bounded
by constants and (b) the level of granularity is more relevant to these types
of software. Furthermore, in situations requiring the measurement of smaller
pieces of software, the FFP approach offers a finer degree of granularity than
the one offered by the IFPUG approach by virtue of the identification and
measurement of subprocesses.
Serge Oligny and Alain Abran