En la programació d'ordinadors, la cohesió és el grau en què els elements d'un mòdul pertanyen junts. expressada al codi font d'un mòdul. Els mètodes de mesura de cohesió poden basar-se en mesures qualitatives o qualitatives que avaluen el codi font. La cohesió és una mesura de tipus ordinal, i acabem dient que un mòdul està "altament cohesionat" o "poc cohesionat".
Hom prefereix els mòduls altament cohesionats, ja que l'alta cohesió s'associa amb bondats del programari tals com: robustesa, fiabilitat, reusabilitat i intel·ligibilitat, mentre que la baixa cohesió s'associa amb dificultats de manteniment, dificultat per a provar, dificultat per a reutilitzar i, fins i tot, dificultats per a entendre el codi.
La cohesió s'associa a l'acoblament, un concepte diferent, tot i que són característiques inversament relacionades: a més acoblament, menys cohesió, i viceversa.
Les mesures de cohesió i acoblament foren concebudes per Larry Constantine[1]
Alta cohesió
Aplicada a la programació orientada a objectes, si els mètodes oferts per una classe tendeixen a ser similars en molts aspectes, hom diu que la classe està altament cohesionada. En un sistema altament cohesionat, la intel·ligibilitat del codi i la reusabilitat es veu augmentada, mentre que la complexitat roman assequible.
La cohesió es veu disminuïda quan:
- Les funcionalitats d'una classe, accedides a través dels seus mètodes, tenen poc en comú.
- Els mètodes d'una classe realitzen activitats molt diverses, sovint fent servir conjunts de dades heterogenis poc específics o poc relacionats entre ells.
Les conseqüències d'una cohesió pobra són:
- Dificultat augmentada en la comprensió del codi
- Dificultat augmentada per mantenir el sistema, donat que les modificacions en un mòdul impliquen canvis en els mòduls relacionats.
- Dificultat augmentada per reusar el mòdul donat que la majoria d'aplicacions no necessitaran la resta de funcionalitats proveïdes pel mòdul.
Tipus de cohesió
- Cohesió coincident (la menys desitjable)
- Les tasques del mòdul resolen problemes diferents, no tenen dades en comú, no s'executen a la vegada i no tenen cap relació lògica entre elles. Comparteixen mòdul perquè hom no sabia on ficar-les.
- Cohesió lògica
- Les tasques del mòdul resolen problemes diferents, no tenen dades en comú, no s'executen a la vegada però tenen alguna relació lògica. Per exemple, un mòdul de sortida de dades d'un programa per pantalla per canals diferents (pantalla, impressora, fitxers de formats diferents, etc.).
- Cohesió temporal
- Les tasques del mòdul resolen problemes diferents i no tenen dades en comú, però s'executen a la vegada.
- Cohesió procedimental
- Les tasques del mòdul resolen problemes diferents i no tenen dades en comú, però s'executen a la vegada i en un ordre determinat.
- Cohesió comunicativa
- Les tasques del mòdul resolen problemes diferents però tenen en comú les dades que processen.
- Cohesió seqüencial
- Les tasques del mòdul resolen problemes diferents però tenen en comú les dades que processen, i és important l'ordre que ho fan.
- Cohesió funcional (la més desitjable)
- Les tasques del mòdul tenen en comú un únic problema.
Referències
- ↑ W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974.
Viccionari