Testwell CMT++/CMTJava è il tool di Verifysoft Technology specifico l’analisi della complessità del codice. Negli ultimi anni la dimensione media delle applicazioni, sia nel modo enterprise che in quello embedded, è crescito notevolmente. Con la crescita del codice sono aumentate che le criticità, quindi la soluzione per tali problematiche la si è trovata nell’utilizzo dei tool di analisi di complessità. Questi i principali punti:
- Correlazione della complessità del codice con il tasso di difettosità e la robustezza dell’applicazione
- Un codice complesso è difficile da testare con metodologie classiche ==> più errori nell’applicazione finale
- Un codice complesso è difficile da manutenere
- Per questi motivi diversi standard (come ISO 26262) richiede l’esecuzione “a bassa complessità” del codice
Sovente le grosse criticità crescono con l’aumentare del codice inutile o ridondante. Con l’aumentare delle righe di codice diminuisce la comprensione del listato aumentandone i costi di manutenzione, quindi le applicazioni con una complessità ragionevole aiutano a risparmiare tempo e denaro.
Che cosa viene misurato da CMT++ e CMTJava?
Sulla base delle proprietà statiche del codice CMT++ e CMTJava danno una stima approssimativa di quanto la complessità del codice analizzato incide sul numero di errori che si possono andare a trovare/verificare, quanto tempo ci vorrà per capire il codice, ecc…
Capita spesso che il team di progetto non ha il tempo utile per controllare tutto il codice prodotto, CMT++/CMTJava può aiutare a localizzare i moduli critici nei quali c’è la probabilità più alta di trovare problemi in futuro.
Testwell CMT++ e Testwell CMTJava analizzano le applicazioni adottando le seguenti metriche:
- Line-of-codes (LOC)
- LOCbl numero di linee vuote
- LOCcom numero di linee con commenti
- LOCphy numero totale delle linee del progetto
- LOCpro numero reale di linee di solo codice
- Metriche di Halstead
- B stima del numero di errori
- D livello di difficoltà, errore propensione
- E sforzo per la realizzare
- L program level (livello di astrazione del programma)
- N lunghezza del programma
- N1 Numero di operatori
- N2 Numero di operandi
- n dimensione del vocabolario (operatori unici + operandi unici)
- n1 numero di operatori unici
- n2 numero di operandi unici
- T Tempo di esecuzione / tempo per capire il codice
- V Volume: dimensione per l’implementazione di un algoritmo
- Numero ciclomatico di McCabe: il numero Ciclomatico v(G) descrive la complessità del flusso di controllo di un programma.
- Indice di manutenibilità: l’indice di manutenibilità è calcolato utilizzato formule matematiche che utlizzano come dati di partenza il numero di linee di codice, le misure McCabe e Halstead. La misurazione e la traccia di manutenibilità hanno lo scopo di aiutare a ridurre o invertire la tendenza di un sistema verso “l’entropia del codice” o il degradamento dell’integrità del codice. Il risultato è l’indicazione di quando diventa più economico e meno rischioso riscrivere il codice invece di cambiarlo.
Le soglie di allarme di Testwell CMT++ e CMTJava possono essere personalizzate: le soglie di allarme di default sono solo dei suggerimenti ottenuti su base statistica su misurazioni fatte a codici con un “buon successo”. Le metriche utilizzate da CMT + + e CMTJava sono gli standard industriali. Poiché non è possibile dare limiti assoluti a valori accettabili, Testwell CMT++ e CMTJava permette di personalizzare le definizioni dei limiti degli allarmi correlandole alle specifiche esigenze dei vostri progetti.
Testwell CMT++/CMTJava Highlights:
- misura dei file originali non pre-processati
- estremamente veloce ==> analizza le tue applicazioni in pochi minuti
- capacità di gestire files di medie e grandi dimensioni
- report in formato HTML o txt
- integrazione della GUI in Visual Studio
- disponibile su molte piattaforme, Windows, Linux, HP, Solaris, etc…
Veribench: Front End che permette differenti visualizzazioni.
Verybench è un’interfaccia utente di tipo grafico che permette ai manager, sviluppatori, di collaborare facilmente e di contribuire per ottenere una migliore qualità del codice sorgente. Utilizzando metriche “avulse” dal personale in carica allo sviluppo permette di avere report dettagliati e non legati ai singoli punti di vista dei vari sviluppatori sofware.