Skip to content

Layered Architecture

Organizing code into layers with strict dependency rules enables substitution, separation of concerns, and reasoning about parts in isolation

Tension Addressed

Simplicity vs. Capability

Recognizable As

Presentation/business/data separation; OSI network model; middleware stacks; layers where each only calls the layer below; clear import hierarchies between packages

Canonical Sources

Dijkstra, "THE Multiprogramming System" (1968); Buschmann et al., "Pattern-Oriented Software Architecture" (1996)

Transfers To

Network Protocols (OSI/TCP-IP layers), Operating Systems (kernel/user space), Hardware (abstraction layers), Bureaucracy (organizational levels)

Layers trade performance (indirection cost) for flexibility (substitution capability). Strict layering prevents bypass; relaxed layering allows shortcuts with discipline tradeoffs.