À retenir
- Rend la maintenance et les évolutions très difficiles et coûteuses.
- Empêche de réutiliser un module dans un autre projet.
- Complique les tests automatisés car on ne peut pas isoler un composant pour le tester seul.
Le couplage fort désigne une situation où deux composants d'un logiciel sont si étroitement liés qu'ils ne peuvent pas fonctionner l'un sans l'autre. C'est un peu comme si, dans une voiture, le moteur était soudé au châssis : changer une seule pièce obligerait à démonter ou modifier l'ensemble du véhicule.
Étymologie
Vient du verbe « coupler » (unir deux éléments) issu du latin copula (lien). En informatique, il s'agit d'une traduction directe de l'anglais tight coupling, utilisé depuis les débuts du génie logiciel pour mesurer l'interdépendance des modules.
Exemples d'usage
- Une application mobile qui plante systématiquement si le serveur de base de données change de version, car elle connaît trop de détails techniques du serveur.
- Une fonction de calcul qui utilise directement une variable globale partagée par tout le programme au lieu de recevoir ses données en paramètres.
Cas d'usage
Ce concept est central en architecture logicielle et en programmation orientée objet. On le retrouve souvent dans les systèmes anciens (legacy) ou les applications développées à la hâte, où la séparation des responsabilités n'a pas été respectée.
Bonnes pratiques
Pour éviter le couplage fort, il est conseillé d'utiliser des interfaces ou des classes abstraites. Cela permet à deux modules de communiquer via un contrat (un mode d'emploi) plutôt que de connaître les détails internes l'un de l'autre. L'injection de dépendances est également une technique clé pour réduire ce lien.
Synonymes
Antonymes
Conseil
Lorsque vous créez une fonction ou une classe, demandez-vous : « Est-ce que ce bloc de code pourrait fonctionner dans un autre projet sans que je doive copier-coller la moitié de mon application actuelle ? ». Si la réponse est non, cherchez à réduire le couplage.
Questions fréquentes
Le couplage fort est-il toujours une erreur de débutant ?
Pas forcément. Il peut arriver qu'on le choisisse délibérément pour des raisons de performances extrêmes ou pour des scripts très courts, mais il devient problématique dès que le projet grandit.
Comment savoir si mon code est fortement couplé ?
Si la modification d'une ligne de code dans une classe A provoque des erreurs de compilation dans dix autres classes, vous avez probablement un couplage fort.