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



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

I metodi formali nel processo di sviluppo del software

Generazione Automatica di Asserzioni da Modelli di Specifica

Automazione Industriale (scheduling+mms) scheduling+mms.

Il Modello Relazionale

Il linguaggio di specifica formale Z

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

Elementi di Informatica e Programmazione

IL SISTEMA INFORMATIVO

1. BASI DI DATI: GENERALITÀ

Tipologie di pianificatori. Pianificazione. Partial Order Planning. E compiti diversi. Pianificazione gerarchica. Approcci integrati

Linguaggi e Paradigmi di Programmazione

Strumenti di modellazione. Gabriella Trucco

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Fasi di creazione di un programma

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

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

Concetti di base di ingegneria del software

Ministero dell istruzione, dell università e della ricerca. Liceo Tecnologico. Indirizzo Elettrico Elettronico

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

Calcolatori: Algebra Booleana e Reti Logiche

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

Verifica del codice con Interpretazione Astratta

Algoritmi e Complessità

Liceo Tecnologico. Indirizzo Elettrico Elettronico. Indicazioni nazionali per Piani di Studi Personalizzati

Esercizi di Metodi e Modelli per l Ingegneria del Software

Artifact Centric Business Processes (I)

PROCESSO DI INDICIZZAZIONE SEMANTICA

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

Introduzione ai Metodi Formali

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

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Elementi di semantica operazionale

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Organizzazione degli archivi

LE RICERCHE DI MERCATO

Analisi dei requisiti e casi d uso

Introduzione alla verifica automatica

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

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.

Algebra di Boole. Le operazioni, nell algebra booleana sono basate su questi tre operatori: AND ( ), OR ( + ),NOT ( )

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

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

Descrizione di un algoritmo

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

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

Come scrivere una proposta progettuale

Introduzione. Il software e l ingegneria del software. Marina Mongiello Ingegneria del software 1

La Metodologia adottata nel Corso

LA REVISIONE LEGALE DEI CONTI La comprensione

Base di dati e sistemi informativi

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Il Modello Relazionale

Protezione. Protezione. Protezione. Obiettivi della protezione

Appunti sulla Macchina di Turing. Macchina di Turing

Idee guida. Finite State Machine (1) Un automa a stati finiti è definito da una 5- pla: FSM = <Q,,, q0, F>, dove: Finite State Machine (2)

Analizzatore lessicale o scanner

CONTENUTI METODOLOGIA STRUMENTI METODO DI STUDIO VALUTAZIONE ANNO COMPETENZE OBIETTIVI DI APPRENDIMENTO

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

Informatica. Scopo della lezione

Cos è. Insieme di: struttura organizzativa (equipe di qualità + capo progetto) responsabilità. procedure. procedimenti. risorse

Programmi. Algoritmi scritti in un linguaggio di programmazione

Modellazione di sistema

Introduzione agli Abstract Data Type (ADT)

Nozione di algoritmo. Gabriella Trucco

Semantica Assiomatica

Planning as Model Checking Presentazione della Tesina di Intelligenza Artificiale

Modellistica e simulazione objectoriented di sistemi meccatronici Gianni Ferretti Politecnico di Milano

Sistemi di Elaborazione delle Informazioni. Corso di Laurea per "Tecnico Ortopedico" 03

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

INFORMATICA GENERALE. Prof Alberto Postiglione Dipartim. Scienze della Comunicazione Univ. Salerno. Università degli Studi di Salerno

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

DISCIPLINA TECNOLOGIE E PROGETTAZIONE DI SISTEMI INFORMATICI E DI TELECOMUNICAZIONI

L insegnamento del Laboratorio di Fisica. Alcune considerazioni didattiche

ALGEBRA DELLE PROPOSIZIONI

Si basano sul seguente Teorema: S = A sse S { A} è insoddisfacibile.

Lezione 2. Il modello entità relazione

PROGRAMMAZIONE COMPETENZE CHIAVE DI CITTADINANZA

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

SISTEMI E RETI 4(2) 4(2) 4(2) caratteristiche funzionali

Programma del Corso. Dati e DBMS SQL. Progettazione di una. Normalizzazione

RISOLUTORE AUTOMATICO PER SUDOKU

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

Introduzione all Information Retrieval

3DE Modeling Professional

Corso di Basi di Dati e Conoscenza

Processo parte VII. Strumenti. Maggiore integrazione. Sviluppo tecnologico

Ministero dell istruzione, dell università e della ricerca. Liceo Tecnologico. Indirizzo Logistica e Trasporti

Università di Pisa Polo Sistemi Logistici Economia e Legislazione dei Sistemi Logistici. Informatica per la Logistica. Lezioni

come nasce una ricerca

Consente alle aziende di raggiungere l obiettivo di totale dematerializzazione della documentazione aziendale. Distribuzione documentale

Linguaggi. Claudio Sacerdoti Coen 11/04/ : Semantica della logica del prim ordine. Universitá di Bologna

Indirizzo odontotecnico a.s. 2015/2016

Legge e apprende nozioni in qualsiasi lingua, le contestualizza ed è in grado di elaborarle e riutilizzarle quando serve

IBM Software Demos Rational Software Delivery Platform - Test automatizzato

Istituto d Istruzione Secondaria Superiore M.BARTOLO. A cura del Prof S. Giannitto

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

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

Transcript:

Metodi formali per la verifica dell affidabilità di sistemi software (e hardware) (Peled, Software Reliability Methods, cap. 1) Importanza della verifica di sistemi (safety-critical, commercially critical, mission critical) Il baco del 2000: gli US spesero più di 100.000 milioni di dollari per combattere il Y2K-bug. Non successe niente. Sistemi SW controllano gran parte della nostra vita (telefoni, banche, aerei,...) Lo sviluppo del SW è cambiato coinvolge decine o centinaia di programmatori su uno stesso progetto migliaia/milioni di linee di codice persone dislocate Difficoltà di controllare il processo di sviluppo del SW metodologie di progettazione metodi formali per identificare errori Problema della validazione di un progetto: assicurare la correttezza del progetto fin dai primi stadi dello sviluppo: simulazione e test verifica formale 1

Metodi Formali per la verifica di sistemi Collezione di notazioni e tecniche per descrivere a analizzare sistemi Formali: basati su qualche teoria matematica (logica, automi, teoria dei grafi) Verifica: applicazione di una tecnica manuale o automatica che possa aiutare a stabilire se un sistema soddisfa una data proprietà o si comporta in accordo a una specifica data. Una tecnica di verifica formale include: 1. Una metodologia per modellare sistemi: rappresentare un sistema in termini di oggetti matematici, astraendo e semplificandone la descrizione 2. Un linguaggio di specifica, per descrivere le proprietà del sistema modellato. Si utilizzano formalismi logici, in genere una logica temporale. 3. Un metodo di verifica: tecniche di analisi formale per verificare se un sistema soddisfa la sua specifica. Quindi escludiamo i metodi di test, che agiscono sul sistema reale (e non coprono comunque tutte le esecuzioni possibili). Limiti intrinseci dei metodi formali: non garantiscono la correttezza del sistema, ma di qualche suo modello astratto (costruito manualmente) la formulazione della specifica è eseguita manualmente, può essere incompleta 2

Approcci fondamentali alla verifica di sistemi Verifica deduttiva. Inizialmente con lo scopo di assicurare la correttezza di un programma. Il sistema è descritto da un insieme di formule S (in una logica adatta allo scopo), la specifica è una formula A. Il metodo di verifica consiste nel dimostrare che S A. Normalmente non sono metodi completamente automatizzabili. Influenza sullo sviluppo del SW: nozione di invariante. Verifica basata su model checking. Il sistema è rappresentato da una struttura matematica M, rappresentabile in modo finito, che corrisponde a un interpretazione o un insieme di interpretazioni di una logica (adatta allo scopo). La specifica è una formula A. Il metodo di verifica consiste nel dimostrare che M = A. Il metodo di verifica è generalmente automatizzabile. Applicabile a sistemi a stati finiti (dove l insieme di valori che può assumere ciascuna variabile è finito). Metodi adatti a verificare protocolli di comunicazione, sistemi concorrenti, o rappresentazioni astratte di algoritmi. L applicazione di metodi formali di verifica è oggi spesso integrata nel processo di sviluppo del SW (piuttosto che eseguita a posteriori): metodologia di sviluppo per raffinamenti (specifica e test), conservando la correttezza da uno stadio dello sviluppo al successivo. 3

Verifica automatica Restrizione teorica: la verifica completamente automatica di tutti i programmi è impossibile (indecidibilità del problema della fermata). restringere la classe di programmi (programmi a stati finiti) verificare soltanto le parti cruciali del programma semplificare il programma mediante astrazione (manualmente) usare metodi di verifica semi-automatica Verifica di programmi a stati finiti: lo spazio degli stati si può visitare come un grafo a partire da I, ad esempio per verificare le invarianti. Programmi a stati finiti rappresentabili mediante sistemi di transizioni basati su un linguaggio proposizionale. Rappresentazione degli stati: importante non distinguere stati che sono essenzialmente lo stesso. Spesso sono mantenuti in una tabella hash e si usano tecniche di compressione. 4

Notazioni e terminologia del libro: Logica del primo ordine (Peled, Cap. 3) Segnatura (linguaggio) G = (V, F, R) contiene un insieme di variabili V, un insieme di simboli funzionali F e un insieme di simboli di relazione R. terms(g): insieme dei termini forms(g): insieme delle formule Struttura del primo ordine (linguaggio + interpretazione) S = (G, D, F, R, f) dove: G è una segnatura (V, F, R) D un insieme (il dominio) F un insieme di funzioni su D R un insieme di relazioni su D f la funzione di interpretazione semantica f : F R F R associa una funzione a ogni simbolo funzionale e una relazione a ogni simbolo di relazione, conservando la arità Noi utilizzeremo il simbolo M (eventualmente con indici) per indicare una interpretazione (D, F, R, f) o semplicemente (D, f) di una segnatura. Assegnazione a : V D a[d/v]: variante di a che assegna d a v 5

Interpretazione di termini e formule Interpretazione semantica dei termini: T a : terms(g) D Interpretazione delle formule: M a : forms(g) {TRUE, FALSE} a = S ϕ : (S, a) = ϕ cioè M a (ϕ) = TRUE = S ϕ : S = ϕ (per ogni a, a = S ϕ) 3.8: presenta PVS Riferimenti a mechanized thorem provers 6