Wirfs-Brock Associates Home Page > Resources
Classic Books on Responsibility-Driven Software Design by Rebecca Wirfs-Brock
Object Design: Roles, Responsibilities, and Collaborations, Rebecca Wirfs-Brock and Alan McKean, Addison-Wesley 2003, ISBN 0201379430. Download a free copy
Designing Object-Oriented Software, Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener, Prentice Hall 1990, ISBN 0136298257. View using the Internet Archive library
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. Explores what is 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 (478k)
"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 February 2019)
Sense of Place within the Virtuous Circle of Architecture Decision-Making. This one-day tutorial will be presented at ICSA 2019, March, 25 in Hamburg, Germany. Practical techniques to understand the current state of an architecture in order to make decisions about its future evolution Description
Cultivating Your Design Heuristics. This keynote, presented at ExploreDDD 2017, challenges designers to grow by putting their own spin on the design advice of others and to keep refining their state of the art. Slides (30MB) Video
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 object roles, interactions, and contractual relations. Download PDF (2MB)
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 (1MB)
Articles and Papers by Rebecca Wirfs-Brock
Design
Observations on growing a software design umwelt, presented at PLoP 2022 by Rebecca Wirfs-Brock. A personal essay reflecting on growing design skill, breaking out of design habits and understanding design patterns. Download PDF (4.7MB) Should we stop writing design patterns?, presented at PLoP 2020 by Rebecca Wirfs-Brock. A personal essay reflecting on my 15 years of pattern writing and speculating on how we could better relate and communicate software patterns to have more impact. Download PDF (955K) Agile Practices and Agile Quality Who will read my patterns?, by Rebecca Wirfs-Brock and Lise Hvatum, presented at PLoP 2019. This paper explored the requirements for various readers and users of our backlog patterns. We surveyed other authors and potential patterns users, created personas, and analyzed the structure and organization of other impactful books. Download PDF (3.7 MB) Architecture An Exploratory Study of Naturalistic Decision Making in Complex Software Architecture Environments, by Ken Power and Rebecca Wirfs-Brock, presented at ECSA 2019. An initial study of how Naturalistic Decision Making (NDM), and RPD in particular, applies to decision-making in large and complex environments. Download PDF (285K) 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) 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) 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) 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)
Elephants, Patterns, and Heuristics, presented at PLoP 2019 by Rebecca Wirfs-Brock and Christian Kohls. An essay exploring how at the same time we can both know and not know some thing and the limits to what we can communicate about that thing. Download PDF (624K)
Traces, tracks, trails, and paths: An Exploration into How We Approach Software Design, presented at PLoP 2018. An essay exploring the nature of design uncertainty and how we can cultivate our design heuristics. Download PDF (2.4MB)
Are Software Patterns Simply a Handy Way to Package Design Heuristics?, presented at PLoP 2017. An essay exploring the relationship between software design patterns and design heuristics. Download PDF (1.3MB)
"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" Your design 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 (115K)
"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)
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 agile development effort using the outcomes of requirements elicitation and analysis. These patterns are targeted 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 (2.85MB)
More Patterns for the Magic Backlog, by Rebecca Wirfs-Brock and Lise Hvatum, presented at PLoP 2016. Three additional patterns for growing and maintaining the backlog: the Funnel, the Pipeline, and Maintenance. Download PDF (1MB)
Pattern Stories and Sequences for the Backlog: Applying the Magic Backlog Patterns, by Lise Hvatum and Rebecca Wirfs-Brock, presented at PLoP 2017. A story how a project grew and its backlog needs changed. Download PDF (4.4MB)
A Program Backlog Story with Patterns: Expanding the Magic Backlog Pattern Collection by Lise Hvatum and Rebecca Wirfs-Brock, presented at EuroPLoP 2018. Three patterns for structuring a program backlog. Download PDF (1.1 MB)
Even more Patterns for the Magic Backlog by Rebecca Wirfs-Brock and Lise Hvatum, presented at PLoP 2018. Three more patterns for building and structuring the backlog: Shared Definitions, Rules, and Remodel. Download PDF (1.20 MB)
QA to AQ: Patterns about transitioning from Quality Assurance to Agile Quality, by Joseph Yoder, Rebecca Wirfs-Brock, and Ademar Aquilar, presented at AsianPLoP 2014. The first in a series 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 Joseph Yoder and Rebecca Wirfs-Brock, presented at PLoP 2014. The second in a series of pattern papers about integrating system quality concerns and quality assurance into your agile process. Download PDF (960K)
QA to AQ Part 3: Shifting from Quality Assurance to Agile Quality "Tearing Down the Walls," by Joseph Yoder, Rebecca Wirfs-Brock, and Hironori Washizaki, presented at SugarLoafPLoP 2014. The third in a series of pattern papers about integrating system quality concerns and quality assurance into your agile process. Download PDF (438K)
QA to AQ Part 4: Shifting from Quality Assurance to Agile Quality "Prioritizing Qualities and Making them Visible," by Joseph Yoder, Rebecca Wirfs-Brock, and Hironori Washizaki, presented at PLoP 2015. The fourth in a series of pattern papers about integrating system quality concerns and quality assurance into your agile process. Download PDF(665K)
QA to AQ Part 5: Being Agile At Quality "Growing Quality Awareness and Expertise," by Joseph Yoder, Rebecca Wirfs-Brock, and Hironori Washizaki, presented at AsianPLoP 2016. The fifth in our agile quality series with patterns on Quality Checklists, Product Quality Champion and Shadow the Quality Expert. Download PDF(2MB)
QA to AQ Part 6: Being Agile At Quality "Enabling and Infusing Quality," by Joseph Yoder, Rebecca Wirfs-Brock, and Hironori Washizaki, presented at PLoP 2016. The sixth in our agile quality series with patterns on System Quality Specialist, Spread the Quality Workload, and Automate as You Go. Download PDF(677 K)
Understanding Architecture Decisions in Context: An industry case study of architects' decision-making context, by Ken Power and Rebecca Wirfs-Brock, presented at ECSA 2018. A qualitative case study involving a survey and three focus groups across multiple organizations in a global technology company. Download PDF (235K)
Patterns to Develop and Evolve Architecture During an Agile Software Project, by Rebecca Wirfs-Brock, Eduardo Guerra, and Joseph Yoder, presented at PLoP 2015. Four patterns for architectureal design on agile project. Download PDF (1.4MB)
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)
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 using metadata 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)
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)
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)
Becoming More Predictable from the Smalltalk Report. A 90s article on some keys to successfully develop incremental, iterative: open honest communications, teamwork, and anticipating and preparing for change. Download PDF (116K)