Metodi formali nel software
a.a.2013/2014
Prof.Anna Labella
12/21/2015
1
Cos’è l’informatica?
Tra analitico a priori (matematica)
 e sintetico a posteriori (scienze della
natura) . . .
 Dove collochiamo l'informatica?
Gilles Dowek (2013): informatica scienza
analitica a posteriori.

12/21/2015
2
Dal mondo dell’industria
Research in Software Engineering (RiSE)
Microsoft's Research in Software Engineering in Redmond,
USA.
“Our mission is to advance the state of the art in SE,
to bring those advances to Microsoft’s business,
and to take care of those SE technologies that
are critical to the company,
but not inherently linked to particular products.”
Logic is the calculus of computation
Amir Pnueli.
RiSE understands the importance of logic and
builds powerful inference engines that
help understand complex systems.▪
Tools: Z3 ...
Projects: DKAL LAI L&F M3
12/21/2015
3
Questo insegnamento prevede
un'introduzione ai metodi formali per la specifica,
sviluppo e verifica di software
si propone di introdurre le principali metodologie formali,
e mostrare come queste vengano applicate
nel ciclo di vita del software
Libro di testo: non c’è un vero libro di testo;
tutte le lezioni saranno a disposizione
indicazioni verranno date per i singoli argomenti
Una linea di svolgimento si può trovare su
Understanding formal methods J.-F. Monin Springer, ©2003
Ma è molto più utile
4
12/21/2015
Logic in Computer Science Huth Ryan (2° edizione)
•necessità di una formalizzazione dei requisiti
per la produzione del software,
•il problema della formalizzazione,
comunque necessaria per produrre software:
•tradurre requisiti espressi nel linguaggio
corrente ed in forma vaga a
condizioni per lo sviluppo del software
12/21/2015
5
• il problema di produrre un software
sicuro nel senso dell'assoluta
affidabilità:
• esempi di situazioni critiche
• economia della formalizzazione
12/21/2015
6
•da un linguaggio semi-formale e
sostanzialmente grafico: statecharts e UML
•ad uno formale per “parlarne”.
•Poi bisogna scegliere il tipo di linguaggio
con il quale conviene programmare
ed in base a questo, cioè alle sue primitive
•farne un modello matematico.
12/21/2015
7
Oltre la formalizzazione, un metodo di prova
.
12/21/2015
8
cos’è un metodo?

Qualcosa che dà i mezzi per
raggiungere un certo scopo

Esempio: la fisica

In informatica siamo ancora indietro
12/21/2015
9
Un esempio di metodo formale in azione: I compilatori
Un compilatore è un programma (o un insieme di programmi)
che trasforma il codice sorgente (scritto in un certo linguaggio
di programmazione)
in un altro linguaggio creando un programma eseguibile
Un compilatore di solito esegue le seguenti operazioni:
Analisi lessicale, preprocessing, parsing, analisi semantica,
generazione del codice, ottimizzazione del codice.
Il contesto matematico? La teoria dei linguaggi formali
12/21/2015
10
Siamo a livello di metalinguaggio

A cosa porta l’uso di metodi formali?
12/21/2015
11
Introduzione di nuovi concetti

Ciclo di vita del software

Valutazione dei costi delle diverse fasi

Valutazione del costo degli errori di
progettazione
12/21/2015
12
Prevenzione degli errori

Gli errori non sono soltanto costosi e
difficili da correggere

Si possono dare situazioni critiche
12/21/2015
13
Il primo volo dell'Ariane 5 (Ariane 5 volo 501)
svoltosi il 4 giugno 1996 fallì e il razzo si autodistrusse
dopo 40 secondi dal lancio per via di un malfunzionamento
del software di controllo, creato da uno dei più famosi
bug della storia. Un dato a 64 bit in virgola mobile,
probabilmente quello della pressione, venne convertito
in un intero a 16 bit con segno, questa operazione causò una
trap del processore (operazione errata): il numero in virgola
mobile era troppo grande per poter essere rappresentato
con un intero a 16 bit. Motivi di efficienza avevano
spinto i progettisti a disabilitare il controllo software
(scritto in Ada) sulle trap, anche se altre conversioni
simili nel codice erano corrette. Questo errore scatenò
una reazione a catena che causò poi la deviazione
distruttiva del razzo a causa delle enormi forze aerodinamiche.
Fu necessario quasi un anno e mezzo per capire
quale fosse stato il malfunzionamento che aveva portato
14
12/21/2015
alla distruzione del razzo.
Perché usare la formalizzazione?
A livello di specifica dei requisiti serve a
capire quali siano effettivamente i
bisogni e
 a controllare la validità di certe proprietà
che si richiedono (prototipazione
veloce)

12/21/2015
15
Un linguaggio di specifica deve:

Essere formale

Basato su una teoria matematica (semantica)

Consentire dimostrazioni di proprietà

Permettere lo sviluppo di tools di supporto
12/21/2015
16
Vantaggi

La verifica delle proprietà da soddisfare
viene fatta a priori

Non si tratta di un test per casi, ma di

una prova fornita insieme al software
prodotto
12/21/2015
17
Difficoltà
Rigidità di una qualunque
formalizzazione, soprattutto nei casi
complessi
 Acquisizione di un nuovo “linguaggio”


Lentezza iniziale
12/21/2015
18
Una panoramica

Una teoria
Sistemi di transizione
Teoria degli insiemi
Algebra universale
Lambda-calcolo, ecc.
 Un campo di applicazione
Data processing
Sistemi real-time
Protocolli, ecc.
 Una comunità di utilizzo
12/21/2015
19
Metodi specifici e metodi
generali

Modellare i singoli aspetti del sistema
software: architetture, interfacce,
comportamenti visibili, algoritmi…

Fornire un contesto matematico: si
rinviano le scelte, ma spesso si è poco
“metodologici”
12/21/2015
20
La nozione di “stato”

Stati espliciti

Stati impliciti
12/21/2015
21
Specifica e verifica

Ci occuperemo soprattutto di specifica

Rinviando la verifica ad un altro
insegnamento

Ma tenendo conto delle due
12/21/2015
22
Grande varietà di teorie
matematiche
Metodi algebrici (semantica
denotazionale: i termini sono oggetti
algebrici)
 Metodi logici: si studiano proprietà


Processi (semantica operazionale:
metafora della macchina astratta)
12/21/2015
23
Programma
Logiche temporali e Model checking
 Logica di Hoare e verifica di programmi
 Sistemi reattivi e logica di HennessyMilner
 Strutture d’ordine e semantica
denotazionale

12/21/2015
24
…..esame
Un progetto in collaborazione e un
colloquio orale su una parte del
programma, oppure
 Un colloquio orale su tutto il programma
 Il colloquio su una parte del programma
è alternativo ad una prova intermedia
scritta

12/21/2015
25
Scarica

Lezione1.5_3_2014