The previous editions of this book have taught tens of thousands how to apply the concepts and ideas behind object technology to design successful software applications. This revision will bring the book up to date with the many changes in technology that have happened since the second edition was first published in 1994. New topics covered in the third edition include the Unified Software Development Process, UML, Patterns, Java, and Components.
Features and Benefits
top
The long-awaited revision of THE book on learning proper OO analysis and design, from UML founder Grady Booch is back!
* Over 15 years in the making THE guide to OO programming has been thoroughly revised, updated and restructured based on new advances in technology and extensive reader feedback
* Second edition sold over 72,000 copies in retail
* Since the second edition, object-oriented technology has become well established in the mainstream of software development
Table of Contents
top
Sidebars
xi
Preface
xiii
Acknowledgments
xix
About the Authors
xxi
Section I: Concepts
1
Chapter 1: Complexity
3
1.1
The Structure of Complex Systems
4
1.2
The Inherent Complexity of Software
7
1.3
The Five Attributes of a Complex System
12
1.4
Organized and Disorganized Complexity
14
1.5
Bringing Order to Chaos
18
1.6
On Designing Complex Systems
24
Chapter 2: The Object Model
29
2.1
The Evolution of the Object Model
29
2.2
Foundations of the Object Model
37
2.3
Elements of the Object Model
43
2.4
Applying the Object Model
71
Chapter 3: Classes and Objects
75
3.1
The Nature of an Object
75
3.2
Relationships among Objects
88
3.3
The Nature of a Class
92
3.4
Relationships among Classes
96
3.5
The Interplay of Classes and Objects
111
3.6
On Building Quality Classes and Objects
112
Chapter 4: Classification
121
4.1
The Importance of Proper Classification
121
4.2
Identifying Classes and Objects
126
4.3
Key Abstractions and Mechanisms
138
Section II: Method
145
Chapter 5: Notation
147
5.1
The Unified Modeling Language
147
5.2
Package Diagrams
155
5.3
Component Diagrams
163
5.4
Deployment Diagrams
171
5.5
Use Case Diagrams
175
5.6
Activity Diagrams
185
5.7
Class Diagrams
192
5.8
Sequence Diagrams
206
5.9
Interaction Overview Diagrams
213
5.10
Composite Structure Diagrams
215
5.11
State Machine Diagrams
218
5.12
Timing Diagrams
231
5.13
Object Diagrams
235
5.14
Communication Diagrams
238
Chapter 6: Process 247
6.1
First Principles
248
6.2
The Macro Process: The Software Development Lifecycle
256
6.3
The Micro Process: The Analysis and Design Process
272
Chapter 7: Pragmatics
303
7.1
Management and Planning
304
7.2
Staffing
308
7.3
Release Management
312
7.4
Reuse
314
7.5
Quality Assurance and Metrics
316
7.6
Documentation
320
7.7
Tools
322
7.8
Special Topics
324
7.9
The Benefits and Risks of Object-Oriented Development
326
Section III: Applications
331
Chapter 8: System Architecture: Satellite-Based Navigation
333
8.1
Inception
334
8.2
Elaboration
347
8.3
Construction
370
8.4
Post-Transition 371
Chapter 9: Control System: Traffic Management
375
9.1
Inception
376
9.2
Elaboration
385
9.3
Construction
396
9.4
Post-Transition 411
Chapter 10: Artificial Intelligence: Cryptanalysis
413
10.1
Inception
414
10.2
Elaboration
421
10.3
Construction
427
10.4
Post-Transition 446
Chapter 11: Data Acquisition: Weather Monitoring Station
449
11.1
Inception
450
11.2
Elaboration
463
11.3
Construction
474
11.4
Post-Transition
487
Chapter 12: Web Application: Vacation Tracking System
489
12.1
Inception
490
12.2
Elaboration
494
12.3
Construction
506
12.4
Transition and Post-Transition
534
Appendix A: Object-Oriented Programming Languages
537
A.1
Language Evolution
537
A.2
Smalltalk
541
A.3
C++
546
A.4
Java
551
Appendix B: Further Reading
557
Notes
567
Glossary
591
Classified Bibliography
603
Index
677