Cohésion (informatique)
La cohésion est un principe de conception informatique définissant un degré d'accord entre les différents éléments d'un module. Selon Larman[1], un module cohérent a ses éléments étroitement liés et effectuant un nombre réduit d'opérations. Des modules peu cohérents sont généralement difficiles à comprendre, à réutiliser et à maintenir, et sont fragiles, puisqu'ils sont affectés par les modifications apportées aux autres modules.
La cohĂ©sion peut ĂȘtre une mĂ©trique mesurant l'application des principes d'encapsulation des donnĂ©es et de masquage de l'information. Elle mesure Ă©galement la cohĂ©sion sĂ©mantique des interfaces des modules et des classes.
Niveaux de cohésion
Selon Pressman[2], il existe sept niveaux de cohésion :
- Accidentel : dĂ©crivant le niveau le plus faible oĂč le lien entre les diffĂ©rentes mĂ©thodes est inexistant ou bien crĂ©Ă© sur la base d'un critĂšre futile.
- Logique : lorsque les méthodes sont reliées logiquement par un ou plusieurs critÚres communs.
- Temporel : lorsque les mĂ©thodes doivent ĂȘtre appelĂ©es au cours de la mĂȘme pĂ©riode de temps.
- ProcĂ©dural : lorsque les mĂ©thodes doivent ĂȘtre appelĂ©es dans un ordre spĂ©cifique.
- Communicationnel : lorsque les mĂ©thodes manipulent le mĂȘme ensemble spĂ©cifique de donnĂ©es.
- SĂ©quentiel : lorsque les mĂ©thodes qui manipulent le mĂȘme ensemble de donnĂ©es doivent ĂȘtre appelĂ©es dans un ordre spĂ©cifique.
- Fonctionnel : réalise le niveau le plus élevé lorsque la classe ou le module est dédié à une seule et unique tùche bien spécifique.
Le niveau accidentel est celui de plus faible cohésion, le niveau fonctionnel celui de plus forte cohésion ; une bonne architecture logicielle nécessite la plus forte cohésion possible.
Implémentation
En programmation objet, le respect des principes d'encapsulation des données permet d'obtenir le niveau de cohésion communicationnel. Le niveau séquentiel est atteint par observation du principe de masquage de l'information et l'utilisation de patrons de conception reconnus qui permettent de créer des interfaces dont l'ordre des appels est normalisé (vous en connaissez une, vous les connaissez toutes). Le niveau fonctionnel est ici un idéal, rappelant sans cesse que moins une interface contient de méthodes, plus elle est simple à utiliser.
Voir aussi
- La métrique d'indépendance fonctionnelle.
- Le principe d'encapsulation des données.
- Le principe de masquage de l'information.
- La métrique de couplage.
Notes et références
- Larman C., UML 2 et les design patterns. TroisiĂšme Ă©dition. Pearson Ăducation. Chapitre 16, 2005
- Pressman R. S., Software Engineering : A Practitioner's Approach, Third Edition. McGraw-Hill. Chapitre 10, 1992