In software engineering, "Coupling" refers to the degree of interdependence between software modules or components within a system. It measures how closely connected these modules are. Coupling is a fundamental concept in software design, impacting maintainability, scalability, and flexibility.
Low coupling, where modules are relatively independent, is generally desirable. This allows developers to modify one module without significantly affecting others, simplifying maintenance, updates, and the addition of new features. High coupling, on the other hand, indicates strong interconnections, where changes in one module can cascade through others, potentially leading to complications. Different types of coupling exist, including data coupling (ideal, with modules sharing only necessary data), stamp coupling, content coupling (the worst, where one module directly uses the code of another), common coupling, and external coupling. Striving for low coupling often correlates with high cohesion, where elements within a module work together for a single, well-defined purpose.