[comp.lang.c++] Seeking review of Booch's new book

vladimir@prosper (Vladimir G. Ivanovic) (07/18/90)

Is anyone willing to post (if it hasn't been done already) a review of Grady
Booch's new book, "Object Oriented Design with Applications" (title?), or
e-mail it to me if it's old hat?

Thanks.

-- Vladimir

killops@mentor.com (Scott Killops) (07/19/90)

In article <139084@sun.Eng.Sun.COM> vladimir@prosper (Vladimir G. Ivanovic) writes:
>Is anyone willing to post (if it hasn't been done already) a review of Grady
>Booch's new book, "Object Oriented Design with Applications" (title?), or
>e-mail it to me if it's old hat?

Don't have time to compose a real review and have only read the first half
so far, anyway, but Booch's book is the best introduction to OO that I've
yet come across.  Previously, Meyer's OOSC was the best I had encountered,
and I would still recommend reading both if one has the time and/or money.
(Note that I haven't read Brad Cox's book yet, nor any of the books
emanating from the Smalltalk or Ada worlds).  What follows is more of
a summary than a review.

Booch's book is divided into three sections: concepts, method, and
applications.

The first section opens with a discussion of complexity and the roles of
decomposition, abstraction, and hierarchy in managing complexity.  He
then presents the object model and discusses seven attributes of this
model: abstraction, encapsulation, modularity, hierarchy, typing,
concurrency, and persistence.  He characterizes the first four as major
elements of the object model and the last three as minor elements.
Next, he discusses classes and objects, characterizing the nature of
each and the relationships between each.  Included here is a short
section on building quality classses and objects for which he presents
five metrics: coupling, cohesion, sufficiency, completeness, and
primitiveness.  The final chapter in the first section discusses
classification which he describes as an incremental and iterative
process.  Several approaches are discussed: classical categorization,
conceptual clustering, and prototype theory.  Also briefly discussed
are object oriented analysis, domain analysis, and structured analysis.

The second section opens with a chapter on notation.  He discusses the
need to view a design from multiple perspectives and presents a diagram/
notation to support each.  The perspectives discussed are the logical and
physical structure of a design and the static and dynamic semantics of a
design.  Static semantics are expressed in object and class diagrams
(logical structure) and module and process diagrams (physical structure).
Dynamic semantics are expressed in state transition diagrams and timing
diagrams.  The next chapter discusses the process of object oriented
design which is characterized as being an incremental and iterative.
A four step process is presented: identify classes and objects; identify
the semantics of classes and objects; identify the relationships among
classes and objects; implement classes and objects.  The final chapter
in the second section discusses pragmatics: OOD in the lifecycle, managing
an OOD project, and the benefits and risks incurred incurred in using OOD.

The third section of the book presents extended examples in each of three
programming languages: Smalltalk (a home heating system); Object Pascal
(geometrical optics constuction kit); C++ (problem reporting system);
CLOS (cryptanalysis); and Ada (traffic management system).  I haven't
made it through this section of the book yet, but it seems to be well
thought out and presented and seems to clarify use of the notation in
support of design.

I'm new to OO and have been attempting to teach myself C++ as a background
task.  I started out with several of the C++ books, but found that I wasn't
getting a good feel for the OO concepts underlying the language features.
Booch's book does a good job of providing that foundation.  It's also a
good starting point for research into more specific OO topics or topics
related to OO, due to the extensive notes and bibliography included.  At
this point, I would recommend the combination of Object Oriented Design
With Applications and Lippman's C++ Primer to anyone new to OO and trying
to learn C++ (probably followed by Hansen's C++ Answer Book, if one likes
to read that much).  While I have yet to use it, Booch's OOD notation appeals
to me more than any of the handful of other notations I've encountered so
far (Wasserman, et al, Kerth, Coad/Yourdon).  It's sure to be the first I
attempt to use.

Probably the weakest parts of the Booch's book are the chapters on process
and pragmatics.  Discussion of more specific techniques, tools, examples, or
case studies would help here.  However, these chapters still provide a good
starting point for discussion of the topics covered.

On a related note, I just finished reading Coad/Yourdon's Object Oriented
Analysis and would not recommend it.  Compared to Booch's book, the presentation
is very superficial and not nearly as well researched or thought out.  Even if
one is primarily interested in analysis, Booch's book is a better source of
information.

Hope this helps.  Can anyone with more experience in OO provide a more
critical appraisal of Booch's commentary?

Scott Killops                  Mentor Graphics Corporation
killops@mentor.com             ...tektronix!tessi!mntgfx!killops