Verifiche delle proprietà del software e della loro corrispondenza alle specifiche formali Prof.ssa Susanna Donatelli Prof. Franco Sirovich Dipartimento di Informatica Università di Torino www.di.unito.it susi@di.unito.it 011-6706746 1
Specificare Informale Indicazioni Lingua italiana il più precisa possibile Difficilmente elaborabile Semi-formale Indicazioni di maggior precisione Semi-elaborabile Formale Indicazioni non-ambigue Elaborabili in modo automatico 2
Specificare Costo della specifica iniziale e capacità richieste Costo totale dello sviluppo e del mantenimento Informale Semi-formale Formale 3
Specificare Requisiti non-funzionali: prestazioni affidabilità usabilità Sicurezza ( antivirus Possono essere in contrasto fra loro (es: ( personale Difficili da specificare (anche per mancanza di istruzione del ( sicurezza Difficili da verificare e da garantire nel tempo (es: I requisiti non-funzionali devono essere specificati allo stesso tempo e con la stessa attenzione di quelli funzionali (difficile aggiungere affidabilità, ( posteriori prestazioni e sicurezza a 4
Specifica informale Esempi: il nostro server degli ordini on-line deve essere in grado di supportare le seguente prestazioni: Sino a 10 utenti di tipo A --- meno di 0.5 sec per query Sino a 100 utenti di tipo B --- meno di 2 sec per query Etc... pensando al futuro! il nostro server deve garantire "queste" prestazioni nel 98% dei casi, con tempo massimo di down-time 1 minuto, qualunque sia la causa, anche catastrofica, del problema 5
Specifica semi-formale Estensioni del linguaggio di specifica semi-formale piu' di moda: UML ( www.uml.org ) I vari diagrammi sono modificati aggiungendo attributi e altre caratteristiche alle classi di base del meta-modello di UML, e quindi a tutti i diagrammi di UML L'estensione è realizzata tramite profili: UML MARTE www.omgmarte.org UML SPT RT Corba SysML www.omgsysml.org Richiede skill e molto lavoro 6
Un esempio di alcune classi in ( dependability ) MARTE 7
Specifica formale Linguaggi e logiche che permettono di specificare in modo preciso e non-ambiguo sistemi e vincoli temporali di affidabilità e prestazioni Cosa vuol dire "preciso"? ( 300ms Dato un vincolo ( msg m: m.inviato ack(m).receive and time < (.. ack(m1)=0.7 Data una sequenza temporale di eventi (time(m1) = 0.5, Il vincolo è soddisfatto? Se non è soddisfatto, mostra un controesempio Model-checking 8
Specifica formale Normalmente non si specificano sequenze temporali di esecuzioni, ma insiemi, anche infiniti, di esecuzioni, usando ( automata Estensioni di automi (timed ( automata Estensioni di Reti di Petri (timed and stochastic ( task Linguaggi ad-hoc per specifiche applicazioni (es: scheduling di 9
Specifica formale - sistemi Esempi Timed Petri Net 10
Specifica formale - sistemi Esempi Timed Automata Quando si percorre l'arco si resetta il clock L'arco puo' essere percorso solo se y>=5 11
Specifica formale - sistemi 12
Specifica formale - vincoli Logiche di vario tipo Timed CTL ( CSL ) Stochastic CTL 13
Specifica formale - strumenti Si distinguono in base ai linguaggi utilizzati per sistema e vincoli, agli algoritmi di model-checking, possibilità di generare codice, supporto fornito Uppaal Timed automata e logica TCTL molto semplificata www.uppaal.com Romeo/TINA - Timed Petri Nets e logica TCTL completa romeo.rts-software.org http://www.laas.fr/tina/ Oris varie forme di Timed Petri Nets e logica TCTL con supporto grafico per la definizione di vincoli e generatore per Linux real-time www.stlab.dsi.unifi.it/oris/ 14
Garantire/controllare requisiti non funzionali Approccio integrato, a seconda degli obiettivi e delle disponibilità: Generare automaticamente il codice dalle specifiche formali - approccio molto usato in sistemi embedded/real-time Generare modelli dal codice e verificare le proprietà approccio usato soprattutto per predire le prestazioni in ambiti esecutivi diversi Estendere la fase di test funzionale a includere anche aspetti non funzionali 15
Garantire/controllare requisiti non funzionali Problema: dipendenza dall'ambiente di esecuzione ( private Applicazioni che usano le reti di comunicazione (sia Internet che Aggiornamenti di librerie, sistema operativo, etc. ( carico Dipendenza dallo scheduler (e dal. Ricerca di una soluzione: specificare e costruire ambienti di test Un esempio di soluzione: utilizzare le macchine virtuali per "congelare" il sistema Utilizzato nel corso di Specifiche di Processi Concorrenti per assicurare un ambiente di lavoro uniforme per gli studenti Permette di aggiornare le librerie, per esempio, di Java, senza che questo influenzi l esecuzione dell applicativo 16
Scegliere tecniche e strumenti Quale tecnica? Quale strumento? Che tipo di esperti? Che limiti ha? Che metodologia adotta? In quali fasi delo sviluppo? Quanto costa? Di quante persone ho bisogno? Che esperienza è necessaria? Che tipo di formazione? Quali limitazioni di scala? Esaustività? Affidabilità? Espressività? Efficienza? Supporto? Grado di automazione? 17
Scegliere tecniche e strumenti (2) Ma soprattutto, cosa chiede il mercato oggi, e cosa chiederà domani?
Program Verification SLAM Bandera http://research.microsoft.com/en-us/projects/slam/ http://www.kroening.com/papers/ase2007-ddverify.pdf http://bandera.projects.cis.ksu.edu/ http://www.citeulike.org/user/bfraser/article/2374734 19
SLAM Verifica statica di programmi in C Verifica del rispetto delle specifiche di API Astrazione dal codice Model checking dell'astrazione ottenuta automaticamente dal codice Valido per domini con limitata dimensione degli stati delle variabili 20
Bandera Generazione automatica di modello a stati finiti di codice scritto in Java Produzione del modello nel formalismo di una serie di tool di verifica Uso del tool di verifica per verificare che il modello del codice soddisfa le proprietà rilevanti che la specifica soddisfa 21
Infine.. grazie della vostra attenzione 22