Accoppiamento
Grado di dipendenza tra moduli o componenti. Accoppiamento forte = una modifica a un modulo ne richiede molte altrove. Accoppiamento debole = le modifiche restano localizzate. Obiettivo: basso accoppiamento, alta coesione.
Principio classico dell'ingegneria del software, risalente a Larry Constantine (1968). Tipi: accoppiamento per dati (si passano dati), per struttura (si condivide una struttura), per controllo (flusso di controllo), per contenuto (accesso diretto alla memoria, il peggiore). L'accoppiamento debole si ottiene con interfacce, dependency injection, architetture a eventi e scambio di messaggi. Legge di Hyrum: ogni comportamento osservabile del sistema diventerà una dipendenza, quindi l'accoppiamento è maggiore di quanto si pensi.