Tecniche di Specifica e di Verifica. Introduzione



Documenti analoghi
Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della

Scienze del computer. Cliente. Funzioni del computer. Problema. Teorie. Ingegneria del Software. Strumenti e Tecniche per Risolvere il problema

Calcolatori Elettronici A a.a. 2008/2009

Tecniche di Simulazione: Introduzione. N. Del Buono:

Introduzione ai Metodi Formali

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Dispensa di Informatica I.1

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Fasi di creazione di un programma

Automazione Industriale (scheduling+mms) scheduling+mms.

Approccio stratificato

Origini e caratteristiche dei calcolatori elettronici

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Algoritmi e Complessità

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

La Metodologia adottata nel Corso

Linguaggi e Paradigmi di Programmazione

Esame di INFORMATICA

Introduzione all Information Retrieval

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Esercizi di Metodi e Modelli per l Ingegneria del Software

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

ALGEBRA DELLE PROPOSIZIONI

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

11. Evoluzione del Software

Architettura hardware

Fondamenti dei linguaggi di programmazione

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO per la Sicurezza Funzionale

Metodologie di programmazione in Fortran 90

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Piano di gestione della qualità

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

FONDAMENTI di INFORMATICA L. Mezzalira

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Fondamenti di Informatica. Allievi Automatici A.A Nozioni di Base

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Sistemi Web! per il turismo! - lezione 3 -

Business Process Management

Concetti di base di ingegneria del software

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Planning as Model Checking Presentazione della Tesina di Intelligenza Artificiale

Esercizi su. Funzioni

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

12. Evoluzione del Software

Lezione 8. La macchina universale

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

TECNICHE DI SIMULAZIONE

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Introduzione alla Virtualizzazione

1. BASI DI DATI: GENERALITÀ

Funzioni in C. Violetta Lonati

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Generazione Automatica di Asserzioni da Modelli di Specifica

Testing: basato su analisi dinamica del codice. Metodi Formali: basato su analisi statica del codice.

I metodi formali nel processo di sviluppo del software

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Calcolatori: Algebra Booleana e Reti Logiche

4 3 4 = 4 x x x 10 0 aaa

Ciclo di vita del progetto

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

Modellazione di sistema

Configuration Management

Introduzione ad AADL. Piergiorgio Di Giacomo Firenze, 07 giugno 2005 ESI

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

Laboratorio di Informatica

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

L applicazione dei vettori di collaudo

Esempio: aggiungere j

Lo sviluppo del software: usi e clausole commentate Aspetti Tecnici. Prof. Franco Sirovich Dipartimento di Informatica Università di Torino

Introduzione alla verifica automatica

Metodi e Modelli Matematici di Probabilità per la Gestione

Capitolo II. La forma del valore. 7. La duplice forma in cui si presenta la merce: naturale e di valore.

Il corso di italiano on-line: presentazione

Informatica - A.A. 2010/11

Linguaggi di programmazione

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Struttura del calcolatore

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Algoritmi e strutture dati. Codici di Huffman

Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico

Lezione 4 La Struttura dei Sistemi Operativi. Introduzione

INFORMATICA 1 L. Mezzalira

Reti sequenziali sincrone

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

Descrizione di un algoritmo

La memoria centrale (RAM)

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Elementi di Informatica e Programmazione

Transcript:

Tecniche di Specifica e di Verifica Introduzione 1

Esrcitazioni Esercizi per casa Durante la prima metà Esercizi di verifica Durante la seconda metà Prevedono l uso del tool NuSMV. 2

Materiale per il corso Libro di testo: Clarke, Grumberg and Peled. Model Checking MIT Press Slides delle lezioni Altro materiale, ove necessario, fornito durante il corso. 3

Prerequisiti Basi solide di Matematica (Algebra). Logica, Semantica dei Linguaggi, Ingegneria del Software, Linguaggi Formali. Consigliati: Logiche per la Rappresentazione della Conoscenza Interesse per sistemi reattivi e... per la loro verifica. 4

Obiettivi Comprensione del problema della verifica di sistemi. Introduzione alle tecniche e metodologie della verifica formale. Esperienza con tool per la verifica formale. Cenni alle recenti tendenze della ricerca in verifica formale. 5

Lezione di oggi Introduzione alla verifica formale. Schema di massima del corso. soggetto a modifiche in corso d opra! 6

Cosa riguarda il corso? L argomento generale è: la Verifica formale. Per alcuni sistemi (di computazione) è cruciale verificare la loro correttezza prima che vengano utilizzati. Sistema di computazione: Circuiti, unità aritmetiche, CPU, programmi, compilatori.. 7

Proprietà dei sistemi Availability: la probabilità che un sistema sia funzionante e in grado di fornire i servizi nel tempo Reliability: la probabilità, in un dato intervallo di tempo, che un sistema fornisca correttamente i servizi come atteso dagli utenti Safety: è una valutazione di quanto sia verosimile che il sistema causi danni a persone o all ambiente. Security: è una valutazione di quanto sia verosimile che il sistema possa resistere ad intrusioni accidentali o premeditate. 8

Tipi di sistemi critici Safety-critical: sistemi il cui fallimento (failure) può causare ferimenti, perdite di vita, o seri danni ambientali (e.g. sistema di controllo per un impianto chimico). Mission-critical: sistemi il cui fallimento (failure) può causare il fallimento di attività guidate da obiettivo. (e.g. sistema di navigazione di una navetta spaziale) Business-critical: sistemi il cui fallimento (failure) può causare ingenti perdite di denaro (e.g. sistema di gestione dei conti correnti in una banca). 9

Il caso Therac-25 Il fatto: Canada-USA 1985-1987. 3 persone uccise e 3 gravemente ferite (di cui una paralizzata) per i malfunzionamenti di una macchina per l irradiazione dei tumori, il Therac-25. Il problema: overdose di radiazioni. Le cause: errori nel sistema SW, e di interfacciamento SW/HW (erronea integrazione di componenti SW preesistenti nel Therac-20). 10

Il caso di Denver Aeroporto di Denver - Progettato per essere un aeroporto all avanguardia, provvisto di un complesso sistema di gestione bagagli computerizzato e 5.300 miglia di cablaggio in fibre ottiche. Sfortunatamente, errori nel sistema gestione bagagli causavano lo schiacciamento delle valige e guidavano i carrelli automatici contro i muri. L aeroporto inaugurò con 16 mesi di ritardo, con una perdita di 3.2 miliardi di dollari, e con un sistema bagagli essenzialmente manuale. 11

Il Pentium 5 Il baco del Pentium - Il Professor Thomas Nicely del Lynchburg College in Virginia scoprì che il chip Pentium dava risposte scorrette per certe complesse equazioni (1994). L errore era dovuto a un difetto di progettazione dell algoritmo di divisione in floating point (FDIV) del processore. Intel fu costretta a ritirare il chip e a sostituirlo. Il tutto costò alla Intel 450 milioni di dollari. Dal 1994 Intel usa le Tecniche di Verifica Formale! 12

Il caso AT&T AT&T - errori nel software dei computer che gestivano le chiamate telefoniche, causarono uno scollegamento di 9 ore per tutte le reti a lunga distanza della compagnia. Fu il peggior black-out, tra i tanti subiti nella storia del sistema. Coinvolse centinaia di servizi. Alla fine la causa venne individuata in una singola linea di codice errata. 13

L Ariane 5 Il fatto: 4 giugno 1996, il volo di prova dell Ariane 5 risultò un fallimento. Dopo solo 40 secondi dall inizio della sequenza di volo, ad un altitudine di 3700 m, il razzo deviò dalla rotta, si separò ed esplose (500M$). La causa: gli Inertial Reference Systems cessarono di funzionare simultaneamente dopo circa 36.7 secondi. L eccezione del software SRI si verificò durante la conversione di dati da floating point a 64-bit a signed integer a 16-bit. Il numero floating point da convertire aveva un valore superiore a quello rappresentabile con un signed integer di 16-bit. Il risultato fu una eccezione di Operand Error. 14

L Ariane 5 (cont d) il pacchetto di navigazione era stato ereditato dall Ariane 4 senza eseguire un testing accurato. Il nuovo razzo volava più velocemente, fornendo al il software di navigazione valori maggiori per alcune variabili. La sfortuna fu che il codice che generò l eccezione forniva informazioni utili solo nella fase precedente alla partenza; se fosse stato disabilitato al momento del lancio, non ci sarebbero stati problemi. 15

Verifica di correttezza È una pratica ingegneristica fondamentale. Gli errori possono essere molto costosi il baco del Pentium. il Razzo Ariane 5 Ci sono molti sistemi la cui correttezza è critica, ad esempio i sistemi safety-critical. 16

Necessità di correttezza Sistemi safety-critical: Medici Controllo di reattori Controllo ferroviario Controllo aereo 17

Società che usano i Metodi Formali Intel Siemens AT&T Lucent AMD IBM Motorola Nasa British Telecom (BT) etc. 18

Verifica a posteriori 19

Errori: introduzione, individuazione e costi 20

Tecniche correnti Simulazione Testing Sempre più frequente e diffusa: Verifica formale In pratica le più utilizzate sono però la simulazione e il testing. 21

Simulazione e testing Simulazione : Un modello astratto del sistema viene simulato inclusi : Dati di input Eventi esterni Testing : Il sistema implementato viene eseguito su insiemi selezionati di input e eventi esterni, e verificato. 22

Svantaggi La simulazione non può essere eseguita per sempre. La simulazione è molte volte più lenta del sistema reale. Può essere motlo costosa. Nessuna garanzia che tutte le esecuzioni possibili vengano simulate. 23

Svantaggi Anche il testing soffre di svantaggi simili. In pratica, non tutte le configurazioni di input possono essere presentate al sistema. Gli insiemi di input devono essere generati automaticamente. Nessuna garanzia che gli input cattivi vengano mai presentati. Molto difficile soprattutto per sistemi concorrenti Sistemi multi-componente. 24

Svantaggi La simulazione e il testing possono rivelare la presenza di bachi ma non possono mai stabilire l assenza di bachi (Dijkstra negli anni 70). Questa è una limitazione fondamentale nel caso di sistemi safety-critical. Ma in pratica.. 25

Metodi Formali I Metodi Formali hanno come obiettivo fornire: la capacità di esprimere specifiche in maniera precisa, e la capacità di definire in modo chiaro quando un implementazione soddisfa le specifiche ( correttezza ) 26

La Verifica Automatica La verifica automatica: l applicazione del ragionamento logico allo sviluppo di sistemi computerizzati (software, hardware, applicazioni web distribuite,.) l uso di tools informatici per aiutare questo ragionamento logico 27

Ragionamento logico e verifica Il ragionamento logico permette di dedurre proprietà dei sistemi dandoci un modo di verificare il nostro lavoro, e fornisce un punto di vista diverso sul sistema. Nella verifica formale le proprietà vengono controllate per tutti i possibili comportamenti del sistema. L analisi è esaustiva ma eseguita su un modello formale del sistema, non sul sistema reale. Il ragionamento simbolico rende possibile l analisi esaustiva. 28

Ragionamento logico e verifica La verifica corrisponde a decidere la relazione di soddisfacimento tra un modello e una formula: M M è un modello che descrive i possibili comportamenti del sistema φ è la proprietà o specifica che il sistema deve soddisfare è una relazione che deve sussistere tra M e f. Il ragionamento logico ci permette di decidere se la relazione vale o meno tra il modello e la proprietà. f 29

Verifica Formale La verifica è: formale: il proprietà di correttezza è una proposizione matematica precisa - sia il modello che la proprietà sono non ambigue definitiva: la verifica o dimostra oppure refuta la proprietà di correttezza opposta a testing del sistema reale su input selezionati simulazione di un modello su input selezionati ispezione manualmente del codice o di un modello 30

Approcci alla Verifica Formale Verifica deduttiva e/o Model Checking. Verifica deduttiva (o Theorem proving): Usa assiomi e regole di dimostrazione per modellare il sistema (sistema formale). La proprieta da verificare viene espressa da un teorema del sistema formale. Derivare il teorema con l aiuto di un dimostratore automatico (Theorem-prover) 31

Svantaggi Molto difficile da automatizzare (spesso impossibile in teoria). Richiede l intervento dell utente. Derivare il sistema formale può essere piuttosto scomodo. Raramente effettiva (fattibile). Richiede un esperto per usare il theorem-prover. 32

Model checking Usa sistemi a transizioni (LTS) per modellare i sistemi. Usa logica temporale per specificare le proprietà. Il problema della verifica viene spesso ridotto a problemi di ricerca su grafi. Può essere completamente automatizzato. Se la proprietà non è verificata viene generato un controesempio. È relativamente facile da usare. 33

Filosofia di progettazione Rendere la verifica una parte significativa del processo di sviluppo. Progettazione, verifica, riprogettazione. Model checking (come il testing) funziona al meglio quando ci sono bachi! Le verifiche di basso livello vengono sempre svolte tramite testing ma forse meccanismi di sintesi automatica potrbbero essere di aiuto 34

Il processo di Model Checking 35

Il processo di Model Checking Modellazione: descrivere il comportamento del sistema usando il linguaggio di descrizione fornito dal Model Checker (costruzione del modello). (opzionale) eseguire alcune simulazioni per controllare il comportamento del modello formalizzare la proprietà da verificare usando il linguaggio di specifica fornito dal Model Checker 36

Il processo di Model Checking Esecuzione: esegue la verifica sul modello e sulla proprietà Analisi: proprietà soddisfatta --- passare alla prossima proprietà violata --- analizzare il contro-esempio fornito tramite simulazione raffinare il modello, il progetto o la proprietà ripetere il procedimento out of memory --- tentare di ridurre il modello e riprovare 37

Svantaggi Funziona (bene) prevalentemente per sistemi a stati finiti. L esplosione dello spazio degli stati è un problema serio: Al crescere del numero di componenti interagenti le dimensioni del sistema crescono esponenzialmente. Trovare il giusto livello di astrazione per la modellizzazione non è facile. Eliminare i giustidettagli. Gli informatici non sono sempre a loro agio con le logiche temporali. 38

Stato dell arte Di grande successo nella verifica di : hardware isolato di media dimensione. Protocolli di comunicazione/sicurezza Sempre più popolare in ambito industriale Sono disponibili tool robusti come SPIN, SMV (NuSMV), COSPAN, etc. I principi sottostanti sono ben compresi. 39

Tendenze della ricerca Integrazione con il theorem-proving (PVS, Abstraction-Refinement per verifica SW). Verifica parametrica. Verificare sistemi ad n-componenti per ogni n. Pipelines con n stadi. Protocolli di cache con n unità di memoria... Sistemi a stati infiniti (ricorsione, parallelismo) Sistemi temporizzati (real-time). Sistemi ibridi. 40

Vedremo come... Definire il modello di un sistema usando il formalismo dei sistemi di transizioni : TS Esprimere prorpietà interessanti del sistema usando una logica temporale : Y Verificare che il sistema soddisfa la proprietà desiderata tramite model checking: TS Y 41

Sistemi a transizioni Come modellare sistemi? Uso di sistemi a transizioni. off on 42

Sistemi a transizioni Turn-on off on Turn-off 43

Sistemi a transizioni TS = (S, S in, ô ) S un insieme di stati S in un inseme di stati iniziali (un sottoinsieme di S) ô S S la relazione di transizione (s, s ) ô s ô s 44

Varianti S deve essere finito. Ci deve essere un solo stato iniziale. Act un insieme di azioni a, b, S Act S s s a (s, a, s ) 45

Sistemi a transizioni Modello molto generale. Programmi, hardware, protocolli, Macchine di Turing Programmi possono essere modellati tramite: Stato (locazione del controllo, valori correnti delle variabili) Le transizioni producono nuovi stati : (nuove locazioni del controllo, nuovi valori delle variabili) 46

Sistemi a transizioni Studieremo : Il modello base Nozioni associate Esempi tramite circuiti, programmi e in particulare, alcuni sistemi concorrenti. 47

Logiche temporali Nascono nella filosofia greca antica. Sviluppate dai filosofi per lo studio dei costrutti linguistici che coinvolgono il flusso del tempo. Riprese nei tempi moderni da Prior. Importata in ambito informatico (per la verifica formale) nel 1977 da Amir Pnueli. 48

Logiche temporali Due principali famiglie: Logiche Temporali Lineari (Linear-time Temporal Logics) Logiche Temporali Ramificate (Branching-time Temporal Logics) Studieremo: LTL (logica lineare) CTL, CTL*, m-calculus (logiche ramificate) 49

Il framework di base TS = (S, s 0, ) s 0 s 1 s 2 s 3 s 4 Una computazione come quella sopra è l oggetto di base del ragionamento. In linear time ci interessano le computazioni individuali che hanno origine da s 0. In branching time ci interessa l albero delle computazioni che hanno origine da s 0. 50

Linear time (Lungo la computazione che stiamo analizzando) Esempi Nello stato corrente, buffer-size = 5 è vero. Nello stato suvvessivo (next) lo stato del controllo è End 1-status = wait sarà vero finchè (until) 1-granted-access diviene infine (eventually) vera. 51

Branching time CTL (Computation Tree Logic) Esempiç In ogni stato lungo ogni computazione 1-granted-access E 2-granted-access è falsa. Per ogni computazione, esiste uno stato lungo tale computazione nel quale la proprietà 1-idle e 2-idle è vera. 52

Model Checking Partiamo da TS = (S, s 0, sistema ), il modello del Da un insieme finito di proposizioni atimoche P = {p 1, p 2, p n }. p 1 = lo stato del controllo è begin Fissiamo una valutazione V che assegna un sottoinsieme di P ad ogni stato s; V(s 0 ) = {p 1, p 2, p 5 } 53

Model Checking (TS, V) --- Kripke Structure Costruiamo una formula in logica temporale Y (specifica, specification) a partire da P = {p 1, p 2,..p n } Determiniamo se (TS, V) soddisfa (meets) la specifica Y. (TS, V) Y 54

Tecniche basate sulla teoria degli automi Linear time Temporal Logic (LTL). Si associa un automa a K e uno alla spec. K = (TS, V) --------- A K Y ------ A Y K meets the specification Y iff L(A K ) L(A Y ). Questo di riduce ad un problema algoritmico su grafi! 55

Tecnica di etichettatura degli stati Branching time K = (TS, V) Y Partiamo da P = {p 1, p 2,..p n } ed etichettiamo induttivamente gli stati di TS con le sottoformule di Y. Il passo base è fornito dalla valutazione V! K meets Y iff, alla fine, s 0 è risulta essere etichettato con Y. 56

Esplosione dello spazio degli stati Sistemi concorrenti. TS = TS 1 TS 2 TS m m processi sequenziali comunicanti (communicating sequential processes). Lo spazio degli stati di TS è esponenziale (2 m ). m = 50! 57

Esplosione dello spazio degli stati Trovare modi succinti per descrivere gli stati e le transizioni di TS. Usare questa rappresentazione nella computazione di punto fisso guidata dalla procedura di model checking. Utilizzeremo gli OBDDs (Ordered Boolean Decision Diagrams); Randy Bryant, Ken McMillan 58

Altre tecniche di riduzione Partial order reductions Simmetria Astrazione. 59

Sistemi real-time Le logiche temporali permettono di esprimere solo asserzioni qualitative sul tempo. A volte è necessario fare asserzioni quantitative sul tempo. Dopo al più 5.5 unità di tempo dal verificarsi dell evento gas-pressure-level = danger deve verificarsi l evento safety-valve = open 60

Sistemi real-time Uso degli automi temporizzati (timed automata) e sistemi a transizioni temporizzati (timed transition systems) Sistemi a transizioni + Variabili di clock. Una variabile di clock evolve col tempo a tasso unitario. Una transizione può essere guarded (condizionata) da predicati che coinvolgono variabili di clock: x < 6.1 e y > 3 Una variabile di clock può essere resettata a 0 da una transizione. Molto espressivi. Proprietà espresse Logiche Temporali Temporizzate. 61

Verifica formale Le logiche temporali sono uno strumento fondamentale in Informatica. Strumenti molto potenti e interessanti di specifica di proprietà di sistemi reatrivi. Verifica formale basata su model checking è un must per sistemi safety-critical. ma c è ancora molto da fare! 62