Sicurezza 18/19

Il corso si propone di introdurre gli studenti ai concetti di base dell’ingegneria del software e allo sviluppo di applicazioni software, utilizzando la metodologia Agile Unified Process (UP), che sfrutta il linguaggio di modellazione UML. Lo studente dovrà saper progettare un'applicazione significativa individuando con chiarezza la logica applicativa, l'interazione con le basi di dati e le interfacce richieste dai requisiti. Inoltre dovrà imparare a pianificare il lavoro secondo i canoni dello sviluppo dei progetti: lavoro di gruppo, definizione degli obiettivi e delle fasi di sviluppo.

Il corso ha una forte caratterizzazione sperimentale. Per questa ragione è suddiviso in un modulo di 4 CFU di lezioni frontali e una modulo di laboratorio di 5 CFU.

Il corso si propone di offrire agli studenti le conoscenze di base relative alla verifica formale di proprietà dei programmi. A questo scopo vengono introdotte le basi teoriche della logica dei programmi, il linguaggio JML di specifica per programmi Java e la sua interpretazione nella logica dinamica.

Il corso è basato sull'uso di tool e principalmente, ma non esclusivamente, del framework KeY (libero ed open-source) per la verifica di programmi Java assistita da calcolatore.