Papers and Essays

2024


Discovering Your Software Umwelt

Rebecca Wirfs-Brock
Allen Wirfs-Brock
Jordan Wirfs-Brock
24 Oct 2024 Onward! ‘24 Proceedings
PDF ACM DOI 32 minutes read

Explores the concept of a software umwelt and how it is formed, shaped and tuned over time.

Abstract

We apply the biological-behavioral concept of an umwelt, which is how an organism perceives and acts within its environment, to the practice of software development. By writing narrative descriptions of our own software umwelts and iteratively discussing and analyzing them, we develop prompts that can elicit reflection on how and why we relate to software in the ways that we do.

Exploring the Generative Nature of Patterns

Lise Hvatum
Rebecca Wirfs-Brock
11 Apr 2024 PLoP '23 Proceedings
PDF ACM DOI 47 minutes read

Abstract

This is an about paper—one that we write to gain a better understanding, for ourselves and our readers alike, of the usefulness of a pattern language and what it takes for experience captured in pattern form to be of use to others. In it we look at what it means for individual patterns and collections to be generative and explore some differences between those that are highly generative and those that are not. We ask whether software design and software process patterns can be generative and, if so, what is their potential impact. Finally, we draw some conclusions on how these thoughts on pattern generativity could influence future writing of and support for generative patterns.

2022


Observations on Growing a Software Design Umwelt

Rebecca Wirfs-Brock
24 Oct 2022 PLoP '22 Proceedings (Revised 02 Nov 2023)
PDF ACM DOI 30 minutes read

It is through experience, practice, and reflection, that we deepen the connections between new-to-us patterns and our existing knowledge, and expand our design umwelt.

Abstract

Pattern authors ostensibly are experts on the topic their patterns address. Since most software developers don’t share those experts’ underlying design values, practices, and principles—let alone their design context—there’s a disconnect between what is said in pattern descriptions and that which is perceived and understood by pattern readers. As pattern readers, we will be better equipped to grasp the significance of these software patterns if we also gain insights into the design principles and values that they are based on and some reasons why they “work” the way they do. But it is through experience, practice, and reflection, that we deepen the connections between new-to-us patterns and our existing knowledge, and expand our design umwelt.

2020


Should we stop writing design patterns?

Rebecca Wirfs-Brock
16 Oct 2020 PLoP '20 Proceedings (Revised 11 Jan 2022)
PDF ACM DOI 37 minutes read

It is through experience, practice, and reflection, that we deepen the connections between new-to-us patterns and our existing knowledge, and expand our design umwelt.

Abstract

This essay reflects on my experiences of the past 15 years writing software design patterns and posits that if the patterns community wants to broadly increase pattern literacy, relevancy, and long-term impact, some things need to change. Those changes need to start with pattern writers—like me. Instead of indiscriminately writing ever more patterns, we should focus more on connecting, relating, and refreshing the abundance of existing impactful patterns. Changes also need to be made in how we the community of long-time pattern authors and advocates present and promote patterns to the rest of the world.

2019


Who Will Read My Patterns?—On Designing a Patterns Book for Target Readers

Rebecca Wirfs-Brock
Lise Hvatum
10 Oct 2019 PLoP '19 Proceedings (Revised 22 Oct 2021)
PDF ACM DOI 59 minutes read

Guidelines for turning a sets of patterns papers into a cohesive whole

Abstract

As patterns authors, we spend a lot of time writing. Usually our work is driven by what we want to share of experiences, working solutions, and ideas we are excited about. But how often do we think about the readers other than initially stating our intended audience? Who is going to consume our writing, and are we really putting in the effort to reach these readers in the best way possible?

This paper started because we are two authors who plan to make a book from a set of related patterns papers, and in doing so we really want to reach our target audience and provide a practical and useful piece of work. Our approach had two distinct investigation activities. One was to do an informal analysis of books about software processes and methods to gain a better understanding of characteristics and book design practices for this kind of book. The second was to use a combination of interviews and surveys to gather feedback on what readers are looking for when accessing information about software engineering. To better understand our potential readers and how to design our writing for their consumption, we created personas where we incorporated feedback from the reader survey into their personalities and preferences. Finally, we combined our information sources to create guidance for our future work of turning a set of patterns papers into a cohesive whole.

Elephants, Patterns, and Heuristics

Rebecca Wirfs-Brock
Christian Kohls
10 Oct 2019 PLoP '19 Proceedings (Revised 22 Oct 2021)
PDF ACM DOI 48 minutes read

Abstract

Capturing the wholeness of design solutions in order to effectively communicate them to others can be challenging. We posit that patterns are observable phenomena of design solutions. To represent these phenomena, a pattern author needs to generalize and omit information. Experienced designers are able to unfold the essence of the pattern and generate design solutions based on the information that they do find in a pattern description. Not surprisingly, their personal design heuristics play a central role in this. As they create a design solution, they also liberally apply their pre-existing design know-how and heuristics. But novice designers may have more difficulty. As this folding and unfolding of information and knowledge seems to be quite an abstract concept, we have chosen to make our point by discussing elephants. Like patterns, elephants are an observable phenomenon, a pattern in nature. Many different descriptions, representations, and accounts of elephants exist. Many people claim to know what elephants are. Yet they actually have little or limited knowledge of them. This analogy helps to understand how at the same time we both know and do not know what a thing is.

An Exploratory Study of Naturalistic Decision Making in Complex Software Architecture Environments

Ken Power
Rebecca Wirfs-Brock
02 Sep 2019 Proceedings of ECSA 2019
PDF Springer DOI

This paper investigates Naturalistic Decision Making in software architecture and studies architecture decisions in their environment and decision-making context. The research includes a case study of large technology organizations consisting of a survey, multiple focus groups, and participant observations.

Abstract

Architects always make decisions in some context. That context shifts and changes dynamically. Different decision-making strategies are appropriate in different contexts. Architecture decisions are at times made under conditions of time pressure, high stakes, uncertainty, and with too little information. At other times, decision-makers have sufficient time to reflect on the decision and consider alternatives. Understanding context is critical to choosing appropriate approaches to architecture decision making. Naturalistic Decision Making (NDM) explains how people make decisions under real-world conditions. This paper investigates NDM in software architecture and studies architecture decisions in their environment and decision-making context. The research approach includes a case study of large technology organizations consisting of a survey, multiple focus groups, and participant observation. Previous studies that touch on NDM in software architecture have mainly focused on decision-making processes or tools or developing decision models. This paper provides three contributions. First, we build on previous studies by other researchers to produce an in-depth exploration of NDM in the context of software architecture. We focus on Recognition-Primed Decision (RPD) making as an implementation of NDM. Second, we present an examination of the decisions made by experienced architects under conditions that can be considered naturalistic. Third, we provide examples and recommendations that help software architects determine when an NDM approach is appropriate for their context.

2018


Traces, tracks, trails, and paths—An Exploration of How We Approach Software Design

Rebecca Wirfs-Brock
26 Oct 2018 PLoP '18 Proceedings (Revised 17 Feb 2020)
PDF ACM DOI 54 minutes read

Patterns are just a small part of a much larger body of our design know how.

Abstract

Pattern authors intentionally create waypoints—points of interests along a design trail they hope others can traverse. While designers may read others’ design advice—be it patterns or stack overflow replies, the heuristics they’ve personally discovered are equally important. Patterns are just a small part of a much larger body of our design know how. Heuristics, like patterns, can be expressed at various levels. Some are small, simple acts. Others are bigger steps, taken at the beginning of a design journey. This essay explores ways we can grow as designers by becoming more aware of our heuristics, acknowledging the inherent uncertainty in the design process, and learning better ways to articulate and share our heuristics with each other.

Even more Patterns for the Magic Backlog

Rebecca Wirfs-Brock
Lise B. Hvatum
26 Oct 2018 PLoP'18 Proceedings (Revised 17 Feb 2020)
PDF ACM DOI 35 minutes read

This paper adds three new patterns (RULES, SHARED DEFINITION, REMODEL) to our collection of patterns to build and structure the backlog for an agile development effort.

Abstract

Agile development processes are driven from a product backlog of development items. This paper adds three more patterns to our Magic Backlog collection of patterns to build and structure the backlog for an agile development effort using the outcomes of requirements elicitation and analysis. RULES defines who should be allowed to do what in managing the backlog, SHARED DEFINITIONS deals with defining and consistently using clear criteria for core decisions across the backlog team(s), and REMODEL is about restructuring the overall backlog contents.

Understanding Architecture Decisions in Context

Ken Power
Rebecca Wirfs-Brock
15 Sep 2018 Proceedings of ECSA 2018
PDF Springer DOI

This paper looks at aspects of architecture decision-making and its impact, drawing from an industry-based case study. It also includes recommendations for organizations to improve how they make and manage architecture decisions

Abstract

Many organizations struggle with efficient architecture decision-making approaches. Often, the decision-making approaches are not articulated or understood. This problem is particularly evident in large, globally distributed organizations with multiple large products and systems. The significant architecture decisions of a system are a critical organization knowledge asset, as well as a determinant of success. However, the environment in which decisions get made, recorded, and followed-up on often confounds rather than helps articulation and execution of architecture decisions. This paper looks at aspects of architecture decision-making, drawing from an industry-based case study. The data represents findings from a qualitative case study involving a survey and three focus groups across multiple organizations in a global technology company. Architects in this organization are responsible for multiple products and systems, where individual products can include up to 50+ teams. The impact is not just on others in the system; architecture decisions also impact other decisions and other architects. The findings suggest recommendations for organizations to improve how they make and manage architecture decisions. In particular, this paper notes the relevance of group decision-making, decision scope, and social factors such as trust in effective architecture decision-making.

A Program Backlog Story with Patterns—Expanding the Magic Backlog Pattern Collection

Lise B. Hvatum
Rebecca Wirfs-Brock
02 Jul 2018 EoroPLoP '18 Proceedings
PDF ACM DOI 61 minutes read

Introduces three additional patterns for coordinating the work of projects which are part of a larger program.

Abstract

This paper extends our Magic Backlog Patterns collection with three additional patterns for managing the work of a program– or rather how to deal with coordinating the work of projects which are part of a larger program and where there may be dependencies and shared deployment. While teams within a program may work fairly independently, their work still needs to be coordinated to produce a product. These three patterns, which represent alternative strategies for structuring the backlog of work, are introduced through a story of the correspondence of a business analyst as her hypothetical program moves through different backlog management strategies.

2017


Are Software Patterns Simply a Handy Way to Package Design Heuristics?

Rebecca Wirfs-Brock
23 Oct 2017 PLoP '17 Proceedings
PDF ACM DOI 43 minutes read

Inspired by Billy Vaughn Koen’s philosophy of engineering heuristics, as explained in his Discussion of the Method: Conducting the Engineer’s Approach to Problem Solving, this essay explores some characteristics of patterns, forms connections between patterns and Vaughn Koen heuristics, and lays out some challenges (and frustrations) in using both skillfully.

Abstract

Billy Vaughn Koen, in Discussion of the Method: Conducting the Engineer’s Approach to Problem Solving, defines a heuristic as anything that provides a plausible direction in the solution of a problem, but in the final analysis is unjustified, incapable of justification, and potentially fallible. Software patterns might be considered nicely packaged heuristics in that they provide a context for the problem, and offer plausible solutions along with forces that the designer needs to consider when implementing a solution. Like any heuristic, software patterns come with no guarantees that they will solve the current problem at hand. A dedicated group of authors in the patterns community continues to write patterns, collections of patterns, and more ambitiously weave patterns into pattern languages that attempt to cover paths to solutions in a particular problem space. Are we deluding ourselves about the utility of these efforts? Or is there something important about both the form and use of patterns in the larger context of design heuristics that we need to understand?

Pattern Stories and Sequences for the Backlog—Applying the Magic Backlog Patterns

Lise B. Hvatum
Rebecca Wirfs-Brock
23 Oct 2017 PLoP '17 Proceedings
PDF ACM DOI 46 minutes read

How to apply patterns from our Magic Backlog collection through the use of storytelling.

Abstract

Agile development processes are driven from a backlog of development items. This paper looks at how to apply patterns from our Magic Backlog collection through the use of storytelling. We follow a project through various scenarios from the early days through significant growth into a mature setting and then, finally to a disruptive transition as the project becomes part of a program. Our goal is to focus on common project issues that we believe are experienced by many people involved in software development, and how the use of combinations of patterns, including our own as well as other patterns and practices, can help resolve or mitigate these problems.

2016


More Patterns for the Magic Backlog

Rebecca Wirfs-Brock
Lise B. Hvatum
24 Oct 2016 PLoP '16 Proceedings
PDF ACM DOI 39 minutes read

This paper adds three new patterns to our collection of patterns to build and structure the backlog for an agile development effort.

Abstract

Agile development processes are driven from a backlog of development items. This paper adds three new patterns to our collection of patterns to build and structure the backlog for an agile development effort using the outcomes of requirements elicitation and analysis. The Funnel adds new content to the backlog, the Pipeline prepares backlog contents for implementation, and Maintenance performs continued care of backlog contents. The need to formalize the backlog increases with the size of the project.

2015


Patterns to Build the Magic Backlog

Lise B. Hvatum
Rebecca Wirfs-Brock
15 Aug 2015 EuroPLoP '15 Proceedings
PDF ACM DOI 59 minutes read

Abstract

Agile development processes are driven from a backlog of development items. This paper describes patterns to build and structure the backlog for an agile development effort using the outcomes of requirements elicitation and analysis. The need to formalize the backlog increases with the size of the project.

2013


Twenty Years of Pattern Impact

Gregor Hohpe
Rebecca Wirfs-Brock
Joseph Yoder
Olaf Zimmermann
01 Nov 2013 IEEE Software
PDF IEEE DOI

This column celebrates 20 years of software patterns.

Abstract

This column celebrates the 20th year of software patterns. IEEE Software advisory board members teamed up with members of the Hillside Group, a nonprofit organization that promotes the use of patterns and pattern languages, to reflect on the state of the practice and impact of patterns.