06 — Architecture Principles¶
Driving question: Which design decisions deserve architectural status?
Learning objectives¶
- Define architecture in terms of high-impact structural decisions.
- Connect architecture to quality attributes and constraints.
- Distinguish logical, process, deployment, and development views.
- Recognize architecture as evolving rather than frozen.
Architecture and significance¶
An architectural decision has unusually broad or costly consequences. Examples include:
- choosing the primary decomposition;
- establishing dependency rules;
- defining data ownership;
- selecting communication styles;
- deciding consistency and transaction boundaries;
- introducing a plugin or extension mechanism.
Quality-attribute scenarios¶
Instead of “the system must be scalable,” use a scenario:
Under a peak load of X requests/s, when service Y becomes unavailable, the system shall continue accepting operations Z with bounded latency and no loss of acknowledged data.
Patterns and tactics are then evaluated against concrete scenarios.
Design / research exercise¶
Write three quality-attribute scenarios for an existing system. For each, identify the architectural decisions that most strongly affect the response.
Suggested reading¶
- Bass, Clements, Kazman, Software Architecture in Practice.