Little theory exists in the field of software system measurement.
Concepts such as complexity, coupling, cohesion or even size are very
often subject to interpretation and appear to have inconsistent
definitions in the literature. As a consequence, there is little guidance
provided to the analyst attempting to define proper measures for specific
problems. Many controversies in the literature are simply
misunderstandings and stem from the fact that some people talk about
different measurement concepts under the same label (complexity is the
most common case).
There is a need to define unambiguously the most important
measurement concepts used in the measurement of software products. One way
of doing so is to define precisely what mathematical properties characterize
these concepts, regardless of the specific software artifacts to which these
concepts are applied. Such a mathematical framework could generate a
consensus in the software engineering community and provide a means for
better communication among researchers, better guidelines for analysts, and
better evaluation methods for commercial static analyzers for practitioners.
In this paper, we propose a mathematical framework which is generic,
because it is not specific to any particular software artifact, and
rigorous, because it is based on precise mathematical concepts. This
framework defines several important measurement concepts (size, length,
complexity, cohesion, coupling). It does not intend to be complete or fully
objective; other frameworks could have been proposed and different choices
could have been made. However, we believe that the formalisms and properties
we introduce are convenient and intuitive. In addition, we have reviewed the
literature on this subject and compared it with our work. This framework
contributes constructively to a firmer theoretical ground of software
measurement.
(Also cross-referenced as UMIACS-TR-94-119