It is important to understand the ways in which software may be conjured into the world for the simple reason that software and information technologies more generally have immense social and economic impact. The genesis of such process has been called software architecture, and there have been various attempts over the years to define the term and corresponding activities precisely, specifically in relation to the elements, forms, rationale, and constraints involved (“What Is Your Definition of Software Architecture?,” 2017).
A well-defined understanding of software architecture is critical to its practice and perhaps the word choice alone has helped sustain a certain nature of software architectural practice akin to that undertaken for buildings. The definitional approach taken by Perry and Wolf (1992) is typical of the traditional genre, drawing parallels with the precursors of hardware and network architecture, and their forerunner, the architecture of the built environment.
Samuel Butler (1912) observed:
Analogy points in this direction, and though analogy is often misleading, it is the least misleading thing we have.
To what degree are we misled by the architectural analogy? And might we find a better analogy, that is one that’s less misleading?