Differenza tra complessità del software e complessità ciclomatica

Differenza tra complessità del software e complessità ciclomatica

Complessità del software

La complessità del software rappresenta il livello di complessità rispetto ad un modello strutturato e rispetto a strutture logiche definite. Può essere rappresentato dai seguenti indicatori:

  1. Complessità ciclomatica;
  2. Livello di accoppiamento;
  3. Livello di coesione.

La complessità è valutata tramite attività di revisione del codice sorgente con l’utilizzo di tool specifici, in quanto l’attività manuale possibile (tramite revisioni del codice) è onerosa da fare per grandi applicazioni.

Differenza tra complessità del software e complessità ciclomatica

Complessità ciclomatica

La complessità ciclomatica Rappresenta il livello di complessità di un modulo (programma) calcolato rispetto ad un modello strutturato, cioè secondo le regole della programmazione strutturata che tutti i programmatori conoscono. E’ calcolata sul grafo che rappresenta la logica interna del modulo dove si prendono in considerazione i cammini logici percorsi dal software all’interno del modulo ed i nodi presenti, cioè i punti decisionali del programma. Il numero ciclomatico è stato introdotto da Tom McCabe e perfezionato da altri. Dal numero ciclomatico puro è stata derivata una seconda misurazione pratica che è quella effettivamente usata: la complessità ciclomatica “essenziale” di un modulo che è la complessità ciclomatica base calcolata sul grafo dopo aver eliminato tutti i cammini strutturati. Mentre per la complessità ciclomatica base Tom McCabe raccomandava valori inferiori a 10, per la complessità ciclomatica essenziale oggi si raccomandano mediamente valori non superiori a 4.

Complessità ciclomatica di un modulo v(G) = e – n + 2 (dove e = cammino, n = nodo)

Livello di accoppiamento

Il Livello di accoppiamento rappresenta il grado di conoscenza che un modulo/programma ha su di un altro modulo/programma chiamante o chiamato. Esso definisce, cioè, se la logica di un programma dipende dalla logica di un altro programma. E’ bene quindi che il software abbia un “valore basso di accoppiamento”.

Esiste una scala di valori di accoppiamento a 6 livelli così definiti:

  1. Per dato (livello ottimale);
  2. Per strutture dati;
  3. Per controllo;
  4. Per elementi esterni;
  5. Per aree dati comuni;
  6. Per contenuto.

Livello di coesione

Il livello di coesione rappresenta il grado di dipendenza funzionale tra le parti che compongono un modulo/programma, cioè il grado di attinenza delle sue varie parti. Occorre, quindi, che i programmi abbiano un “alto valore di coesione”.

Esistono 7 livelli di coesione, in ordine crescente:

  1. Casuale;
  2. Associazione logica;
  3. Temporale;
  4. Procedurale;
  5. Comunicazione;
  6. Sequenziale;
  7. Funzionale (livello ottimale).

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *