Differenza tra accoppiamento e coesione

Differenza tra accoppiamento e coesione
Differenza tra accoppiamento e coesione

Video: Differenza tra accoppiamento e coesione

Video: Differenza tra accoppiamento e coesione
Video: Campo magnetico e teorema di Gauss - parte1 (Davide Contini) 2024, Luglio
Anonim

Coupling vs Coesion

Coupling e coesione sono due concetti che si trovano in Java (e in tutti gli altri linguaggi orientati agli oggetti). L'accoppiamento misura quanto ciascuno dei moduli del programma dipende dagli altri moduli del programma. La coesione misura quanto fortemente ciascuna delle funzioni è correlata all'interno di un modulo. In re altà, qualsiasi linguaggio orientato agli oggetti (incluso Java) ha i due obiettivi principali di aumentare la coesione e allo stesso tempo di diminuire l'accoppiamento, al fine di sviluppare programmi più efficienti. Queste due metriche di ingegneria del software sono state sviluppate da Larry Constantine per ridurre i costi di modifica e manutenzione del software.

Cos'è la coesione?

La coesione misura quanto fortemente ciascuna delle funzioni è correlata all'interno di un modulo del programma. Classi ben strutturate portano a programmi altamente coesi. Se una certa classe esegue un insieme di funzioni altamente correlate, si dice che quella classe è coesa. D' altra parte, se una classe esegue una serie di funzionalità totalmente non correlate, significa che la classe non è affatto coesa. È importante capire che non avere coesione non significa che l'applicazione complessiva non disponga delle funzionalità richieste. È solo che senza coesione, sarà molto difficile gestire le funzionalità perché saranno sparse in molti posti sbagliati man mano che la complessità dell'applicazione aumenta nel tempo. Mantenere, modificare ed estendere comportamenti sparsi in tutto il codice è molto noioso anche per i programmatori più esperti.

Cos'è l'accoppiamento?

Coupling misura quanto ciascuno dei moduli del programma dipende dagli altri moduli del programma. Le interazioni tra due oggetti si verificano perché c'è accoppiamento. I programmi ad accoppiamento libero hanno un'elevata flessibilità ed estensibilità. Un forte accoppiamento non è mai buono perché un oggetto può essere fortemente dipendente da un altro oggetto. Questo è un incubo quando il codice viene modificato, perché un accoppiamento elevato significa che i programmatori devono lavorare su più punti del codice anche per una singola modifica comportamentale. Un forte accoppiamento porta sempre a programmi con bassa flessibilità e minore scalabilità/estendibilità. Tuttavia, in linguaggi di programmazione come Java, è impossibile evitare completamente l'accoppiamento. Ma si raccomanda ai programmatori di fare del loro meglio per ridurre il più possibile l'accoppiamento. È anche possibile avere un accoppiamento per aiutare gli oggetti a interagire tra loro senza ostacolarne la scalabilità e la flessibilità.

Qual è la differenza tra accoppiamento e coesione?

Anche se accoppiamento e coesione hanno a che fare con la qualità di un modulo nell'ingegneria del software, sono concetti completamente diversi. La coesione parla di quanto le funzionalità sono correlate tra loro all'interno del modulo, mentre l'accoppiamento si occupa di quanto un modulo dipende dagli altri moduli del programma all'interno dell'intera applicazione. Per avere un software della migliore qualità, coesione e accoppiamento dovrebbero raggiungere le due estremità opposte dei loro spettri. In altre parole, l'accoppiamento libero e la forte coesione forniscono il miglior software. Avere campi privati, classi non pubbliche e metodi privati fornisce un accoppiamento libero, rendendo tutti i membri visibili all'interno della classe e avendo il pacchetto come visibilità predefinita fornisce un'elevata coesione.

Consigliato: