Chapter 4. Designing Architectures

The preceding chapters have laid the foundation for software architecture. Chapter 1 presented motivations for focusing on architectures and the benefits that result. Chapter 2 positioned software architecture with respect to the major activities of software engineering. Chapter 3 took the informal notions of the first two chapters and set them on a firm basis.

So far, however, we have largely neglected the question of how architectures are created. Returning to the analogy of building architectures, simply having a set of power tools and a lofty vision for a skyscraper, for example, is not a fully adequate basis for creating a fifty-story building that successfully houses businesses, provides the base for a television broadcast tower, and which effectively integrates with a city's electrical, water, data, and wastewater infrastructures. The small matter of design stands between raw materials and tools and realization of the vision. The design of a skyscraper is the product of a cadre of architects and engineers who labor to meet all the goals for the building while simultaneously satisfying all the constraints placed upon it, and upon them.

But how are designs such as this created? How are engineers and architects taught to approach the problem?

For many serious engineers and building architects, design is viewed as something that cannot be taught as a method. Rather, students are apprenticed: One "sits by the feet of the master" and the hope is ...

Get Software Architecture: Foundations, Theory, and Practice now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.