Couplage (informatique)
Le couplage est une métrique indiquant le niveau d'interaction entre deux ou plusieurs composants logiciels (fonctions, modules, objets ou applications). Deux composants sont dits couplés s'ils échangent de l'information. On parle de couplage fort ou couplage serré si les composants échangent beaucoup d'information. On parle de couplage faible, couplage léger ou couplage lâche si les composants échangent peu d'information et/ou de manière désynchronisée.
Niveaux de couplage
modifierSelon Pressman[1], il existe sept niveaux de couplage, du plus faible au plus fort :
- Sans couplage : les composants n'échangent pas d'information.
- Par données : les composants échangent de l'information par des méthodes utilisant des arguments (paramètres) de type simple (nombre, chaîne de caractères, tableau).
- Par paquet : les composants échangent de l'information par des méthodes utilisant des arguments de type composé (structure, classe).
- Par contrôle : les composants se passent ou modifient leur contrôle par changement d'un drapeau (verrou).
- Externe : les composants échangent de l'information par un moyen de communication externe (fichier, pipeline, lien de communication).
- Commun (global) : les composants échangent de l'information via un ensemble de données (variables) commun.
- Par contenu (interne) : les composants échangent de l'information en lisant et écrivant directement dans leurs espaces de données (variables) respectifs.
Une bonne architecture logicielle nécessite le couplage le plus faible possible.
Inconvénients d'un couplage fort
modifierUn couplage fort est à proscrire pour plusieurs raisons :
- Un couplage fort génère l'antipattern plat de spaghetti :
- On ne peut pas déterminer le qui, le quoi et le comment d’une modification de données.
- Un couplage fort implique nécessairement une faible indépendance fonctionnelle :
- Le composant logiciel est difficilement réutilisable,
- Le composant logiciel est difficilement testable.
- Si deux tâches accèdent, par couplage fort, à une ressource commune (ressource critique) et qu'elles s'exécutent en exclusion mutuelle, alors si une des tâches reste bloquée en section critique elle bloque automatiquement l'autre :
- Risque d'interblocage.
Les composants perdent leur autonomie. On peut difficilement remplacer un composant par un autre. Les structures fonctionnant avec du couplage fort sont donc peu souples et peu ouvertes.
Solution
modifierL'idée générale du couplage faible consiste à établir un protocole d'échange et à effectuer le moins d'hypothèses (ou à imposer le moins de contraintes) possible entre les composants. Ainsi, les composants interagissent dans un cadre défini.
Le couplage lâche véhicule l'idée de ne pas rendre critique une ressource de manière synchrone par exemple.
Une métaphore classique est celle de la prise électrique qui est un standard pour le branchement d'appareils électriques. Cela se traduit en informatique par le concept de plugin.
Applications
modifierArticles connexes
modifierNotes et références
modifier- (en) Pressman R. S., Software Engineering: A Practitioner's Approach, Third Edition. McGraw-Hill. Chapitre 10, 1992