Koppeling & cohesie
Twee centrale ontwerpprincipes: losse koppeling (modules hangen weinig van elkaar af) + hoge cohesie (een module doet één ding goed).
Goed ontwerp is allebei. Sterke koppeling betekent dat een wijziging in A B kapotmaakt. Lage cohesie betekent dat één klasse tien verschillende dingen doet. Dependency injection, ontwerp op basis van interfaces en microservices zijn pogingen om de koppeling te verminderen.