La verifica formale ha fatto molta strada, ma in genere gli strumenti di settore / ampiamente utilizzati sono in ritardo rispetto alle ultime ricerche. Ecco alcuni sforzi recenti in questa direzione:
Spec # link
Questa è un'estensione di C # che supporta i contratti di codice (pre / post condizioni e invarianti) e può utilizzare questi contratti per eseguire vari tipi di analisi statiche.
Progetti simili a questo esistono per altre lingue, come JML per java, e Eiffel ha questo praticamente integrato.
Andando ancora oltre, progetti come slam e blast può essere usato per verificare alcune proprietà comportamentali con annotazioni / interventi minimi del programmatore, ma non può ancora occuparsi della piena generalità dei linguaggi moderni ( cose come overte integer / aritmetica del puntatore non sono modellate).
Credo che vedremo molte più di queste tecniche utilizzate nella pratica in futuro. La barriera principale è che gli invarianti di programma sono difficili da dedurre senza annotazioni manuali, e di solito i programmatori non sono disposti a fornire queste annotazioni perché farlo è troppo noioso / richiede molto tempo.