Software Architecture, Design and Modeling

I continue to explore the art and practice of designing complex software systems. Here is where you’ll find musings, essays, and presentations about software design.

Some folks make a sharp distinction between software design and architecture. They believe that software design focuses on figuring out details of individual software components while software architecture focuses on the overall structure of a system. Grady Booch remarks that, “Architecture is design, but not all design is architecture.” Consequently, architecture decisions are those significant ones, the ones that are harder to reverse. Some folks use the word model rather than design. Rather than get caught up in endless debate about whether we're talking design or architecture or modeling, you'll find here topics related to what I consider the more challenging aspects of software arhcitecture/design/modeling.


Understanding Architecture Decisions in Context

Ken Power
Rebecca Wirfs-Brock
15 Sep 2018 Proceedings of ECSA 2018
paper 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.


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)
paper 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.


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

Ken Power
Rebecca Wirfs-Brock
02 Sep 2019 Proceedings of ECSA 2019
paper 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.


Design and Reality

Mathias Verraes
Rebecca Wirfs-Brock
13 Sep 2021
9 minutes read


Models and Metaphors

Rebecca Wirfs-Brock
Mathias Verraes
21 Dec 2021
15 minutes read


Observations on Growing a Software Design Umwelt

Rebecca Wirfs-Brock
24 Oct 2022 PLoP '22 Proceedings (Revised 02 Nov 2023)
paper 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.