REVIEW - Software Engineering with Ada

Title:

Software Engineering with Ada

Author:

Grady Booch

ISBN:

0805306048

Publisher:

Benjamin-Cummings Publishing Company (1987)

Pages:

580pp

Reviewer:

Colin Paul Gloster

Reviewed:

April 2004

Rating:

★★☆☆☆

Grady Booch used to be actively involved with Ada before he ported the Booch components to C++ and merged his diagramming notation into UML. At the end of 1984 he stopped writing an Ada advice column in "Ada Letters" which had a very different style to this book but a similar target readership.

Page 63 is the first to contain any Ada code. The rather late appearance of code is deliberate so as to devote earlier pages to such issues as the software crisis; the history of Ada; software engineering and determining nouns to be mapped to objects. From page 404 onwards the chapters also have no code but contain less welcome discussions on IDEs and future trends.

Unlike what is unfortunately the majority of programmers, Grady Booch appealed against importing packages into direct visibility. Ada 95's use type mechanism is a comfortable way of enjoying some of the conciseness brought about by an Ada 83 use clause while not introducing any scope clashes. The book described an Ada 83 substitute of a use type clause. Something else which you might find in old code could be optimisations for accept statements recommended in the book. Though accept would be discouraged in one particular modern community, the author's dismissiveness of polling in favour of Ada tasking would have been unfair even when the book was written.

As this book is from before the effort to define Ada 9X, it contains claims that Ada 83 is OO. The object based decompositions in the book lack inheritance and polymorphism. For areas of his solutions where classes or abstract data types are not needed, Grady Booch had abstract-state machines: which he had much more easily represented by Ada packages than the insecure, inflexible awkwardness of the Singleton pattern in C++ in Gamma's; Helm's; Johnson's and Vlissides's "Design Patterns: Elements of Reusable Object-Oriented Software".

He provides an explanation for the language oddity which is the locating of a package's private section in the package specification instead of the package body. Unfortunately a few small mistakes and some misleading explanations for other language elements survive in the second edition. Very few spelling mistakes are to be found in the English sentences but illegal spaces are common in the code.

The blurb boasts that this edition has an "updated section on object-oriented techniques to reflect the current state of practice" without drawing attention to one huge case statement all of whose branches are identical. A default may be justified from time to time, but his assertion that when others = "is useful" contradicts guidelines issued by a number of parties.

One of his examples has a memory leak. This latter edition somehow contains no warning of some of the quality issues with supposed Ada compilers of the time.

Generally Ada is correctly and easily explained. The book is designed to be sped through.


Book cover image courtesy of Open Library.