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.
Related Concepts¶
- Separation of Concerns - Software Architecture