Show in graph

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.