Skip to content

Separation of Concerns

Different aspects of a problem should be addressed in distinct sections of code so that each section can be understood and modified independently

Tension Addressed

Simplicity vs. Capability

Recognizable As

Layered architectures; aspect separation (logging, security, business logic); MV* patterns; separation of policy from mechanism; clear boundaries between "what" and "how"

Canonical Sources

Dijkstra, "On the Role of Scientific Thought" (1974); Parnas, "On the Criteria for Decomposing Systems into Modules" (1972)

Transfers To

Writing (section organization), Government (separation of powers), Manufacturing (assembly lines), Hardware (OSI model)

The key insight is that human cognitive limits require decomposition - we cannot hold entire systems in mind. Concerns provide natural decomposition boundaries.