In [[computer programmingscience]], '''dependency''' or '''coupling''' refers tois the degree to which each program module relies on each other module. Coupling can be "high" (or "tight"), or "low" (or "loose"). Low coupling means that one module does not have to be concerned with the internal implementation of another module, and interacts with another module with a stable interface (see [[Information hiding]]). With low coupling, a change in one module will not require a change in the implementation of another module. Low coupling is a sign of a well structured [[computer system]]. However, in order to achieve maximum efficiency, a highly coupled system is probably needed. In modern computing systems, performance can often be traded for lower coupling; the gains in the [[software development]] process are greater than the value of the running performance gain.
The types of coupling, in order of lowest to highest coupling, are as follows: