Cheat sheetFND-01

What Software Architecture Is

Foundations / What Software Architecture Is

Architecture is not the diagram. It is the union of four dimensions — structure, characteristics, decisions, principles — and the hard-to-change decisions among them.

structure
StructureThe architecture style(s) in use — layered, microservices, event-driven. The boxes-and-lines dimension, but only one of four.
characteristics
CharacteristicsThe -ilities: success criteria orthogonal to functionality, e.g. scalability, availability, fault tolerance.
decisions
DecisionsHard, binding rules that constrain construction, e.g. 'presentation may not touch persistence directly'.
principles
PrinciplesGuidelines that can be overridden with justification, e.g. 'prefer async messaging between services'.

When someone hands you a 'redesign', split it across the four dimensions before drawing anything. If three of them are blank, the redesign is incomplete.

Decision vs principle'All inter-service calls use mTLS' is a decision (unbreakable). 'Prefer async messaging' is a principle (bendable).
Architecture vs designSplitting checkout into its own service is architecture (expensive to reverse); renaming a class is design (cheap).
Architecture = Structure + Characteristics + Decisions + Principles
Architecture ~= the decisions that are hard to change
Design ~= the decisions that are cheap to change
definitionfour-dimensionsdecisionsprinciplescharacteristics
review in 6d