Esaminare la qualità del codice
La qualità del codice non dovrebbe essere misurata in modo soggettivo. Uno sviluppatore che scrive il codice lo giudicherebbe di qualità elevata, ma questo non è un modo efficace per misurare la qualità del codice. Team diversi possono usare definizioni diverse in base al contesto.
Un codice considerato di alta qualità può significare una cosa per uno sviluppatore di automobili. E può significarne un'altra per uno sviluppatore di applicazioni Web.
La qualità del codice è essenziale perché influisce sulla qualità complessiva del software.
Uno studio sulle origini e sui metodi di rimozione dei difetti del software ha rilevato che i singoli programmatori hanno un'efficienza inferiore al 50% nel trovare i bug nel proprio software. La maggior parte delle forme di test è efficiente solo al 35%. Pertanto determinare la qualità non è affatto semplice.
Ci sono cinque caratteristiche chiave da misurare per ottenere una qualità superiore.
Affidabilità
L'affidabilità misura la probabilità che un sistema funzioni senza guasti in un determinato periodo di operatività. Si riferisce al numero di difetti e alla disponibilità del software. Diversi difetti possono essere misurati eseguendo uno strumento di analisi statica.
La disponibilità del software può essere misurata usando il tempo medio tra i guasti (MTBF, Mean Time Between Failures).
Un basso numero di difetti è fondamentale per sviluppare una codebase affidabile.
Manutenibilità
La manutenibilità misura la facilità di manutenzione del software. Si riferisce alle dimensioni, alla coerenza, alla struttura e alla complessità della codebase. La manutenibilità del codice sorgente si basa su diversi fattori, ad esempio la testabilità e la comprensibilità.
Non è possibile usare un'unica metrica per garantire la manutenibilità.
Alcune metriche che si possono considerare per migliorare la manutenibilità sono il numero di avvisi stilistici e le misure di complessità di Halstead.
Sia l'automazione che i revisori umani sono essenziali per sviluppare codebase manutenibili.
Testabilità
La testabilità misura la capacità del software di supportare le attività di test. Si basa sulla capacità di controllare, osservare, isolare e automatizzare i test, tra gli altri fattori.
La testabilità può essere misurata in base al numero di test case necessari per trovare potenziali errori nel sistema.
Le dimensioni e la complessità del software possono influire sulla testabilità.
Pertanto, l'applicazione di metodi a livello di codice, come la complessità ciclomatica, può contribuire a migliorare la testabilità del componente.
Portabilità
La portabilità misura l'usabilità dello stesso software in ambienti diversi. Si riferisce all'indipendenza dalla piattaforma.
Non esiste una misura specifica della portabilità. Esistono però diversi modi per garantire la portabilità del codice.
È essenziale testare regolarmente il codice su piattaforme diverse invece di aspettare la fine dello sviluppo.
È anche consigliabile impostare i livelli di avviso del compilatore il più alti possibile e usare almeno due compilatori.
Anche l'applicazione di uno standard di codifica contribuisce alla portabilità.
Riusabilità
La riusabilità misura se gli asset esistenti, come il codice, possono essere nuovamente usati.
Gli asset sono più facilmente riutilizzabili se hanno caratteristiche modulari o di accoppiamento libero.
Il numero di interdipendenze può misurare la riusabilità.
L'esecuzione di un analizzatore statico consente di identificare queste interdipendenze.