“Enabling teams and individuals to specify, design and deliver software for a complex world.”
Responsibility-Driven Software Development

DesignRebecca's BlogContact UsTraining and ConsultingConsultingResources

Wirfs-Brock Associates Home Page > Resources

Design Books by Rebecca Wirfs-Brock

More about the Books Object Design: Roles, Responsibilities, and Collaborations, Rebecca Wirfs-Brock and Alan McKean, Addison-Wesley 2003, ISBN 0201379430. Check out our latest design book.
Designing Object-Oriented Software, Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener, Prentice Hall 1990, ISBN 0136298257, The classic book on Responsibility-Driven Design.

Wirfs-Brock Associates encourages use of these resources for personal enrichment. For commercial use or if you would like a presentation at your event, please contact Rebecca@Wirfs-Brock.com.

IEEE Software Design Column Starting in January 2006, Rebecca became the IEEE Software design columnist. Her last column was in the November/December 2009 issue.

"The Responsible Designer" in the November/December 2009 issue. ’s an appropriate amount of design flexibility. Download PDF (261k)

"Design for Test" in the September/October 2009 issue. Download PDF (204k)

"Principles in Practice" in the July/August 2009 issue. Download PDF (205k)

"Creating Sustainable Designs in the May/June 2009 issue. Download PDF (240k)

"Designing with an Agile Attitude" in the March/April 2009 issue. Download PDF (211k)

"Designing in the Future" in the January/February 2009 issue. Download PDF (291k)

"Designing Then And Now" in the November/December 2008 issue.Download PDF (350k)

"Enabling Change" in the September/October 2008 issue. Download PDF (218k)

"Up-front Design" in the July/August 2008 issue. Vol. 25, No. 4. When preparation matters upfront design can payoff. Upfront doesn't have to be a four letter word. Download PDF (306k)

"Design Strategy" in the May/June 2008 issue. Vol. 25, No. 3. Design matters, but not every design task deserves the same attention. Download PDF (218k)

"Connecting Design with Code" in the March/April 2008 issue. Vol. 25, No. 2. The best commentary shares what the designer was thinking. Download PDF (217k)

"Valuing Design Repair" in the January/February 2008 issue. Vol. 25, No. 1. Designing fixes to working software can be much harder than designing new stuff. Download PDF (198k)

"Does Beautiful Code Imply Beautiful Design?" in the November/December 2007 issue. Vol. 24, No. 6. Instead of arguing for truth or beauty, we should think more about making our software more habitable. Download PDF (784k)

"Designing Extensible Classes" in the September/October 2007 issue. Vol. 24, No. 5. A responsible class designer must strike a balance between openness, clarity, safety and ease of extension. Download PDF (154k)

"Giving Design Advice" in the July/August 2007 issue. Download PDF (304k)

"Handling Design Criticism" in the May/June 2007 issue. Vol. 24, No. 3. Effectively giving and receiving criticism are skills every designer needs to master. Download PDF (516k)

"Toward Design Simplicity" in the March/April 2007 issue. Vol. 24, No. 2. Although the perfectly beautiful design is impossible to achieve, a disciplined approach to removing clutter can lead to simplifications. Download PDF (94k)

"Driven to...Discovering Your Design Values" in the January/February 2007 issue. Vol. 24, No. 1. Download PDF (450k)

"Explaining Your Design" in the November/December 2006 issue. Vol. 23, No. 6. Download PDF (194k)

"Toward Exception Handling Best Practices and Patterns" in the September/October 2006 issue. Vol 23, No 5. This column presents guidelines and explores the state of exception handling patterns. Download PDF (288k)

"Designing For Recovery" in the July/August 2006 issue. Vol 23, No 4. This column explores the design of software recovery actions when failing fast isn't an option. Download PDF (478 k)

"Refreshing Patterns" in the May/June 2006 issue. Vol 23, No. 3. This column explores how a preferred form of a pattern can change with use and experience. Download PDF (146k)

"Characterizing Classes" in the March/April 2006 issue. Vol 23, No. 2. The column introduces several key properties of classes. Download PDF (180k)

"Looking for Powerful Abstractions" in the January/February 2006 issue. Vol 23, No.1. This column explains why identifying reasonable classes isn't as simple as underlining nouns or modeling "real world" concepts. Download PDF (177K)

Presentations by Rebecca Wirfs-Brock (Updated August 2015)

Exploiting Fast and Slow Thinking. (updated May 2015). This talk explores the two thinking systems identified by Daniel Kahneman in his book and and advises on we can exploit their strengths and counteract their weaknesses. Slides (8.7MB)Video

Why We Need Architects (And Architecture) on Agile Projects. (updated August 2013). Is there a place for software architecture in agile development? I think so. This talk explains how architecture can be done on agile projects and what an agile architect does. Slides

Maintaining Your Code Clint Eastwood Style. (May 2013). This keynote, presented at I.T.A.K.E 2013, explores options for revising, repairing, and extending good, bad, and ugly code. It takes a hard look at some good, bad, and ugly code written by myself and others. Slides

Agile Adoption: Does it have to Be All In or Fold? (2011) This talk, which presented several times shows how different teams and individuals (whose experience papers I've shepherded over the years) have adopted and adapted agile practices. Slides

Understanding Design Complexity (updated August 2010). This presentation introducess two tecchniques for untangling complex requirements, commonality-variabilty analys and hotspot cards, and presents practical design tactics for managing complexity. Download presentation PDF (5.3MB) Download notes PDF (2.4MB)

Lessons Learned from Architecture Reviews (updated May 2009). This presentation explores how to give and receive constructive advice as well as what it means to present, sell, and critique software architecture.
Download PDF (6.5MB)

A Brief Tour of Responsibility-Driven Design: This presentation (updated July 2006) introduces the popular design practice called Responsibility-Driven Design and several tools for thinking clearly about objects’ roles, interactions, and contractual relations. Download PDF ( MB)

Skills for the Agile Designer. This presentation (updated July 2007) introduces useful tools and techniques that designers can use to sharpen their seeing, shaping, and problem solving skills. Download PDF (2.0MB)

Designing Reliable Collaborations. This presentation covers reliable collaboration design from A to Z. Topics include: designing for trusted and untrusted collaborations; guidelines for using program level exceptions; exception recovery strategies; where should exceptions be handled; and how to streamline checking by identifying trusted collaboration regions. Download PDF (2.9 MB)

The Art of Writing Use Cases. This presentation covers essential techniques for writing clear, concise, and informative use cases. It also introduces three forms of use cases and explores their strengths and weaknesses. Download PDF (1.2MB)

What Every Java Developer Should Know about Roles, Responsibilities, and Collaborative Contracts: Presented at JAOO 2000, this talk introduces key Responsibility-Driven Design concepts and shows how they apply to Java programs. Download PDF (455K)

The Art of Telling Your Design Story. (updated July 2006) The best way to present your design isn’t likely to be the same way you came up with it. To be an effective communicator, you need to know what belongs together and what deserves special emphasis. Download PDF (1. MB)

Articles and Papers by Rebecca Wirfs-Brock


“Twenty Years of Patterns' Impact” in the Nov/Dec 2013 IEEE Software by Gregor Hohpe, Rebecca Wirfs-Brock, Joseph W. Yoder, and Olaf Zimmermann. This Impact column celebrates 20 years of software patterns and reflects on the state of the practice and impact of patterns. Download PDF

“Once Upon a Design” in the July/Aug 2003 STQE magazine. This article, drawing on material from our book Object Design, explains how to tell compelling stories about your software’s behavior and structure. Download PDF (116K)

“What It Really Takes to Handle Exceptional Conditions” presented at forUse 2002. A large part of software design involves accommodating situations that, although unlikely, still have to be dealt with. This paper draws on material from the book Object Design. Download PDF (405K)

“Adding to Your Conceptual Toolkit: What’s Important About Responsibility-Driven Design” in the Report on Object Analysis and Design, Volume 1, Number 2. The aspects of a design model you concentrate on as you develop it, and the order in which you do so, have a profound impact on your results. Download PDF (320K)

“How Designs Differ” in the Report on Object Analysis and Design", Volume 1, Number 4. Two Boeing engineers, Bob Sharble and Sam Cohen, created different designs for a brewery control application. This article explores key design choices and their impact: use of inheritance, patterns of collaboration, and the predominance of specific role stereotypes. Download PDF (228K)

“Characterizing Your Objects” in the February 1992 Smalltalk Report, Volume 2, Number 5. This is the original article that introduced role stereotypes. Download PDF (84K)

“Characterizing Your Application's Control Style” in the Sept/Oct 1994 Report on Object Analysis and Design, Volume 1, Number 3. This article discusses several different application control styles. Download PDF (136K)

“Determining Object Roles and Responsibilities” from the Smalltalk Report. The task of the designer is to assign each object an appropriate role. Each role is constrained to fit within the existing object model, but a lot of discretion is still involved. Download PDF (96K)

“Implementing Design Responsibilities” A designer’s job isn’t over until coding’s done. Here’s some advice on how to transform a design into good code. Download PDF (144K)

“How Can a Subsystem Be Both a Package and a Classifier?” by Joaquin Miller and Rebecca Wirfs-Brock. Presented at UML ’99. UML specifies that a subsystem is both a package and a classifier. This paper explores what that could possibly mean and explains why that was the right choice. Download PDF (115 K)

“Object Visibility: Making the Necessary Connections” from the October 1991 issue of The Smalltalk Report, Volume 2, Number 2. An early article describing how to turn an imprecise list of collaborations into a more rigorous design description, and finally into Smalltalk code. Download PDF (120K)

“Responsibility-Driven Design” from the Smalltalk Report. An early article describing Responsibility-Driven Design concepts. Download PDF (128K)

Agile Practices and Agile Quality

Patterns to Build the Magic Backlog, by Lise Hvatum and Rebecca Wirfs-Brock, presented at EuroPLoP 2015. Patterns for building and structuring the backlog for an agile development effort using the outcomes of requirements elicitation and analysis. These patterns are targetted for complex systems with hundreds of detailed requirements and an electronic tool is used to manage the backlog over an extended period of time. Download PDF (3MB)

QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality, by Josph Yoder, Rebecca Wirfs-Brock and Ademar Aquilar, presented at AsianPLoP 2014. The first in a seriew of pattern papers about integrating system quality concerns and quality assurance into your agile process. Download PDF (1MB)

QA to AQ Part 2: Shifting from Quality Assurance to Agile Quality "Measuring and Monitoring Quality," by Josph Yoder and Rebecca Wirfs-Brock, presented at PLoP 2014. The second in a seriew of pattern papers about integrating system quality concerns and quality assurance into your agile process. Download PDF (960 K)

QA to AQ Part 3 :Shifting from Quality Assurance to Agile Quality "Tearing Down the Walls," by Josph Yoder, Rebecca Wirfs-Brock,and Hironori Washizaki, presented at SugarLoafPLoP 2014. The third in a seriew of pattern papers about integrating system quality concerns and quality assurance into your agile process. Download PDF (438 K)


Patterns for Sustaining Architecture, by Rebecca Wirfs-Brock and Joseph Yoder, presented at PLoP 2012. Two patterns for preserving software architecture integrity as complex systemss evolve. Download PDF (1.2MB)

Adaptive Object Model Patterns

Rendering Patterns for Adaptive Object-Models, presented at PLoP 2007, by Leon Welicki, Joseph Yoder, and Rebecca Wirfs-Brock.Three patterns for visually rendering domain entities in an Adaptive Object-Model system. Download PDF (2.5MB)

The Dynamic Factory Pattern, presented at PLoP 2008, by Leon Welicki, Joseph Yoder, and Rebecca Wirfs-Brock. A pattern describing how to make a factory for Adaptive Object-Model entities usingmetadata descriptions. Download PDF (86K)

Adaptive Object-Model Builder, presented at PLoP 2009, by Leon Welicki, Joseph Yoder, and Rebecca Wirfs-Brock. A variant of the Builder Pattern suitable for constructing Adaptive Object-Model entities. Download PDF (2.1MB)

Adaptive Object-Model Evolution Patterns, presented at SugarLoaf PLoP 2010, by Atzmon Hen-Tov, Lena Nikolaev, Lior Schachter, Rebecca Wirfs-Brock, and Joseph Yoder. Two patterns useful for minimizing the impacts of evolving Adaptive Object-Model domain objects and behaviors. Download PDF (1.1MB)

Dynamic Model Evolution, presented at PLoP 2010, by Atzmon Hen-Tov, David Lorenz, Lena Nikolaev, Lior Schachter, Rebecca Wirfs-Brock, and Joseph Yoder. A pattern for dynamically evolving an Adaptive Object-Mod while keeping a production system running. Download PDF (1.5MB)

Dynamic Hook Points, presented at AsianPLoP 2011, by Eli Acherkan, Atzmon Hen-Tov, David Lorenz, Lior Schachter, Rebecca Wirfs-Brock, and Joseph Yoder. A pattern for adapting behavior at well-known variation points in an Adaptive Object-Model system. Download PDF (856K)

Problem Frames

Problem Frame Patterns, presented at PLoP 2006, by Rebecca Wirfs-Brock, Paul Taylor and James Noble. A gentle introduction to problem frames, written as patterns, for analysts and designers. Download PDF (615K)

Introducing Problem Frames. This presentation (updated July 2006) introduces Jackson's five problem frame patterns and illustrates the frames found in an email application. Download PDF (3.1MB)

Use Case Articles

“Designing Scenarios” from the Nov/Dec 1993 issue of The Smalltalk Report. Vol.3, No. 3. First of a two-part article that originally introduced the conversational form of use cases and describes how use cases can be used to capture user-system dialogs. Download PDF (132K)

“The Art of Meaningful Conversations” from the February 1994 issue of The Smalltalk Report. Vol. 3, No. 5. The second of a two-part series that introduced the conversational form of Use Cases. Download PDF (126K)

Software Development Articles

“The Phases of an Object-Oriented Application” from the Feb 1992 issue of The Smalltalk Report, Volume 1, Number 5. Nope, this isn’t a waterfall model, but an early discussion of the value of upfront exploratory design and refactoring for reuse once things work. Download PDF (120K)

“Becoming More Predictable” from the Smalltalk Report. An ‘90s article on some keys to successfully develop incremental, iterative: open honest communications, teamwork, and anticipating and preparing for change. Download PDF (116K)

Site Map

Entire Site © Wirfs-Brock Associates 2005 - 2014.
Site Design by Phil Brock/Red Hills Graphics. Click here to contact the Webmaster.