Module Coupling

Introduced in the 1970s as part of the structured design methodology, module coupling is a pioneering model for evaluating the levels of interconnectedness across components of software systems. The model consists of six levels (from highest to lowest): content, common, external, control, stamp, and data coupling.

Content Coupling (Pathological Coupling)

Content coupling occurs when a module’s internal contents–rather than its public interface–are used for integration. In other words, two modules are content coupled if they depend on each other’s implementation details.

The alternative name, pathological coupling, highlights the problematic nature of this dependency. It is both implicit and fragile.

Common Coupling

Common coupling occurs when modules communicate by reading from and writing to a shared memory space. This memory may contain data both relevant and irrelevant for integration. To function correctly, both modules must understand the structure of the shared memory, the information it holds, and the validation or business rules needed to verify the correctness of the data.

External Coupling

Like common coupling, external coupling also involves communication through a shared memory space. However, in this case, the shared memory is strictly limited to integration-relevant information. Despite this restriction, both modules are still aware of the rules necessary to ensure data correctness.

Control Coupling

Control coupling happens when one module influences the internal execution flow of another. This means that the controlled module does not fully encapsulate its implementation details—the controlling module is aware of its functionality and can alter it.

Stamp Coupling

Stamp-coupled modules communicate by exchanging information in the form of data structures. The data structures used for integration are part of the internal implementation and contain data that is not necessarily required for integration. In other words, stamp-coupled modules expose their implementation details through data structures.

Data Coupling

Data coupling represents the lowest level of module coupling. In this case, modules exchange only the specific data required for integration, ensuring maximum encapsulation.

Practical Application

Applying the module coupling model to modern software design presents several challenges. First, many of its levels describe issues that are either too broad or too granular. Second, its terminology is based on programming languages that are no longer widely used, such as Fortran, PL/I, and COBOL, making its concepts harder to apply in contemporary contexts.

Module Coupling and Integration Strength

The integration strength model is based on module coupling but adapts it for modern software engineering. It simplifies the module coupling levels into four core elements:

  1. Intrusive coupling corresponds to content coupling.
  2. Functional coupling describes modules that share knowledge of functional requirements. This aligns with common, external, and control coupling.
  3. Model coupling occurs when modules share an internal model of the business domain, similar to stamp coupling.
  4. Contract coupling refines data coupling by distinguishing between internal models and explicit integration contracts.

Integration strength also captures more fine-grained levels of interdependencies through degrees, such as transactional and temporal degrees of functional coupling.


Learn More