Domanda

Sto cercando di ridurre i concetti di accoppiamento e coesione ad una definizione concisa.Qualcuno può darmi una spiegazione breve e comprensibile (più breve delle definizioni su Wikipedia Qui E Qui)?Come interagiscono?

Grazie.

Qualcuno ha un buon esempio, breve?

È stato utile?

Soluzione

Accoppiamento

  • Sciolto:Tu e il ragazzo del minimarket.Comunichi attraverso un protocollo ben definito per raggiungere i tuoi rispettivi obiettivi: paghi soldi, lui ti lascia uscire con il sacchetto di Cheetos.Ciascuno di voi può essere sostituito senza interrompere il sistema.

  • Stretto:Tu e tua moglie.

Coesione

  • Basso:Il minimarket.Ci vai per qualsiasi cosa, dal gas al latte al bancomat.Prodotti e servizi hanno poco in comune e la comodità di averli tutti in un unico posto potrebbe non essere sufficiente a compensare il conseguente aumento dei costi e la diminuzione della qualità.

  • Alto:Il negozio di formaggi.Vendono formaggio.Nient'altro.Non posso batterli quando si tratta di formaggio.

Altri suggerimenti

Accoppiamento - Una misura di quanto un modulo (pacchetto, classe, metodo) si basa su altri moduli.È auspicabile ridurre l'accoppiamento o ridurre la quantità di dipendenza di un dato modulo dagli altri moduli di un sistema.

Coesione - Una misura di quanto strettamente correlati i membri (classi, metodi, funzionalità all'interno di un metodo) di un modulo sono rispetto agli altri membri dello stesso modulo.È auspicabile aumentare la coesione poiché ciò indica che un modulo ha un compito molto specifico e svolge solo quel compito.

Una delle discussioni più complete sui concetti di progettazione del software relativi all'OO (compresi questi) è quella di Bertrand Meyer Costruzione di software orientato agli oggetti.

Per quanto riguarda l'accoppiamento, fornisce la regola sull'accoppiamento debole/interfacce piccole come segue:

Se due moduli comunicano, dovrebbero scambiarsi meno informazioni possibile.

Il materiale di Meyer relativo alla coesione non si riduce mai a una singola affermazione concisa, ma penso che questa frase di Steve McConnell Codice completato lo riassume abbastanza bene:

La coesione si riferisce a quanto tutte le routine di una classe o tutto il codice di una routine supportano uno scopo centrale

Accoppiamento significa dipendenza dagli altri.
Coesione significa completezza con se stessi.

Un modo rapido e sporco per misurare l'accoppiamento è misurare il tuo import (o simili) affermazioni.

"L'accoppiamento è una misura di interdipendenze tra i moduli, che dovrebbero essere minimizzate" "La coesione, una qualità da massimizzare, si concentra sulle relazioni tra le attività svolte da ciascun modulo."

citato da questo articolo: http://steve.vinoski.net/pdf/IEEE-Old_Measures_for_New_Services.pdf

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top