Couplage et cohésion

J’essaie de réduire les concepts de couplage et de cohésion à une définition concise. Quelqu’un peut-il me donner une explication courte et compréhensible (plus courte que les définitions sur Wikipedia ici et ici )? Comment interagissent-ils?

Merci.

Quelqu’un at-il un bon exemple?

Couplage

  • Loose: Vous et le gars au dépanneur. Vous communiquez à travers un protocole bien défini pour atteindre vos objectives respectifs – vous payez de l’argent, il vous laisse sortir avec le sac de Cheetos. Chacun de vous peut être remplacé sans perturber le système.

  • Tight: Vous et votre femme.

Cohésion

  • Low: Le dépanneur. Vous allez là-bas pour tout, du gaz au lait aux banques ATM. Les produits et services ont peu de choses en commun, et la commodité de les avoir tous au même endroit peut ne pas suffire à compenser l’augmentation des coûts qui en résulte et à réduire la qualité.

  • High: Le magasin de fromages. Ils vendent du fromage. Rien d’autre. Je ne peux pas les battre quand il s’agit de fromage.

Coupling (couplage) – Mesure de la dépendance d’un module (package, classe, méthode) par rapport à d’autres modules. Il est souhaitable de réduire le couplage ou de réduire la quantité qu’un module donné dépend des autres modules d’un système.

Cohésion – Une mesure de la proximité des membres (classes, méthodes, fonctionnalités au sein d’une méthode) d’un module avec les autres membres du même module. Il est souhaitable d’augmenter la cohésion car cela indique qu’un module a une tâche très spécifique et ne fait que cette tâche.

L’une des meilleures discussions complètes sur les concepts de conception de logiciels liés à l’OO (y compris ceux-ci) est la construction de logiciels orientés object de Bertrand Meyer.

En ce qui concerne le «couplage», il donne sa règle de couplage faible / petites interfaces comme suit:

Si deux modules communiquent, ils doivent échanger le moins d’informations possible.

Les documents de Meyer relatifs à la cohésion ne se résument pas à une simple affirmation, mais je pense que cette phrase du Code Complete de Steve McConnell résume bien:

La cohésion se réfère à la proximité de toutes les routines d’une classe ou de tout le code dans une routine.

Le couplage signifie la dépendance vis-à-vis des autres. La cohésion signifie être complète avec elle-même.

Un moyen rapide et facile de mesurer le couplage consiste à mesurer vos instructions d’ import (ou similaires).

“Le couplage est une mesure des interdépendances entre les modules, qui devrait être minimisée” “La cohésion, une qualité à maximiser, se concentre sur les relations entre les activités réalisées par chaque module.”

cité de cet article: http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf