Verifica e validazione: analisi statica

Premessa

Un software di buona qualità deve possedere le capacità funzionali specificate nei requisiti e le caratteristiche non funzionali[1] necessarie al buon funzionamento del sistema. Bisogna quindi verificare che il software possegga determinate caratteristiche di costruzione (progettazione, codifica, integrazione), d'uso e di funzionamento.

Tanto più un linguaggio di programmazione è espressivo, tanto meno è verificabile. Nel fissare il liguaggio di programmazione (e nel sceglierne i costrutti), occorre quindi trovare il giusto compromesso tra funzionalità (potere espressivo) e integrità (costo di verifica). Inoltre, è bene adottare uno standard di codifica che tenga conto delle esigenze di verifica (per esempio, vietando alcuni costrutti): così facendo, si rende possibile una verifica che non sia retrospettiva ma che accompagna la codifica.

Infatti, il costo di rilevazione e correzione di un errore è tanto maggiore quanto più avanzato è lo stadio di sviluppo. Ecco perché ci interessa accompagnare la produzione con la verifica, invece di posticipare la verifica il più tardi possibile.

Tracciamento

Parte fondamentale dell'analisi statica è il tracciamento. Il tracciamento è una verifica atta a dimostrare due caratteristiche di una soluzione:

Il tracciamento ha luogo su ogni passaggio dello sviluppo (ramo discendente del modello a "V") e su ogni passaggio della verifica (ramo ascendente).

Tipi di analisi statica

L'analisi statica si effettua con diversi metodi:

L'analisi statica costruisce modelli astratti del software in esame; questi modelli considerano ogni programma come un grafo orientato e ne studiano i cammini possibili.

  1. Oggigiorno, i requisiti non funzionali pesano anche più di quelli funzionali: non bisogna più soltanto "fare dei conti" ma anche farli bene, velocemente, in modo responsivo...