Best practice per l’utilizzo di strumenti di revisione del codice

La revisione del codice è un processo metodico per esaminare il codice sorgente del software così da identificare i problemi e migliorare la qualità del software. È un compito importante nello sviluppo di sistemi embedded critici, in particolare di quelli che richiedono la certificazione.

Un team di revisione del codice è in genere composto da un moderatore, un ingegnere o un responsabile della qualità, lo sviluppatore del software e altri colleghi. Il team utilizza spesso una checklist per rivedere sistematicamente tutti gli aspetti pertinenti del software. Ad esempio, il team potrebbe valutare la complessità del codice e verificare la conformità agli standard di codifica come MISRA-C / C ++ o JSF ++.

Un'efficace revisione del codice sarebbe quella focalizzata sugli aspetti di progettazione, come soddisfare i requisiti di progettazione, identificare i requisiti mancanti, la progettazione dell'architettura, delle interfacce ecc. Una revisione del codice focalizzata sulla scansione del codice per rilevare difetti è altamente inefficace perché l’identificazione di errori di run-time o anche semplici difetti di codifica possono essere task estremamente impegnativi. Ad esempio, è facile non accorgersi di un overflow o di un underflow a causa di complesse operazioni matematiche che coinvolgono il controllo programmatico. Strumenti di analisi statica come Polyspace® aiutano ad automatizzare e semplificare queste attività prima di un processo di revisione del codice.

Il caso d'uso più semplice di tali strumenti è la verifica di conformità del proprio codice agli standard come MISRA, JSF o le proprie regole di codifica personalizzate. Le regole di codifica aiutano a rispettare una coerenza nello stile di codifica, migliorando la leggibilità e la manutenibilità del codice.

Inoltre, gli strumenti Polyspace possono non solo rilevare difetti, ma anche dimostrare l'assenza di errori nel codice sorgente, evitando così di dover dedicare tempo alla scansione delle parti sicure del codice. Ancora più importante, è possibile identificare e / o correggere alcuni dei difetti anche prima di rivedere il codice. Ciò non solo consente di risparmiare tempo, ma aiuta il team di revisione a concentrarsi su aspetti importanti come la progettazione del software e i requisiti.

L'analisi automatizzata non può semplicemente scoprire questi problemi funzionali algoritmici e questa analisi di alto livello richiede un cervello umano. Tuttavia, l'analisi automatizzata è molto conveniente nella scansione del codice per identificare difetti come gli errori di programmazione o di codifica o gli errori di runtime ecc.

Inoltre, gli strumenti Polyspace forniscono anche informazioni dettagliate sul flusso di controllo e di dati. A titolo di esempio sono fornite informazioni sui possibili intervalli delle variabili, i grafi delle chiamate a funzioni e data dictionary per mostrare come e da dove le variabili vengono scritte e lette. Queste informazioni sono generalmente preziose in una revisione del codice in cui sia necessario comprendere il comportamento del software a run-time.

Questo processo è molto scalabile ed è possibile analizzare da poche centinaia di righe di codice a più di centomila. I report generati dall'analisi possono essere utilizzati come artefatto nel processo di revisione del codice per identificare quali parti del codice si sono dimostrate sicure e quali parti sono a rischio di fallimento.

Vedere anche: Statis analysis with Polyspace products, verification, validation, and test, embedded systems, formal methods, abstract interpretation, source code analysis, software QA, code review videos