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