Annotated Bibliography

When I started doing this kind of comparison I would read every book on OO analysis and design, and most of the papers on the subject. I had to abandon that a long while ago - there is just too much material. This is my personal annotated bibliography of works I have read and found particularly interesting and useful.


Beck, K. Smalltalk Best Practice Patterns. Prentice Hall, Englewood Cliffs, NJ, 1997.

Not strictly a book on analysis and design techniques but useful as many of its patterns delve into the sparsely documented field of refactoring. Many of the patterns are useful for other OO languages too, so its worth reading even if you aren't a smalltalker.

[Beck and Cunningham]

Beck K and Cunningham W "A laboratory for teaching object-oriented thinking" Procedings of OOPSLA 89

The paper that introduced CRC cards. Available on the web.


Booch, G. Object-Oriented Analysis and Design with Applications,(Second Edition Addison-Wesley, Menlo Park CA, 1993.

If you are looking for a book to introduce you to object-oriented design, few would disagree that this is a worthy place. The books has several chapters describing OO concepts, a description of his notation and methodology, and then several examples which discuss how to use the techniques in C++. As one of the authors of the UML his ideas have taken a leading place in the development of the UML. The biggest disadvantage of the book is that it has very much an implementation perspective, so it is good to use [Odell foundations] as a counter-weight.

See [Martin] for more material on the Booch method.

[Booch solutions]

Booch, G. Object Solutions: Managing the Object-Oriented Project, Addison-Wesley, Menlo Park CA, 1996

This is Booch on project management, and a good read it is too. He emphasizes the evolutionary process with an emphasis on actively attacking risk. He adds many war stories and a bunch of reasonable rules of thumb. It is also not too long. It is not as comprehensive as [Goldberg and Rubin] but it is a fine read nonetheless.

[Buschmann et al]

Buschmann F, Meunier R, Rohnert H, Sommerlad P, Stal M, Pattern-Oriented Software Architecture: A System of Patterns, Wiley, Chichester UK, 1996

Patterns collected by several developers at Siemens. Includes several architectural patterns as well as design patterns.

[Coad, North, Mayfield]

Coad, P., North, D. and Mayfield, M. Object models: strategies, patterns, & applications, Prentice Hall, 1995.

Coad's take on patterns. These are different to the PLoP style. They are typical combinations of models. The key to the book is chapter 6 where Coad explains how to use his patterns to help generate a model. This approach begins by identifying certain kinds of easy-to-spot objects. For I.S. systems these are containers and transactions, for real-time systems he starts with devices, and then containers and transactions. The patterns describe typical configurations of classes, so you can look at all the patterns for containers and see where they might apply in the problem. The patterns then spread out from the various players. Each pattern also suggests typical behaviors.

[Cook and Daniels]

Cook, S. and Daniels, J. Designing Object Systems: object-oriented modeling with Syntropy, Prentice Hall International, Hemel Hempstead, UK, 1994.

One of my favorites. Cook and Daniels wanted a rigorous method with lots of formalism, yet to hide the formality behind OMT style diagrams. For those who want formality this is the best book. Even if you don't want formality their ideas and rigor will be a valuable read. It is particularly valuable for their discussion of perspective in class diagrams and is the best source information on Harel statecharts. It is an advanced book, however, so I would not suggest it as a first read.


Fowler M, Analysis Patterns: Reusable Object Models, Addison-Wesley, Reading MA, 1997

Extracts of domain models that I have come across in developing object-oriented software with examples from healthcare, financial trading, accounting, planning, and layered architectures.

[Fowler, UML]

Fowler M with Scott K, UML Distilled: Applying the Standard Object Modeling Language, Addison-Wesley, Reading MA, 1997

A concise (under half and inch) guide to the new UML. Written for those who already understand the basics of OO modeling and want a quick overview of the important bits of the UML.

[Gang of Four]

Gamma E, Helm R, Johnson R, and Vlissides J, Design Patterns: Elements of Reusable Object Oriented Software, Addison-Wesley, Reading MA, 1995

The first flowering of the patterns movement and one of the most important software books published in the last ten years. A catalog of 23 common designs with rationale, models, and example code. If you are at all serious about OO programming you must have this book.

[Goldberg and Rubin]

Goldberg A. and Rubin K., Suceeding with Objects: Decision Frameworks for Project Management, Addison-Wesley, Reading MA, 1995

A comprehensive book on project management and object technology adoption, with a lot of case study information. Covers more ground than [Booch].


Graham I., Migrating to Object Technology, Addison-Wesley, Wokingham UK, 1995

One of the best sources for rules, including a shot at incorporating fuzzy logic to object systems. Has a detailed description of an object-oriented development process. Useful ideas on use-cases.


Jacobson I., Christerson M., Jonsson P. and Övergaard G. (1992) Object-Oriented Software Engineering: a use case driven approach, Addison-Wesley.

The book that started the charge of use-cases into object methods, as a result a very influential book. The treatment of use-cases is still the principal value of the book. Many of the modeling techniques have been assimilated into the UML

[Jacobson BPR]

Jacobson, I., Ericsson, M. and Jacobson, A. The Object Advantage: business process engineering with object technology, Addison-Wesley, 1995.

Jacobson applies use-case to business. There is an air of opportunism and stretching what is really a computer technique, but anyone who uses use-cases ought to think about the wider business use-cases.


Martin, R.C. Designing Object-Oriented C++ Applications Using the Booch Method, Prentice Hall, Englewood Cliffs, NJ, 1995.

Contains a series of large (for a book) and detailed case studies. For each study he takes you through design using class diagrams, interaction diagrams, and package diagrams using Booch's method. From the design he shows you how to get to C++. This book has the best treatment of package diagrams that I have seen.


Meyer B. Object-Oriented Software Construction, Prentice Hall, Englewood Cliffs, NJ, 1988

An old, yet still valuable book on object technology from a software engineering standpoint. Its most important feature is its discussion of design by contract. Now available in a (enormous) second edition.

[Odell foundations]

Martin, J. and Odell, J. Object oriented methods: a foundation, (UML Edition), Prentice Hall, Englewood Cliffs, NJ, 1995.

A very important book because it looks at objects from a conceptual perspective. As such it is one of the few books that really looks at objects from an analysis perspective. Includes a good description of multiple and dynamic classification, and details on event diagrams - the basis of UML's activity diagrams. It has recently been updated to the UML notation and is thus one of the first deep books to use the UML.

[Odell pragmatics]

Martin, J. and Odell, J. Object oriented methods: pragmatic considerations, Prentice Hall, Englewood Cliffs, NJ, 1996.

Looks at how to get from models to code, reuse, and method engineering - a way of building custom methods for development organizations.

[PLoP 1 and 2]

Coplien, J.O. and Schmidt, D.C. Pattern Languages of Program Design, Addison-Wesley, Reading, MA, 1995.

Vlissides, J.M., Coplien, J.O. and Kerth, N.L. ed.Pattern Languages of Program Design 2, Addison-Wesley, 1996.

The procedings from the patterns conference. A wide range of patterns covering the whole field of software.


Reenskaug, T., Wold, P. and Lehne, O.A. Working with objects: the OOram software engineering method, Manning Publications, Greenwich, CT, 1996.

Takes a different slant by looking at roles in interactions and then synthesizing the roles into classes. Reenskaug gives guidelines for performing safe synthesis: which ensures that the synthesized model will work correctly without analyzing the synthesized model. Usually this synthesis is done as part of modeling without any explicit separate step, so most methods concentrate on classes rather than roles.


Rumbaugh J., Blaha M., Premerlani W., Eddy F. and Lorensen W. (1991) Object-Oriented Modeling and Design, Prentice Hall.

In this book Rumbaugh et al launched OMT, possibly the most popular of the OO methods, and a key foundation for the UML. As such this one of the most read descriptions of modeling with good descriptions of class diagrams and state diagrams. To be frank though, it is now too old and out of date.

[Rumbaugh insights]

Rumbaugh J. OMT Insights, SIGS Publications, 1996

This is one of the mass of books that SIGS is publishing based on columns in the various SIGS magazines. Usually I wouldn't pick out one of these books, but this one contains Rumbaugh's JOOP papers in early 1995 that define the late state of the OMT method. If you are using OMT, you should have these.


Selic, B., Gullekson, G. and Ward, P.T. Real-time object-oriented modeling, Wiley, New York, NY, 1994.

Most methods try to be suitable for all kinds of developments, which is really an unrealistic target. Here is an exception: a method that is designed to suit real time systems. Contains an interesting variant on class diagrams which emphasizes interfaces and protocols.

[Shlaer and Mellor data]

Shlaer S. and Mellor S.J. (1988) Object-Oriented Systems Analysis: Modeling the World in Data, Prentice Hall.

The first book to appear on OO design. Very rooted in relational data modeling, but this book is still a primary source for Shlaer/Mellor's method. It does not go into their use of translation however

[Shlaer and Mellor states]

Shlaer S. and Mellor S.J. (1991) Object Life Cycles: Modeling the World in States, Prentice Hall.

Extends Shlaer/Mellor's method to behavior.

[Shlaer and Lang]

Shlaer, S. and Lang, N. The Shlaer/Mellor method: the OOA96 report, Project Technology Inc, Berkeley, CA, 1996.

A report from project technology which describes the recent changes to the Shlaer/Mellor method.

[Shlaer and Mellor recursive design]

Shlaer S and Mellor SJ, Recursive Design of an Application Independent Architecture, IEEE Software, 14:1 (1997), p61-72

The best discussion so far of Shlaer/Mellor's recursive design approach and translation.

[Selic et al]

Selic B, Gullekson G, and Ward PT. Real Time Object-Oriented Modeling, Wiley New York, NY 1994

Most methods claim to be a jack of all trades, here is one that tries to be a master of one. Clearly focused on real-time issues with an emphasis on clearly defined interfaces. A valuable read for those who work in real-time.


Booch, G. and Rumbaugh, J. Unified Method for Object-Oriented Development, Rational Software Corporation, Version 0.8, 1995.
Booch, G. Rumbaugh, J. and Jacobson I. The Unified Modeling Language for Object-Oriented Development, Rational Software Corporation, Version 0.91 Addendum, 1996

The documents that describe the evolving state of the UML. Too brief to give any kind of tutorial in the techniques, but essential for those who want a preview of the next few years.

[Waldén and Nerson]

Waldén, K. and Nerson, J.-M. Seamless Object-Oriented Software Architecture: analysis and design of reliable systems, Prentice Hall, Hemel Hempstead, UK, 1995.

Analysis and design with an Eiffel flavor, so there is a good emphasis on design by contract. Also contains an interesting discussion on links to relational databases, and a detailed development process.


Wirfs-Brock R., Wilkerson B. and Wiener L. (1990) Designing Object-Oriented Software, Prentice Hall.

This book is really too old to be here, and yet it has aged really well. It has aged because of its emphasis on responsibilities and the basis of object design - even today a lesson that is often not fully understood. A good source of information about CRC cards.

[Wirfs-Brock sterotypes]

Wirfs-Brock, R. Adding to your conceptual toolkit: what's important about Responsibility Driven Design, Report on Object Analysis and Design, 1,2, (1994), pp. 39-41.

A key paper on the concept of stereotypes. Also important for discussing why controllers are a bad idea and should be replaced by coordinators.