Definition
- The architecture of a software system is the shape given to that system by those who build it. The form of that shape is in the division of that system into components, the arrangement of those components, and the ways in which those components communicate with each other.
Goals
- leave as many options open as possible, for as long as possible
- minimize lifetime cost of the system and maximize programmer productivity
- support life cycle of the system ()
- makes the system easy to understand, easy to develop, easy to maintain and easy to deploy
- low-level components depend on high-level components (Dependency Inversion Principle)
- reduces impact of change
- trivial but urgent changes at the lowest levels of the system have little to no impact on the higher, more important, levels
- reduces impact of change
- centered on so that can describe the structures supporting those use cases without committing to frameworks/tools/environments
Consists of
- policies
- business rules and procedures
- where the true value of the system lives
- details
Roles
Four dimensions (Richards & Ford)
Richards and Ford define software architecture along four interlocking dimensions:
- Architecture style — the named topology chosen as a starting point (e.g. layered, microservices, event-driven)
- Architectural characteristics — the “-ilities” the system must support (scalability, availability, maintainability, …)
- Logical components — the building blocks implementing the system’s behavior (domains, entities, workflows)
- Architecture decisions — the rules that constrain how the system is constructed; they form the constraints and direct development teams
Three laws of software architecture
These three universal truths cut across all architecture work (Richards & Ford, FSA 2E):
- Everything in software architecture is a trade-off. — corollary: if you think you’ve found something that isn’t a trade-off, you just haven’t identified it yet.
- Why is more important than how. — decisions made in context; the rationale (including trade-offs considered) matters more than the mechanism.
- Most architecture decisions aren’t binary but rather exist on a spectrum between extremes.
There are no right or wrong answers in architecture — only trade-offs.
Neal Ford
Additional literature
Resource
- 2026-06-16 ◦ Fundamentals of Software Architecture, 2E — Richards & Ford — Ch. 1–4: four-dimensional definition, three laws, eight architect expectations, modularity, architectural characteristics taxonomy, trade-offs and least-worst-architecture principle
- 2024-11-21 ◦ Architecture Antipatterns
- 2022-11-07 ◦ GitHub - mehdihadeli/awesome-software-architecture: A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles.
- Also check out awesome-architecture.com
- 2022-11-07 Road Movie Architecture
Books
- 2023-11-06 ◦ mhadidg/software-architecture-books: A comprehensive list of books on Software Architecture
Articles
- 2023-07-12 ◦ How To Design Software Architecture For Startups
- 2023-03-27 ◦ Architects, Anti-Patterns, and Organizational Fuckery – charity.wtf