Software metrics : By Tom Gilb

1
Book Reviews 283 Sufrware Merrics. By TOM GILB The basic problem that this book wrestles with is how can one measure the ‘quality’ of computer software? At first blush, such a task sounds formidable, if not impossible. What is quality anyway? Quality at any cost? We can easily think of a dozen more reasons why such an enterprise will be beset with significant difficulties, if not be totally impossible. &lb’s book can be regarded as the first more or less systematic effort to deal with these questions. While not wholly successful and somewhat disjointed in presentation, it nevertheless contains a wealth of material that anyone who must seriously be concerned with judging the efficiency of software design, debugging and operation would do well to examine. The book is divided into two major parts. Part 1 is entitled “Practical Applications of Software Metrics” and Part II is entitled “Metric Concepts”. This organization is such that the use of a metric such as “reliability of a computer program” is first discussed in some detail in Part I before it is rigorously defined in Part Il. This causesthe reader to do a lot of flipping through the pages of the book. On the other hand, the book’s arrangement does allow for a more leisurely development of the rationale and justification for the definitions that follow. A more reasonable presentation, in the reviewer’s opinion, would have been to merge the two sections together. The first part of the book concerns itself with such matters as how to measure the ‘maintainability’ of software, the effectiveness or difficulty of the debugging process, how to inspect the software development process, how to write adequate software specifications and a host of related matters. The material is practical and empirical. Most of the specific techniques discussed have been implemented somewhere in the recent past and the illustrations are profuse and reasonably clear. The second part of the book consists of definitions and simple illustrations of metrics proposed for the following software attributes: reliability, flexibility, structure, performance, resource and a few miscellaneous characteristics. The book also contains several useful appendices such as a COBOL program inspection checklist, test inspection forms, software characteristic evaluation forms and others. The book is a curious melange of shrewd insight, considerable thought, and simple and perhaps oversimple definitions. One finds that the whole is both useful and a little disappointing. The utility, which is considerable, inheres in the fact that one is forced to do something systematic about thinking about software, which most of us avoid as stubbornly as if asked to think objectively and systematically about love. The disappointment is probably caused by the realization that we have a long way to go. Nevertheless, this book is a definite first step. It is worth reading. Department of Operations Research and Engineeting Management Southern Methodist LJniversby Dallas, TX 15215. U.S.A. LEON CooPER Combinatorial Algorithms: Theory and Practice. By E. M. REINGOLD, J. NIEVERGELT and N. DEO.Prentice-Hall, Englewood Cliffs, NJ, 1977, $18.95. The term “combinatorial algorithms” usually means the performance of numerical computations with sets of discrete structures of one kind or another. The use of combinatorial algorithms in computing is often called combinatorial computing. This subject bears the same relationship to discrete or combinatorial mathematics as numerical analysis does to mathematical analysis. It seems to be undergoing significant growth at the present time and this book is the latest of several recent books. The point of view of the book is oriented more to a reader with a background in computing rather than in mathematics. However, the reader does need a significant amount of that characteristic called “mathematical maturity” to properly understand many portions of the book. The chapters are organized quite well. After a first chapter on a general description of combinatorial computing there is a chapter on the representation of combinatorial objects. Following this is a chapter on counting or estimating the number of elements in some set. Next, the subject of exhaustive search is covered including backtrack methods, branch and bound and some applications of dynamic programming. The use of sieves is also considered. The subject next considered is the generation of elementary combinatorial objects, e.g. permutations, combinations, partitions, subsets, etc. The next two chapters cover the important areas of searching and sorting of various kinds of arrays and tabulations. The next to the last chapter is concerned with algorithms which relate to computations involving graphs, a current area of great interest. The last chapter is a rather brief introduction to the notion of combinatorially equivalent problems and the subject of NP-complete problems. The many algorithms are presented in a relatively high-level language which is easy to understand and is similar to several existing languages. In sampling the exposition in the various chapters I found some matters explained particularly well and some others that were extremely terse and concentrated. This may be as much a characteristic of the inherent differences between the subjects as the quality of the exposition. I recommend the book for use with mature students or for self study. It is a fine introduction to the subject of combinatorial algorithms. Department of Operarions Research and Engineering Management Southern Methodist University Dallas, Texas TX 15215. U.S.A. LEON C&PER

Transcript of Software metrics : By Tom Gilb

Page 1: Software metrics : By Tom Gilb

Book Reviews 283

Sufrware Merrics. By TOM GILB

The basic problem that this book wrestles with is how can one measure the ‘quality’ of computer software? At first blush, such a task sounds formidable, if not impossible. What is quality anyway? Quality at any cost? We can easily think of a dozen more reasons why such an enterprise will be beset with significant difficulties, if not be totally impossible.

&lb’s book can be regarded as the first more or less systematic effort to deal with these questions. While not wholly successful and somewhat disjointed in presentation, it nevertheless contains a wealth of material that anyone who must seriously be concerned with judging the efficiency of software design, debugging and operation would do well to examine.

The book is divided into two major parts. Part 1 is entitled “Practical Applications of Software Metrics” and Part II is entitled “Metric Concepts”. This organization is such that the use of a metric such as “reliability of a computer program” is first discussed in some detail in Part I before it is rigorously defined in Part Il. This causes the reader to do a lot of flipping through the pages of the book. On the other hand, the book’s arrangement does allow for a more leisurely development of the rationale and justification for the definitions that follow. A more reasonable presentation, in the reviewer’s opinion, would have been to merge the two sections together.

The first part of the book concerns itself with such matters as how to measure the ‘maintainability’ of software, the effectiveness or difficulty of the debugging process, how to inspect the software development process, how to write adequate software specifications and a host of related matters. The material is practical and empirical. Most of the specific techniques discussed have been implemented somewhere in the recent past and the illustrations are profuse and reasonably clear.

The second part of the book consists of definitions and simple illustrations of metrics proposed for the following software attributes: reliability, flexibility, structure, performance, resource and a few miscellaneous characteristics.

The book also contains several useful appendices such as a COBOL program inspection checklist, test inspection forms, software characteristic evaluation forms and others.

The book is a curious melange of shrewd insight, considerable thought, and simple and perhaps oversimple definitions. One finds that the whole is both useful and a little disappointing. The utility, which is considerable, inheres in the fact that one is forced to do something systematic about thinking about software, which most of us avoid as stubbornly as if asked to think objectively and systematically about love. The disappointment is probably caused by the realization that we have a long way to go. Nevertheless, this book is a definite first step. It is worth reading.

Department of Operations Research and Engineeting Management Southern Methodist LJniversby Dallas, TX 15215. U.S.A.

LEON CooPER

Combinatorial Algorithms: Theory and Practice. By E. M. REINGOLD, J. NIEVERGELT and N. DEO. Prentice-Hall, Englewood Cliffs, NJ, 1977, $18.95.

The term “combinatorial algorithms” usually means the performance of numerical computations with sets of discrete structures of one kind or another. The use of combinatorial algorithms in computing is often called combinatorial computing. This subject bears the same relationship to discrete or combinatorial mathematics as numerical analysis does to mathematical analysis. It seems to be undergoing significant growth at the present time and this book is the latest of several recent books.

The point of view of the book is oriented more to a reader with a background in computing rather than in mathematics. However, the reader does need a significant amount of that characteristic called “mathematical maturity” to properly understand many portions of the book.

The chapters are organized quite well. After a first chapter on a general description of combinatorial computing there is a chapter on the representation of combinatorial objects. Following this is a chapter on counting or estimating the number of elements in some set. Next, the subject of exhaustive search is covered including backtrack methods, branch and bound and some applications of dynamic programming. The use of sieves is also considered. The subject next considered is the generation of elementary combinatorial objects, e.g. permutations, combinations, partitions, subsets, etc. The next two chapters cover the important areas of searching and sorting of various kinds of arrays and tabulations. The next to the last chapter is concerned with algorithms which relate to computations involving graphs, a current area of great interest. The last chapter is a rather brief introduction to the notion of combinatorially equivalent problems and the subject of NP-complete problems.

The many algorithms are presented in a relatively high-level language which is easy to understand and is similar to several existing languages. In sampling the exposition in the various chapters I found some matters explained particularly well and some others that were extremely terse and concentrated. This may be as much a characteristic of the inherent differences between the subjects as the quality of the exposition.

I recommend the book for use with mature students or for self study. It is a fine introduction to the subject of combinatorial algorithms.

Department of Operarions Research and Engineering Management Southern Methodist University Dallas, Texas TX 15215. U.S.A.

LEON C&PER