Testwell CMT++/CMTJava

Testwell CMT++/CMTJava è il tool di Verifysoft Technology specifico per l’analisi della complessità del codice. Negli ultimi anni la dimensione media delle applicazioni, sia nel modo enterprise che in quello embedded, è cresciuto notevolmente. Con l’aumento del numero di linee di codice sono aumentate le criticità, quindi la soluzione per tali problematiche la si è trovata nell’utilizzo dei tool che analizzano la complessità del software. Questi i principali punti di attenzione che una azienda deve avere:

  • 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) richiedono l’esecuzione “a bassa complessità” del codice

cmt++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 quelle definite dagli 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…

CMT++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.