Niwot Ridge Resources

A Source of Information for Mission Critical Systems, Management Processes, and Strategies

Object Oriented Topics

The subject of Object Oriented analysis and design is both broad and deep. The following readings only scratch the surface and do not represent any substantial survey of the subject. They represent turning point books, in which my understanding of the subject was moved to higher level.

  • Object–Oriented Methods: Principles and Practices 3rd Edition, Ian Graham, Addison Wesley, 2001. This book is the third edition of a very popular OO methods survey. The current edition addresses UML, middleware, eXtreme Programming (in a not so kind light by the way), requirements gathering, the SOMA approach to OOAD, Java. This is a definite "must have" for anyone working in the field of OO,

  • Designing Flexible Object–Oriented Systems with UML, Charles Richter, MacMillan Technical Publishing, 1999. This is a "summary" book that has several good chapters on architecture modeling. The problem with most UML books, and this book as well, is they assume that the OO aspects of UML modeling are well know, when in fact they are not. The value of the this book is the chapters on architecture modeling. This is an issue in UML for programmers. The high system architecture is usually now defined in any formal way. The result is nice UML for classes, maybe some sequence diagrams for the core components, but usually not much high level UML. This is a place to start.

  • Fundamentals of Object–Oriented Design in UML, Meiler Page–Jones, Addison Wesley, 2000. This is a "how to" book for designing OO systems that starts fro the beginning and ends with a serious set of guidelines. My experience with clients is they have some concept of OO that is usually flawed. The primary reason is they have come from a functional decomposition background build C/C++ or Visual Basic code using pseudo–OO techniques. They usually have not heard of CRC Cards, the Wirfs–Brock book, Patterns, or Frameworks. The first approach is to layout the functions that need to be performed, hook them up with method calls and call that an OO design. Between this book, the Peter Coad book and Bertrand Meyer's book, there is no reason not to understand how to build good OO systems. 

  • Java Design, Peter Coad, Yourdon Press, 1999. This is a wonderful hands on book from the author of Together/J. It describe strategies for building OO systems using Java. The use of inheritance is discouraged, while decomposition, interfaces and threads are encouraged.  It will take several readings to absorb all the details, but well worth the effort.

  • The CRC Card Book, David Bellin and Susan Suchman Simone, Addison Wesley, 1997. This book must be read by anyone claiming to be a OO designer. The CRC Card approach is not as popular as it once was (or ever was), since the OO development is now in the realm of rapid development and has lost some of the analysis and design processes. For anyone designing a OO based system, starting with a set of CRC cards will eliminate many of the redaction processes used later to clean up the mess.

  • Using CRC Cards, Nancy M. Wilkinson, Cambridge University Press, 1995. This is a foundation book, along with the Bellin book that must be read and understood before proceeding with any large scale OO development project.

  • Designing Object Oriented Systems , Rebecca Wirfs–Brock, Brian Wilkerson, and Lauren Wiener, Prentice Hall, 1990. If you're going to start designing OO systems, then start with this book. Although it may appear dated, the concepts are timeless. This is not a programming book, it is a design book – responsibility driven design. This is the problem with many of the approaches today, they start with a programming language, and skip the fundamental concept that design is not the same as implementation. 

  • Refactoring: Improving the Design of Existing Code, Martin Fowler, Addison Wesley, 1999. Refactoring is the concept of changing the software in such a way that it doesn't alter the external behavior of the code, yet improves the internal structure. The concept of refactoring is derived from Smalltalk, but has moved into other programming languages. As the cost of making changes to an existing system decreases  with the deployment of IDE's, refactoring becomes a viable option for many projects.

  • Essays on Object–Oriented Engineering: Volume 1, Edward V. Berard, Prentice Hall, 1993. Don't be put off by the publishing date of this book, it contains state–of–the–art issues and concepts in the OO world.

  • Object–Oriented Design Heuristics, Arthur J. Reil, Addison Wesley, 1996. Rule books for designing OO system are usually  too simple to be of any use. This book provides an in depth set of heuristics for the design and development of OO systems.

  • The CRC Card Book, David Belin and Susan Suchman Simone, Addison Wesley, 1997. This is basically a psychology book on how to extract a consensus from a diverse group of people. The Class Responsibility Collaboration (CRC) concept is powerful OO technique for discovering the logical components of a system. The CRC technique is not for everyone or for every OO problem. It must be practiced with care if usable results are to be expected. 

  • Object–Oriented Methods: A Foundation, James Martine and James Odell, Prentice Hall, 1995. This is a "foundation" book that should be read by managers as well as architects.

  • Object Data Management: Object–Oriented and Extended Relational Database Systems, R. G. G. Cattell, Addison Wesley, 1994. The author is from Sun and describes the ins and outs of object to relational database issues.

  • Use Cases Combines with Booch OMT UML Process and Products, Putnam Texel and Charles Williams, Prentice Hall, 1997. This is a how to book for build industrial strength OO based systems. Although the book uses Booch notation for some diagrams, UML diagrams can be found as well. An overall process is defined in detail. This process can be used directly for software development.

  • Object–Oriented Development: The Fusion Method, Derek Coleman,, Prentice Hall, 1994. This is a first book on Fusion, the HP OO method. 

  • Object–Oriented Development at Work: Fusion in the Real World, Ruth Malan, Prentice Hall, 1996. This is a continuation of the previous Fusion book.

  • Advanced Object–Oriented Analysis & Design using UML, James J. Odell, Sigs Reference Library, 1998. This book is a collection of papers on OO analysis and design. The UML part has been thrown in to capture the then emerging UML marketing blitz. The section titled "Object Aggregation," contains concepts vital to all good design process. Many of the concepts in this section are unknown to most OO designers. Another article titled "Events and Their Specification," was a significant contribution to my understanding of events and event processes. Again a subject not well understood by many OO designers.

  • Pitfalls of Object–Oriented Development, Bruce F. Webster, M&T Books, 1995. This is one of those anti-patterns books before anti–patterns were coined. It takes a very hard look at the hype and buzz–word approaches to OO development. This book must be read by every OO designer before they can claim to understand the risks of OO development.

  • Alexander, C. (1979). The Timeless Way of Building. New York: Oxford University Press.

  • Anti–Patterns: Refactoring Software, Architectures, and Projects in Crisis, Brown, W., Malveau, R, McCormick, H., Mowbray, T. (1998). New York: John Wiley & Sons.

  • Pattern Languages of Program Design, Coplien, J. O., & Schmidt, D.C. Editors, Addison-Wesley Publishing Company, 1995

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

  • Pattern Languages of Program Design 3, Martin, R., Riehle, D., & Buschmann, F. Addison Wesley Longman, Inc., 1998.

  • Pattern Languages of Program Design 4, Neil Harrison, Brian Foote and Hans Rohnert, Addison Wesley Longman, Inc., 1999.

The online version (not edited for the books) of this material can be found at

  • Patterns of Software Systems Failure and Success, Jones, C. Boston, Thomson International Press, 1996.

  • The Patterns Handbook: Techniques, Strategies, and Applications, .Rising, L.,  New York: SIGS Books/Cambridge University Press, 1998.

  • Patterns For Conducting Process Improvement, Appleton, B.  Proceedings of the 1997 Fourth Conference of Patterns Languages of Program Design, 1997. Read the online version.

For anyone interested in developing new process patterns, I hope that you find the resources listed below (in addition to the online process patterns resources and the process improvement and process-related resources) valuable to your efforts. I've included references to papers that deal with organizational patterns in general, instead of the more specific process patterns.

Ambler, S. W. (1998a). Process Patterns: Building Large-Scale Systems Using Object Technology. New York: SIGS Books/Cambridge University Press.

Ambler, S. W. (1998b). More Process Patterns: Delivering Large-Scale Systems Using Object Technology. New York: SIGS Books/Cambridge University Press.

A Generative Development-Process Pattern Language, Coplien, J.O. Pattern Languages of Program Design, Addison Wesley Longman, Inc., pp. 183-237, 1995.

EPISODES: A Pattern Language of Competitive Development, Cunningham, W., Pattern Languages of Program Design 2, Addison-Wesley Publishing Company., 1996, pp. 371-388.

Patterns for System Testing, DeLano, D.E. & Rising, L.,  Pattern Languages of Program Design 3, Addison Wesley Longman, Inc., 1998., pp. 503-525.

Life cycle and Refactoring Patterns That Support Evolution and Reuse, Foote, B. and Opdyke, W.F.,  Pattern Languages of Program Design, Addison Wesley Longman, Inc., 1995, pp. 239-257.

Organizational Patterns for Teams, Harrison, N.B., Pattern Languages of Program Design 2, Addison-Wesley Publishing Company.,1996,  pp. 345-352.

Patterns for Designing in Teams,  Weir, C., Pattern Languages of Program Design 3, Addison Wesley Longman, Inc., 1998, pp. 487-501.


Home | Search |Site Map | Copyright