Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Complessità ciclomatica
ITIS C. Zuccante Classe 5a ISA 9/4/2013 Complessità ciclomatica Carisi Matteo N° slide = 11
2
Indice Introduzione Complessità ciclomatica Definizione algebrica
Proprietà Formule alternative Esempio 1 Esempio 2 Riferimenti Carisi Matteo Complessità ciclomatica 1
3
Introduzione In generale le metriche sono degli standard di misura. Nell’ingegneria del software le metriche vengono usate per quantificare e qualificare e sono di tre tipi: Metriche di Prodotto Metriche di Processo Metriche di Qualità Carisi Matteo Complessità ciclomatica 2
4
La complessità ciclomatica
Essa è stata proposta da Thomas McCabe nel 1976 ed è usata per valutare la complessità di un algoritmo in un metodo ed è interamente basata sulla struttura del grafo che rappresenta l’algoritmo. Corrisponde al numero di casi di prova necessari per verificare ogni possibile esito di ogni ramo di decisione all’interno del sottoprogramma. Carisi Matteo Complessità ciclomatica 3
5
Definizione algebrica
Il numero ciclomatico v(G) = E – N + 2·P No componenti connesse (per una sola unità di programma P è pari ad 1) No archi No nodi v(G)=E-N+P Carisi Matteo Complessità ciclomatica 4
6
Proprietà v(G) ≥ 1; v(G) = numero massimo di percorsi linearmente indipendenti in G; L’inserimento o l’eliminazione di espressioni in G non influenza v(G); G ha un solo percorso solo se v(G) = 1; Inserendo un nuovo arco in G, v(G) aumenta di 1; v(G) dipende solo dalla struttura decisionale di G; Carisi Matteo Complessità ciclomatica 5
7
Formule alternative La complessità ciclomatica è stata definita in termini di programmi/ sottoprogrammi con un singolo punto di ingresso e di uscita. Esistono varie altre formule per il calcolo di questa tra cui: v(G) = n° decisioni + 1 Se ci sono più punti di uscita -> v(G)= n° decisioni - n° punti di uscita +2 Minore è la complessità e maggiore è la facilità di esecuzione dei test. Carisi Matteo Complessità ciclomatica 6
8
Esempio 1 #include <vector> int main(int argc, char *argv[]) { vector<int> vector; for( int i = 0; i < 10; i++ ) { int num = (int) rand() % 10 +1; vector.push_back( num ); } int quanti_pari = 0, quanti_dispari = 0; for(int i=0 ; i<vector.size() ; i++) { if (vector[i]%2 == 0) quanti_pari++; else quanti_dispari++; cout<< "Pari: " << quanti_pari << "Dispari: " << quanti_dispari; system("PAUSE"); return 0; Carisi Matteo Complessità ciclomatica 7
9
Esempio 1 1 2 3 4 5 6 7 i >= vector.size i < vector.size
/*1*/ vector<int> vector; int quanti_pari = 0, quanti_dispari = 0; int i = 0; /*2*/ while (i < vector.size()) { /*3*/ if (vector[i]%2 == 0) /*4*/ quanti_pari++; /*5*/ else quanti_dispari++; /*6*/ i++;} /*7*/ cout<< "Pari: " << quanti_pari << "Dispari: " << quanti_dispari; i >= vector.size 2 i < vector.size 3 pari dispari 4 5 6 Il grafo ha: 7 nodi 8 archi, che devono essere tutti coperti complessità ciclomatica pari a E-N+2 = = 3 7 Carisi Matteo Complessità ciclomatica 8
10
Esempio 2 int main(int argc, char *argv[]) { vector<int> vector;
#include <vector> int main(int argc, char *argv[]) { vector<int> vector; for( int i = 0; i < 10; i++ ) { int num = (int) rand() % 10 +1; vector.push_back( num ); } int ricerca=1; int tot = 0; if (vector.size() > 0) for (int i = 0; i < vector.size(); i++) { if (vector[i] == ricerca) tot = tot + 1; } else tot = -1; cout<< tot; system("PAUSE"); return 0; Carisi Matteo Complessità ciclomatica 9
11
Esempio 2 1 2 /* 1 */ int tot = 0; /* 2 */ if (vector.size() > 0) { /* 3 */ int i = 0; /* 4 */ while (i< vector.size()) { /* 5 */ if(vector[i]==ricerca) /* 6 */ tot++; /* 7 */ i++;} /* 8 */ else tot= -1; /* 9 */ cout<<tot; vector.size() <= 0 vector.size() > 0 3 i >= vector.size() 4 i < vector.size() 5 Vector[i]==ricerca 6 Vector[i]!= ricerca Il grafo ha: 9 nodi 11 archi, che devono essere tutti coperti complessità ciclomatica pari a = 4 7 8 9 Carisi Matteo Complessità ciclomatica 10
12
Riferimenti MetricheDelSoftware-F029.pdf ( 03_B_ExBianca.pdf ( Anna Rita Fasolino - Metriche Software ( Wikipedia ( Misurazione del software ( Carisi Matteo Complessità ciclomatica 11
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.