Il problema affrontato nel corso è quello della specifica formale di sistemi software e/o hardware.
Con specifica formale si intende la rappresentazione del sistema considerato utilizzando un linguaggio (linguaggio o formalismo di specifica) per il quale siano formalmente definite:
La semantica formale del linguaggio di specifica permette di associare ad ogni descrizione (specifica) una struttura matematica (semantica della specifica).
Esempio: UML ha una sintassi ben definita ma non una semantica formale accettata.
La descrizione riguarda usualmente i seguenti aspetti:
Finalità della specifica formale:
Contesto applicativo:
La finalità del corso è quella di introdurre i concetti, i problemi e le tecniche di base della specifica formale.
L’attenzione si concentra sui seguenti aspetti:
Scelta del formalismo di specifica
Numerosi sono i formalismi presenti in letteratura e ciascuno usualmente meglio si adatta ad una specifica categoria di problemi.
Alcuni formalismi sono supportati da TOOL di specifica e verifica.
Scelta degli aspetti rilevanti da introdurre nella specifica
In funzione della successiva attività di verifica, vanno rappresentati tutti gli aspetti rilevanti del problema tralasciando eventualmente (astrazione) i dettagli non utili allo scopo.
Espressione delle proprietà che la specifica deve soddisfare
Pur essendo strettamente connessa con l’attività di verifica (e trattata superficialmente nel corso), questa attività può richiedere attenzione ed accorgimenti in fase di specifica.
Formalismi stato-transizione
Idea: Rappresentazione grafica degli stati globali e delle transizioni di stato innescate da un evento.
Ricadono in questa categoria di formalismi:
Automi regolari, Macchine di Mealy, di Moore, Statecharts di UML, Automi a pila, Macchine ricorsive, Automi temporizzati etc.
Reti di Petri
Idea: Rappresentazione grafica di stati spazialmente distribuiti (Place) contenitori di elementi informativi (token) e di transizioni che connettono Place.
Lo scatto della transizione dipende dal contenuto dei Place e lo altera.
Algebre di processi
Idea: I processi sono composti a partire da processi elementari mediante operazioni e assumono la forma di espressioni algebriche (termini).
Un termine rappresenta il sistema e il suo stato.
Le regole di trasformazione dei termini (semantica delle operazioni) determinano il comportamento del sistema.
Esempi di formalismi: CCS, CSP, Pi-calculus etc.
I formalismi esaminati in questo corso appartengono alla categoria dei formalismi Stato-Transizione
Vantaggi:
Rappresentazione in forma di grafo
Elementi costitutivi:
Struttura generale di una transizione:
Trigger
Condizione per lo scatto della transizione dipendente da stimoli esterni al sistema (ambiente);
Condizione
Condizione per lo scatto della transizione dipendente da stimoli interni al sistema (ad esempio contenuto delle strutture dati);
Azione
Side effect dello scatto della transizione (ad esempio, output verso l’ambiente o aggiornamento delle strutture dati).
Nel corso si considerano formalismi sia in grado di descrivere sistemi a stati finiti, sia a stati infiniti.
L’infinitezza delle stato può essere determinata da:
Formalismi per sistemi a stati finiti considerati nel corso
Formalismi per sistemi a stati infiniti considerati nel corso
I formalismi verranno confrontati in relazione ai seguenti Criteri
Espressività
Naturalezza descrittiva
I formalismi verranno confrontati in relazione ai seguenti Criteri
Succintezza
Proprietà di chiusura
I formalismi verranno confrontati in relazione ai seguenti Criteri
Proprietà di decidibilità e complessità
Tecniche e tool di verifica
Il fine principale della specifica formale è di fornire unmodello formale del sistema che permetta la verifica (semi-)automatica delle proprietà attese. Rilevante la presenza di ambienti che permettano:
1. Introduzione ai metodi formali di specifica
2. Semantica dei formalismi di specifica
3. Astrazione e Bisimulazione debole
4. FSM: Macchine a Stati Finiti
5. FSM: Non-determinismo e succintezza
7. FSM e Parallelismo – seconda parte
8. FSM e Parallelismo – terza parte
9. Promela
10. Specifica e verifica in SPIN
11. Proprietà di liveness in SPIN
12. Specifica di proprietà in Logica Temporale Lineare
13. Comportamenti infiniti: Automi di Büchi
14. Model checking di LTL basato su automi
15. Specifica di sistemi real time: Automi Temporizzati
16. Proprietà degli Automi Temporizzati
17. Problemi di decisione negli Automi Temporizzati
18. Il sistema di verifica UPPAAL