[comp.object] 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

render@m.cs.uiuc.edu (07/18/90)

Written 11:05 pm  Jul 17, 1990 by vladimir@prosper:
>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?

I got the book a while back and read through it last week.  Here are my 
general impressions:

Booch's new book attempts to outline a methodical approach to OO system
design.  The introductory chapters provide an overview of general design 
and OO design principles.  The middle chapters describe his OO design
notation, a combination of graph diagrams and document templates. The
latter chapters show how the design principles and notation may be applied
to sample problems.

I found Booch's discussion of design principles to be quite good, with many
references to other work in and out of the OO area.  His notation seems to 
be better than other OO analysis/design notations I have seen (e.g. Shlaer 
and Mellor or Coad and Yourdon), mostly because it supports several 
inter-object and inter-class relationships.  His applications examples also 
seem good, since he chooses examples from a wide range of areas (control 
systems, software tools, AI) with different support mechanisms (a DBMS, a 
blackboard system).  His references and bibliography are excellent, so much
so that I recommend reading the book if only to peruse the list of sources.

My only misgivings (and they are not strong ones) are that he uses five 
different languages for the examples (Smalltalk, CLOS, C++, Object Pascal
and Ada) and that the last, Ada, is not really an OOPL at all.  Because I 
have had experience with all of the languages, the variety didn't impair 
my reading of the text, but I believe that someone with a more limited 
background could have trouble.  The inclusion of Ada is understandable 
given Booch's background (he has written several books on Ada and works 
for a leading Ada vendor), but I question it's use when it requires "coding 
discipline" to do things in an OO manner.  Still, this may actually be good 
for those software developers who have to use non-OO languages but wish to 
experiment with OO design.  I think Booch recognizes this audience since he 
supports both a "logical view" (pure OO) and a "physical view" (possibly 
non-OO) of a system with his design notation.  This could widen the interest 
in OO design and overcome the "cult" label that currently plagues it.

In summary, I recommend the book, and I'm looking forward to trying out
his notation.  Speaking of this, does anyone know if there are any 
support tools available for his diagrams and templates?  Please e-mail 
me or post it to the net.  Thanks.

hal render
render@cs.uiuc.edu

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

jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) (07/21/90)

In an article render@m.cs.uiuc.edu wrote:
>The inclusion of Ada is understandable...
>but I question it's use when it requires "coding 
>discipline" to do things in an OO manner.  Still, this may actually be good 
>for those software developers who have to use non-OO languages but wish to 
>experiment with OO design.  I think Booch recognizes this audience since he 
>supports both a "logical view" (pure OO) and a "physical view" (possibly 
>non-OO) of a system with his design notation.  This could widen the interest 
>in OO design and overcome the "cult" label that currently plagues it.

I think this is a very important observation that you make.  I belive that
object-oriented design is a very important means of getting a handle on
the complexity of our problems we are trying to solve.  But most of us are
not priveleged to progam in an object-oriented language.  Professionally
I do a lot of programming in DIBOL.  The rest of the time it is in C.

Up until recently I had read various articles on using OO discipline in
non-OO languages, but I never understood how it all fit together.  Now I
have started to grasp the concepts, thanks to a SE course I took.  But I
feel that there is a great need for books that will teach programmers how
to "think OO", even though they must program in other languages.

-- 
John Dudeck                                 "I always ask them, How well do
jdudeck@Polyslo.CalPoly.Edu                            you want it tested?"
ESL: 62013975 Tel: 805-545-9549                               -- D. Stearns