ESC/Java - ESC/Java

ESC/Java (e più recentemente ESC/Java2 ), "Extended Static Checker for Java", è uno strumento di programmazione che tenta di trovare errori di runtime comuni nei programmi Java in fase di compilazione . L'approccio sottostante utilizzato in ESC/Java è indicato come controllo statico esteso , che è un nome collettivo che si riferisce a una serie di tecniche per il controllo statico della correttezza dei vari vincoli del programma. Ad esempio, una variabile intera è maggiore di zero o si trova tra i limiti di un array . Questa tecnica è stata introdotta in ESC/Java (e nel suo predecessore, ESC/Modula-3) e può essere pensata come una forma estesa di controllo del tipo . Il controllo statico esteso di solito comporta l'uso di un dimostratore di teoremi automatizzato e, in ESC/Java, è stato utilizzato il dimostratore di teoremi Simplify.

ESC/Java non è né sanocompleto . Questo era intenzionale e mira a ridurre il numero di errori e/o avvisi segnalati al programmatore, al fine di rendere lo strumento più utile nella pratica. Tuttavia, significa che: in primo luogo, ci sono programmi che ESC/Java considereranno erroneamente non corretti (noti come falsi positivi ); in secondo luogo, ci sono programmi errati che considererà corretti (noti come falsi negativi ). Esempi in quest'ultima categoria includono errori derivanti dall'aritmetica modulare e/o dal multithreading .

ESC/Java è stato originariamente sviluppato presso il Compaq Systems Research Center (SRC). SRC ha lanciato il progetto nel 1997, dopo che il lavoro sul loro correttore statico esteso originale, ESC/Modula-3, è terminato nel 1996. Nel 2002, SRC ha rilasciato il codice sorgente per ESC/Java e strumenti correlati. Le versioni recenti di ESC/Java si basano sul Java Modeling Language (JML). Gli utenti possono controllare la quantità e il tipo di controllo annotando i loro programmi con commenti o pragma appositamente formattati .

L' Università di Nijmegen 's sicurezza dei sistemi gruppo ha pubblicato le versioni alpha di ESC / Java2, una versione estesa di ESC / Java che elabora il JML linguaggio di specifica attraverso 2004. Dal 2004 al 2009, lo sviluppo ESC / Java2 è stato gestito dal Gruppo di Ricerca KindSoftware allo University College Dublin , che nel 2009 si è trasferito all'Università IT di Copenhagen , e nel 2012 alla Technical University of Denmark . Nel corso degli anni, ESC/Java2 ha acquisito molte nuove funzionalità tra cui la capacità di ragionare con più dimostratori di teoremi e l'integrazione con Eclipse .

OpenJML , il successore di ESC/Java2, è disponibile per Java 1.8. La fonte è disponibile su https://github.com/OpenJML

Guarda anche

Riferimenti

Appunti

link esterno