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