**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 **** # More ## Source - [[Udacity Software Architecture Course]] ## Related - [[Highly Cohesive, Loosely Coupled]]