“Uncoupling” by Michael Nygard

Coupling is Everywhere

Kinds of Coupling

Coupling Example 1

C# service notifying, using SMTP, a MS Exchange service a report is ready (i.e. C# sends email, Exchange receives it and passes it along)

Coupling Example 2, part 1

Data importer fetches data from data store (a RDBMS) using SQL queries

Coupling Example 2, part 2

Data importer fetches data from a data store (still backed by RDBMS) but there’s a REST interface inbetween

Coupling Example 2, part 3

Data importer now subscribes to publications from the data store; data store uses a message broker
Data importer now caches between publications

Chains of Semantic Coupling

Long Arrows

A system digram describing an interface/rpc call/simple interaction between 2 components that’s actually a long chain of complex moving parts uncoupling_interface_was_chain.png