Software → Software Design
Coupling
The degree of dependency between software components, modules, or services.
Motivation
Coupling describes how strongly one part of a system depends on another. Reducing harmful coupling solves the problem of changes spreading unexpectedly through a codebase.
Where it fits
Coupling belongs to software design and architecture. It is closely related to modularity, interfaces, dependency injection, and cohesion.
Mental model
A dependency is not always bad. The question is whether the dependency is stable, explicit, and appropriate for the boundary.
Common mistakes
- Trying to remove all coupling.
- Hiding coupling behind abstractions that do not simplify anything.
- Depending on concrete implementation details across boundaries.