A-Z Popular Blog Coding Search »
Related Guides

What is Separation Of Concerns?

 , updated on December 30, 2016
Separation of concerns, or SoC, is a principle of software design that code be separated into layers and components that each have distinct functionality with as little overlap as possible. It is a fundamental principle that is widely observed.


Separation of concerns reduces complex problems into a series of manageable layers and components. It tends to reduce risks as changes are often isolated to a single component as opposed to intermingled throughout a large and complex code base.


Separation of concerns is implemented by encapsulating functionality in components that offer a well-defined interface. Components hide complexity such as user interfaces, business logic, data access and transaction execution from the rest of the code. When something changes, the interface often isn't impacted meaning that the change is isolated to a component.
Overview: Separation Of Concerns
TypeSoftware Design
DefinitionThe principle that code be structured into layers and components that each have distinct functionality with as little overlap as possible.
ValueReduces complexity
Makes change more manageable
Also Known AsSoC
Related ConceptsSoftware Design
Principle Of Least Astonishment


This is the complete list of articles we have written about coding.
Code Refactoring
Code Smell
Complexity Hiding
Deep Magic
Edge Case
Event Processing
Forward Compatibility
IT Artifact
IT Examples
Negative Code
Proof Of Work
Software Design
More ...
If you enjoyed this page, please consider bookmarking Simplicable.


A list of coding considerations and techniques.

Emergence vs Big Design Up Front

The difference between emergence and big-design-up-front.

Deep Magic

An overview of deep magic, a technology term.

Principle Of Least Astonishment

An overview of the Principle Of Least Astonishment.

Pull vs Push

The difference between pull and push technology.

Binary vs Hexadecimal

A comparison of binary and hexadecimal.

End-User Computing

An overview of end-user computing.

Library vs API

The difference between a library and API explained.

Code Reuse

The common types of code reuse.

Code Freeze

The common types of code freeze.


A few types of algorithms.

Algorithms vs Code

The difference between algorithms and code.

Edit Distance

An overview of edit distance.

Random Seed

The definition of random seed with examples.

Soft Computing

The definition of soft computing with examples.

Algorithmic Accountability

The definition of algorithmic accountability with examples.

Input Is Error

An overview of input is error.

IT Bias

An overview of IT biases with examples.
The most popular articles on Simplicable in the past day.

New Articles

Recent posts or updates on Simplicable.
Site Map