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.
The paper that introduced CRC cards. Available on the web.
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.
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.
Patterns collected by several developers at Siemens. Includes several architectural patterns as well as design patterns.
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.
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.
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.
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.
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.
A comprehensive book on project management and object technology adoption, with a lot of case study information. Covers more ground than [Booch].
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.
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 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.
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.
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.
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.
Looks at how to get from models to code, reuse, and method engineering - a way of building custom methods for development organizations.
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.
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.
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.
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.
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.
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
Extends Shlaer/Mellor's method to behavior.
A report from project technology which describes the recent changes to the Shlaer/Mellor method.
The best discussion so far of Shlaer/Mellor's recursive design approach and translation.
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.
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.
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.
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.
A key paper on the concept of stereotypes. Also important for discussing why controllers are a bad idea and should be replaced by coordinators.