Docente
|
DE GIACOMO GIUSEPPE
(programma)
Introduzione ai metodi formali nel software. Uso di logiche per esprimere specifiche e proprietà statiche e dinamiche: logica del prim'ordine, query al prim'ordine, query congiuntive. Analisi e verifica di aspetti statici. Sintassi e semantica formale dei diagrammi concettuali, quali diagrammi delle classi UML e diagrammi Entità Relazione, verifica di proprietà statiche. Uso di logica del prim'ordine per il ragionamento automatico su tali diagrammi. Interrogazioni su diagrammi UML. Query answering di query congiuntive (e unioni di query congiuntive). Analisi e verifica di aspetti dinamici. Semantica operazionale astratta dei programmi: semantica di valutazione (intera computazione) e semantica di transizione (singolo passo della computazione). Precondizioni, postcondizioni e invarianti di un programma. Correttezza parziale e totale, Hoare Logic. Programmi reattivi/interattivi (a stati finiti) reattivi come sistemi di transizione (cf. semantica di transizione), astrazione. Punti fissi, teorema di Knaster-Tarski su least e greatest fixpoint, approssimanti di least e greatest fixpoint. Verifica di proprietà dinamiche e temporali su sistemi di transizione: Safeness, Liveness, Fairness, Strong Fairness. Logiche temporali per la verifica: LTL, CTL, CTL*, mu-calculus. Model checking per CTL. Model checking per mu-calculus. Model checking per LTL.
Dispense del corso, disponibili presso il sito del corso: http://www.dis.uniroma1.it/~degiacom/didattica
|