Introduzione alla verifica automatica



Documenti analoghi
Introduzione ai Metodi Formali

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

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Descrizione di un algoritmo

Generazione Automatica di Asserzioni da Modelli di Specifica

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

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

Fasi di creazione di un programma

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

Automazione Industriale (scheduling+mms) scheduling+mms.

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

Itrduie aa verifica autatica

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

e-dva - eni-depth Velocity Analysis

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

PowerSchedo. Un sistema di supporto alla decisione nel settore dell'oil&gas. For further information:

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Base di dati e sistemi informativi

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

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Introduzione alla Virtualizzazione

( x) ( x) 0. Equazioni irrazionali

Il controllo qualità con GOM nel settore Automotive

Esercizio 1: trading on-line

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

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

Laboratorio di Pedagogia Sperimentale. Indice

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

FONDAMENTI di INFORMATICA L. Mezzalira

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

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

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

SysAround S.r.l. L'efficacia delle vendite è l elemento centrale per favorire la crescita complessiva dell azienda.

La Gestione delle risorse Renato Agati

Deadlock (stallo) Parte III. Deadlock

Consideriamo due polinomi

Project Management. Modulo: Introduzione. prof. ing. Guido Guizzi

Esempio - Controllo di un ascensore

Concetti di base di ingegneria del software

Soluzione dell esercizio del 2 Febbraio 2004

IL PROCESSO DI BUDGETING. Dott. Claudio Orsini Studio Cauli, Marmocchi, Orsini & Associati Bologna

itime Chiaramente inclusa la stampa del cartellino presenze come previsto dalle normative

INFORMATICA 1 L. Mezzalira

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

Registri. «a2» Copyright Daniele Giacomini --

1. Limite finito di una funzione in un punto

Esercizi su. Funzioni

PREMESSA AUTOMAZIONE E FLESSIBILITA'

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Calcolatori Elettronici A a.a. 2008/2009

EasyMACHINERY ERPGestionaleCRM. partner

Piano di gestione della qualità

Tecniche di Simulazione: Introduzione. N. Del Buono:

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Calcolatori Elettronici

Ibpm è lo strumento per la gestione dei processi, dalla modellazione, all esecuzione, al monitoraggio.

Luigi Piroddi

~ Copyright Ripetizionando - All rights reserved ~ STUDIO DI FUNZIONE

I metodi formali nel processo di sviluppo del software

Monitor. Introduzione. Struttura di un TDA Monitor

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Strumenti di modellazione. Gabriella Trucco

Coordinazione Distribuita

Verifica di ipotesi e intervalli di confidenza nella regressione multipla

In questi ultimi anni ha ricoperto un grande interesse lo studio di controllori autonomi

Più processori uguale più velocità?

Capitolo 2 - Teoria della manutenzione: classificazione ABC e analisi di Pareto

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Semantica Assiomatica

Indice. Ingegneria dei requisiti e gestione agile. User-Centered Development Esempi di artefatti. Domain Driven Design. Design for Testability

ali e non funzionali con priorità (high, medium, low) Use Case con un Activity Diagram o uno State Diagr ram

Quintiq stabilisce un nuovo standard per la pianificazione delle risorse nel settore ferroviario

Esame di Stato Materia: SISTEMI AUTOMATICI PRIMA PARTE

LE FUNZIONI A DUE VARIABILI

SISTEMI DI NUMERAZIONE E CODICI

fit-up), cioè ai problemi che si verificano all atto dell assemblaggio quando non si riescono a montare i diversi componenti del prodotto o quando il

Linee Guida AICQ Incollaggio Parte 5 Manutenzione e Riparazione

2 FUNZIONI REALI DI VARIABILE REALE

Esempi di algoritmi. Lezione III

Agenti Mobili Intelligenti e Sicurezza Informatica Utilizzare un nuovo paradigma applicativo per la realizzazione di sistemi informatici sicuri.

Il Sistema Operativo

4.1 Che cos è l ideazione

Scheda. Il CRM per la Gestione del Marketing. Accesso in tempo reale alle Informazioni di rilievo

Le tecniche di trading basate sulle Bande di Bollinger. Michele Maggi. Rimini, 1-2 dicembre 2005

Database. Si ringrazia Marco Bertini per le slides

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

LINGUAGGI DI PROGRAMMAZIONE

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

4 3 4 = 4 x x x 10 0 aaa

LA SINCRONIZZAZIONE TRA PROCESSI

LE CARTE DI CONTROLLO (4)

La piattaforma di lettura targhe intelligente ed innovativa in grado di offrire servizi completi e personalizzati

La memoria - generalità

T E O R I A D I P R O G E T T A Z I O N E D E L S O F T W A R E

Guida Compilazione Piani di Studio on-line

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

(a cura di Francesca Godioli)

Artifact Centric Business Processes (I)

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Transcript:

Sistemi digitali Introduzione alla verifica automatica Utilizzati in quasi tutte le attività umane Complessità elevata semplici sistemi hanno milioni di linee di codice Tempi di realizzazione sempre più ristretti Concorrenza e contraffazioni spingono a rilasciare nuovi sistemi il prima possibile Affidabilità è un requisito primario: bug possono essere molto onerosi difficile da ottenere Correttezza dei sistemi Un sistema è corretto se soddisfa i requisiti di progettazione (specifiche) assenza di errori rispetto alle specifiche Come si garantisce la correttezza di un sistema? Verifica di correttezza: Verifica: testing (1) verifica sia per software che hardware metodo dinamico: viene eseguito il sistema occorre attendere la prima release la generazione e l esecuzione dei test possono essere automatizzate il controllo dei risultati del testing è invece difficile da automatizzare spesso richiede l intervento umano

Verifica: testing (2) testing esaustivo di tutte le possibili esecuzioni non è fattibile di solito si considera soltanto un piccolo numero di esecuzioni efficace per error detection, non per dimostrare correttezza difficile determinare quando è sufficiente generale: si applica a tutti i tipi di sistema il costo del testing nei progetti software è stimato tra il 30% e il 50% del costo totale Verifica: prove di correttezza Solo verifica del software svolto da persone esperte di prove formali: preferibilmente non coinvolte nel processo di sviluppo metodo statico: ispezione del codice manuale, nessuna esecuzione in grado di scoprire dal 31 al 93% degli errori (stimato in in media al 60%) alcuni errori impercettibili (tipicamente aspetti di concorrenza o difetti legati alla logica dell algoritmo) sono difficili da individuare individua classi di errori differenti rispetto al testing: solitamente sono utilizzati insieme Verifica: analisi strutturale verifica hardware metodo statico diverse tecniche: sintesi: circuiti corretti sono sintetizzati rispetto a delle specifiche di alto livello timing analysis: calcolo dei tempi attesi in un circuito digitale senza simulazione equivalence checking: prova formale che due rappresentazioni di un circuito esibiscono gli stessi comportamenti.. Verifica: emulazione e simulazione tecniche dinamiche per verifica di hardware emulazione: come il testing ma su un emulatore del sistema sotto analisi emulatore: un circuito riconfigurabile che può essere programmato per comportarsi come il circuito considerato simulazione: come il testing ma su un prototipo del sistema è il più utilizzato strumento di verifica per l hardware stessi vantaggi e svantaggi del testing

Verifica: model checking verifica sia per software che hardware metodo statico esaustivo: esplora tutte le esecuzioni di un modello del sistema completamente automatico, testa se il modello soddisfa la specifica, e in caso di risposta negativa genera un contro-esempio (traccia d errore) può provare la correttezza del sistema aggiunge al testing e alla simulazione in termini di individuazione di bugs Osservazioni Fatto 1: nella progettazione ed implementazione dei sistemi, sono investite più risorse nella validazione che nella costruzione Fatto 2: correggere un errore quando il sistema non è stato ancora realizzato costa di meno Fatto 3: molti errori logici sono in genere già presenti sin dal primo prototipo E auspicabile l utilizzo di tecniche di verifica sin dalle prime fasi della progettazione Il model-checking utilizza un modello e quindi può essere utilizzato non appena è disponibile Catching bugs: the sooner, the better Errori dovuti alla concorrenza Difficili da individuare senza una esplorazione esaustiva delle computazioni Impossibile da verificare a mano con prove di correttezza Semplici programmi hanno un numero di esecuzioni elevatissimo, dovuto ai possibili interleaving (interfogliamento) delle esecuzioni dei singoli processi

Un semplice programma concorrente Computazioni z Assenza di sincronizzazioni Comportamento globale si ottiene interfogliando il comportamento di ogni thread Ci sono 1680 modi di interfogliare 3 blocchi di 3 istruzioni ciascuno ogni istruzione occupa un posto da 1 a 9 le istruzioni di ogni thread mantengono l ordine relativo 3 thread asincrone con variabili condivise Due automi finiti Un automa stampa un numero arbitrario di 0 e poi termina L altro stampa un numero arbitrario di 1 e poi termina I processi corrispondenti sono asincroni Ogni sequenza di 0 e 1 può essere generata Tipico errore difficile da individuare con testing e simulation Programma concorrente: proc Inc = while true do if x < 200 then x := x + 1 fi od proc Dec = while true do if x > 0 then x := x 1 fi od proc Reset = while true do if x = 200 then x := 0 fi od Vale l invariante x [0,200]? NO! Controesempio: quando x=200, Dec testa x; allora Reset assegna x con 0; quindi Dec decrementa x. In definitiva, x=-1!

I sistemi concorrenti sono difficili da progettare Algoritmi con una regola fissa Regola di precendenza ad un incrocio i veicoli che procedono da destra hanno sempre la precedenza Problema: tutte le direzioni hanno un veicolo in avvicinamento (deadlock) Dare la precedenza a sinistra non risolve il problema Soluzioni possibili: I veicoli all interno dell incrocio hanno la precedenza Uso di semafori Non sempre queste soluzioni riescono a evitare ingorghi Intervento umano in genere risolve queste situazioni Abbraccio mortale Problema con risorse condivise in pratica Pippo vuole telefonare a Paperino e Paperino vuole telefonare a Pippo Prendono il ricevitore contemporaneamente e non lo lasciano finché non riescono a chiamare (deadlock) Situazioni analoghe accadono nei sistemi operativi quando si devono richiedere due risorse per eseguire un lavoro get A get B rel B rel A get B get A rel A rel B

Un semplice problema di traffico con risorse condivise Regola di priorità: tram verso il centro Sfida: realizzare un sistema di semafori per evitare deadlock e starvation (attesa illimitata) massimizzando l attraversamento dei tram Realizzare sistemi corretti è difficile Regola condivisa di system engineering: I sistemi complessi devono essere costruiti da componenti semplici, ciascuna progettata e testata con alta affidabilità Alcuni problemi tuttavia sono visibili solo a livello di sistema Testare tutti i comportamenti di interi sistemi può essere semplicemente non fattibile i modi di interagire delle componenti sono elevati Incidente aereo in Polonia 14/9/1993 Un aereo Lufthansa Airbus 320-200 con 72 persone a bordo è uscito fuori pista all aeroporto di Varsavia in fase di atterraggio durante un nubifragio (2 morti) Cause dell incidente: l inversione della spinta dei reattori si è attivata in ritardo Le singole componenti dell Airbus non hanno avuto malfunzionamenti e i piloti hanno seguito la procedura correttamente Incidente aereo in Polonia 14/9/1993 Il ritardo è stato causato dal fatto che l inversione della propulsione viene attivata solo quando l aereo è a terra Per l effetto dell acqua-planing il sistema di controllo ha realizzato che l aereo aveva toccato terra con 9 secondi di ritardo Per scoprire questo errore di progettazione nel sistema di controllo occorreva considerare una serie di coincidenze improbabili, difficilmente immaginabili da un essere umano

Cosa ci insegnano questi esempi? La concorrenza è una caratteristica di molti sistemi della vita reale I problemi collegati alla concorrenza non sono casi singolari che si manifestano in remoti angoli dell ingegneria del software E tutt altro che semplice comprendere e prevedere i comportamenti di un sistema concorrente Anche delle regole ovvie possono avere conseguenze inattese Individuazione di errori Non basta analizzare le singole componenti per scoprire i malfunzionamenti Data la complessità, disporre di strumenti automatici è essenziale Il testing in genere non riesce ad individuare alcuni problemi tipici dei sistemi concorrenti limitata osservabilità e riproducibilità per effetto dei comportamenti asincroni concorrenti due esecuzioni di uno stesso test case possono produrre comportamenti differenti Verifica automatica formale Model-checking loop Occorre un metodo diverso di verifica che permetta di prendere in considerazione tutti i possibili comportamenti Model-checking: si considera un modello astratto del sistema e una specifica formale si verifica che il modello rispetta la specifica Fixing Efficace nel rilevare gli errori di progettazione a livello di sistema (e non solo a livello di componente) satisfied Out of memory violated + counterexample

Model-checking process Modeling phase modella il sistema esegui alcune simulazioni per verificare accuratezza modello formalizza la proprietà da verificare Running phase esegui il model-checker per verificare la validità della proprietà nel modello Analysis phase Proprietà soddisfatta? testa la prossima proprietà (se esiste) Proprietà violata? 1. analizza il controesempio generato utilizzando la simulazione 2. raffina il modello, progetto, o proprietà... e ripeti la procedura out of memory? prova a ridurre il modello e riprova Punti di forza del model-checking approccio di verifica generale supporta verifica parziale (le proprietà possono essere verificate individualmente) indipendente dalla probabilità che un errore accada genera controesempi push-button technology l uso del model-checking non richiede nè un elevata interazione con l utente nè un elevato grado di esperienza crescente interesse da parte dei produttori di sistemi digitali può essere facilmente integrato nei cicli di progettazione e sviluppo esistenti può accorciare sensibilmente i tempi di realizzo dei sistemi basato su una solida teoria logica, automi, algoritmi su grafi, strutture dati. Punti deboli del model checking appropriato per sistemi control-intensive meno adatto per sistemi data-intensive (dove i dati sono su domini infiniti) problemi di decidibilità e complessità (state-space explosion problem) verifica un modello e non il sistema vero e proprio qualità dell analisi dipendente dalla qualità del modello verifica solo le proprietà enunciate uso richiede un po di esperienza nel trovare le astrazioni appropriate e nell enunciare le proprietà nel formalismo logico utilizzato è un programma esso stesso può contenere errori