Programming Complex Systems. 4. Berlin, New York, NY: de Gruyter. XVI, 605 p. (1991).
[For another review see also Zbl 0731.68003.]
One of the key problems today is the maintenance of very large software systems. Many investigations have been directed towards solving problems like
comprehensibility of the existing software,
test level of the software and its components,
simplicity of the reuse of the implemented software,
reliability of the existing software etc.
A lot of measures have been created to quantify these characteristics. In general these measures were derived from the experience data (such as program errors, programming effort and costs etc.) the relation or correlation to special characteristics of the program or program models (flowgraphs, call graphs, syntactical trees etc.). In most cases these measures were called software metrics. But the important properties of measures – uniqueness, meaningfulness, representation and scale – were not considered.
Zuse performs a valuable service by furnishing a rational framework for examining the usefulness of a software metric.
In chapters 2 and 3 an overview of the different views about software complexity and their meaningfulness for the software development process is given.
Chapter 4 develops a measurement theory which applies to the software complexity measures. In chapters 5 and 6 the program models and the evaluation of complexity definitions are described. More than 90 complexity measures have been analysed on the basis of the measurement demonstration system (MDS) developed by the author (described in chapter 7). This analysis forms the basis for the possible measurement of the characteristics of software metrics and demonstrates the true characteristics of the measure and its usefulness in program evaluation. Some measures have surprising characteristics.
In chapter 9 the results are summarised and a set of complexity metrics is analysed on the basis of the introduced measurement theory. The book can be used as a handbook for the intraprogram complexity measures. The tables are very compact and informative – but are purely presented. The main usefulness of the book is
to obtain an overview of the ideas, definitions, and methods for the (psychological) software complexity,
to provide a detailed description of most of the intramodular complexity metrics,
to study the application of the measurement theory for software (not only code metrics) in general,
as a glossary of terms in the area of software measurement, and
to apply these ideas to further measurements in the softwave development process.
The book is very significant for the researchers in software metrics and in software engineering.