The primary goal of the Handbook of Software Architecture is to fill this void in software engineering by codifying the architecture of a large collection of interesting software-intensive systems, presenting them in a manner that exposes their essential patterns and that permits comparisons across domains and architectural styles. Reflecting on his work on patterns, Christopher Alexander notes that he and his colleagues “made observations, looked to see what worked, studied it, tried to distill out the essentials, and wrote them down12.” This approach is at the core of all good science.
The second goal of this work is to study these architectural patterns in the context of the engineering forces that shaped them and then to expose a set of proven architectural patterns that may be used to construct new systems or to reason about legacy ones.
The third goal of this work is to feed my insatiable curiosity. Whenever I encounter an interesting or useful software-intensive system, I often ask myself, “how did they do that?” By exposing the inner beauty of these systems through a study of their architectural patterns, I hope to offer inspiration to developers who want to build upon the experience of other well-engineered systems.