The extent to which two components depend on each other for successful execution.

Coupling is a thing that happens between system components. Unlike Cohesion, Coupling is inter-component.

Coupling is something that sometimes cannot be avoided, but when it can be avoided, it should be. High levels of coupling reduces a system’s Modularity, or at the very least makes module-level changes more complex due to inter-module dependencies.

Coupling should be managed via well-defined, well-managed, well-though-out, and well-documented interfaces.

In general, low-coupling is good.

Example of High-Coupling

  • Including presentation features inside a data source table

Examples of Low-Coupling

  • A source data table and a table for how a particular view should be formatted

Source