Coupling¶
The degree to which one module depends on internal details of another determines how changes propagate through the system
Tension Addressed¶
Coupling vs. Flexibility
Recognizable As¶
Import/dependency graphs; shared data structures; temporal dependencies (A must run before B); knowledge of internal state; ripple effects when changing one component
Canonical Sources¶
Stevens, Myers, Constantine, "Structured Design" (1974); Yourdon & Constantine, "Structured Design" (1979)
Transfers To¶
Organizational Design (Conway's Law), Distributed Systems (service boundaries), Testing (test isolation), Database Design (table relationships)
Sub-concepts: - Content coupling: Worst - module modifies another's internals directly - Common coupling: Sharing global data - Control coupling: Passing control flags that change behavior - Stamp coupling: Passing whole structures when only part is needed - Data coupling: Best - passing only necessary data through parameters