The Booch Method - Summary Note
This is a summary note of the Booch Method, which is described in the book
shown below. The style of this note is in so called "FAQ - Frequently
Asked Questions". I made questions and, for the answers to these, I picked
up appropriate phrases found in the book. Therefore, most part of this
note consists of quotations from the original book. Please send your
comments on this summary to
Katsuya Amako.
Grady Booch
Object-Oriented Analysis and Design with Applications
The Benjamin/Cummings Publishing Co. Inc, 1994, ISBN 0-8053-5340-2
Contents
The First Section: Concepts
-
What are properties of simple and complex software systems?
-
Why is software inherently complex?
-
What are common to all complex systems?
-
How to bring an order to a complex system?
-
How to construct a complex software system?
-
What is object-oriented analysis and design?
1. The Evolution of the Object Model
-
What are OOP, OOD, and OOA?
-
How are OOA, OOD, and OOP related?
2. Element of the Object Model
-
What is the object model?
-
What is abstraction?
-
What kinds of abstraction are there?
-
Examples of abstraction?
-
What is encapsulation?
-
Examples of encapsulation?
-
What is modularity?
-
How to achieve modularity?
-
Examples of modularity?
-
What is hierarchy?
-
Examples of hierarchy? - Single inheritance
-
Examples of hierarchy? - Aggregation
-
What is typing?
-
What is relation between typing and object modeling?
-
Examples of strong typing?
-
What are static and dynamic typing?
-
Example of dynamic binding?
-
What is concurrency?
-
What is persistence?
1. The Nature of an Object
-
What is an object?
-
What is the meaning of state of an object?
-
What is the meaning of behavior of an object?
-
What is operation of an object?
-
What are class utilities?
-
What are roles and responsibilities?
-
What is the relation between object and state machine?
-
What is the meaning of identity of an object?
-
What is the structural sharing?
-
What is object copying?
-
What is object assignment?
-
What is object equality?
-
What is object life span?
2. Relationships among Objects
-
What kinds of relationships are there among objects?
-
What are links?
-
Example of link?
-
What is visibility of objects?
-
What is aggregation?
3. The Nature of a Class
-
What is a class?
-
What are class interface and implementation?
4. Relationships among Classes
-
What kinds of relationships are there among classes?
-
What is class association?
-
What is cardinality of class association?
-
What is inheritance?
-
Example of inheritance?
-
What is polymorphism?
-
Example of polymorphism?
-
Why to use polymorphism?
-
What is the relation between polymorphism and late binding?
-
What is aggregation?
-
What is using?
-
What is instantiation?
-
What is metaclass?
5. The Interplay of Classes and Objects
-
What the role of classes and objects in analysis and design?
6. On Building Quality Classes and Objects
-
How to measure the quality of an abstraction?
-
Where to place operations/methods?
-
When to use a free subprogram?
-
What types of message passing to be considered in concurrency?
-
How to choose relationships among classes/objects?
-
Which to select shallow or deep inheritance?
-
Which to select inheritance or aggregation?
-
How an object is visible to another?
1. The Importance of Proper Classification
-
What is the relation between classification and object-oriented development?
-
Why is classification difficult?
2. Identifying Classes and Objects
-
What kinds of approaches are there in classification?
-
How to use the classification approaches to OO design?
-
What kind of methodologies are there to find classes and objects?
3. Key Abstractions and Mechanisms
-
What is a key abstraction?
-
How to find a key abstraction?
-
What is a mechanism?
-
How to find a mechanism?
The Second Section: The Method
5. The Notation
6. The Process
7. Pragmatics