An architectural principle that partitions a system into well-defined responsibility areas to improve maintainability, testability, and reuse.
Separation of Concerns (SoC) is an architectural principle that divides systems into well-defined responsibility areas to improve maintainability and testability. It encourages loose coupling and high cohesion, enabling parallel development and reuse. Applied via modules, layers and explicit interfaces, it also simplifies refactoring.
Degree of dependencies between modules; lower is better.
Measure of the internal relatedness within a module.
Counts refactorings applied to uphold SoC principles and their impact.
An online shop separates presentation, business logic and data access into distinct modules for easier maintenance.
Payment functions are implemented as an independent service to isolate responsibilities and scaling.
A backend provides APIs while different UIs (web, mobile) can be developed independently.
Start with analysis: identify responsibilities.
Define boundaries: establish modules, layers and interfaces.
Incrementally extract and test components.
Establish governance: ensure contracts, versioning and documentation.