Focuses on the practice of designing objects as integral members of a community where each object has specific roles and responsibilities. This work includes the practices and techniques of Responsibility-Driven Design, and show how to apply them as you develop modern object-based applications. It is suitable for software designers and students.
A classic. Less interesting today than it would have been back when it was released. Nevertheless interesting in parts. As an insight into working methodology of an "OG OO developer" it's worth the tedious bits about UML and CRC cards. Feels like a book which will pay dividends unexpectedly in the future when considering a new problem.
Given this book is by a smalltalker, was disappointed that it was so "class"-oriented. I had hoped for more of a message-centric design focus.
Rebecca teaches here her method to design object-oriented systems. She focuses on roles, responsibilities and collaborations. We first identify candidates objects, possible roles, and likely responsibilities. Then, we assign these responsibilities to our objects or roles and we refine how these objects collaborate and how they control each other. While I completely agree with the importance of roles and responsibilities, I do not see how the method fits more modern agile practices such as test-driven development, where the design emerged from repeated refactoring of the code base.
Jeremy Miller introduced me to this amazingly perceptive take on software design. This is the place to learn about teh CRC card(Candidates, Responsibilities, Collaborators) which, however old-fashioned, remains a potent analytic tool. Not the easiest read but well worth wading through.
I bought this book at the Software Development Best Practices East Conference in Sept. 2007, after attending several of Rebecca Wirfs-Brock's excellent presentations. She is my new hero!