Dividing a system.
WHAT A CONCERN IS
One aspect of what the system does.
WHAT SEPARATION ACHIEVES
Each part can be understood, changed and tested independently.
WHERE TO DRAW BOUNDARIES
Along lines where change occurs together.
WHY
Parts that change together should be together; parts that change independently should be separate.
WHAT COUPLING IS
The degree to which parts depend on each other.
WHAT COHESION IS
The degree to which the contents of a part belong together.
WHAT TO AIM FOR
Low coupling, high cohesion.
WHAT HIGH COUPLING PRODUCES
Changes rippling across the system unpredictably.
WHAT LOW COHESION PRODUCES
Parts containing unrelated things, which nobody can name accurately.
WHAT A GOOD TEST IS
Can you describe what this part does in one sentence, without using "and"?
WHAT TO DEFINE FOR EACH BOUNDARY
A clear interface What crosses it What does not
WHAT TO ENFORCE
The boundaries, with tooling where possible.
WHY
Boundaries not enforced are eroded.