Getting Started
Think about the most beautiful building you've even seenperhaps the Taj Mahal or Notre Dame. Both structures exhibit a quality that's hard to name. In many ways, both structures are architecturally simple, yet they are also profoundly deep. In each, you can immediately recognize a consistent symmetry. Look harder, and you'll see details that are themselves beautiful and that work together to produce a beauty and functionality that's greater than the individual parts.Now think about the ugliest building you've even seenperhaps your local fast food outlet. You'll find a visual cacophony of architectural stylesa touch of modernism combined with a Georgian roof line, all decorated in a jarring fashion, with bold colors that assault the eye. Usually these buildings are pure manipulation, with narrow function and hardly any form.What's the difference between these two kinds of civil architecture? First, in buildings of quality, you'll find a harmony of design that's lacking in the others. Quality architecture uses a small set of architectural styles applied in a consistent fashion. For example, the Taj Mahal uses complex, symmetrical, and balanced geometric elements throughout. Second, in buildings of quality, you'll find common patterns that transcend the building's individual elements. For example, in Notre Dame, certain walls are load bearing and serve to support the cathedral's dome. Yet some of these same walls, along with other architectural details, serve as part of the building's system for diverting water and waste.So it is with software. A quality software-intensive system is not only functionally sound, but it also exhibits a harmony and balance of design that makes it resilient to change. This harmony and balance most often come from the fact that all well-structured object-oriented systems are full of patterns. Look at any quality object-oriented system and you'll see elements that work together in common ways to provide some cooperative behavior that's bigger than the sum of all its parts. In a well-structured system, many of the elements, in various combinations, will participate in different mechanisms.
The five views of an architecture are discussed in Chapter 2. Patterns and frameworks are discussed in Chapter 29 . |
Patterns and frameworks are discussed in Chapter 29 . |
Structural modeling is discussed in Parts 2 and 3; behavioral modeling is discussed in Parts 4 and 5; interactions are discussed in Chapter 16 . |
Use cases are discussed in Chapter 17; operations are discussed in Chapters 4 and 9 . |
Figure 28-1. Collaborations

Class diagrams are discussed in Chapter 8; interaction diagrams are discussed in Chapter 19 . |