Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 – Modelli di fase d’analisi Ernesto Damiani Università degli Studi di Milano Lezione 14 – Linguaggi di specifica formale
Specifica formale Spesso non è facile capire la semantica di un programma direttamente dal codice Serve la descrizione del comportamento che non è facile ottenere con i modelli visti in precedenza Esempio – Cosa fa questo programma: int f(int a) {int i,term,sum; term=1;sum=1; for (i=0;sum<=a;i++){ term=term+2; sum=sum+term:} return i; }
Linguaggi di specifica Sono linguaggi per la descrizione del comportamento dei programmi Possono essere usati in fase di analisi (specifica); più spesso si usano come documentazione di software scritto in linguaggi eseguibili Obiettivo: dimostrare formalmente che un programma ha o non ha una certa proprietà o comportamento – Esempio: esaurimento memoria
Il linguaggio Z Proposto da J. R. Abrial nel 1977, oggi uno standard ISO Utilizzato all’IBM per il progetto CICS Basato sulla notazione matematica degli insiemi e sulla logica del primo ordine
Definizione assiomatica in Z f N->N _________ a N f(a)*f(a)<=a<(f(a)+1)(f(a)+1) f N->N corrisponde a int f(int ) ma dice anche che f non è definita sui negativi e che il valore di ritorno sarà sempre positivo aN f(a)*f(a)<=a<(f(a)+1)(f(a)+1) corrisponde al corpo della funzione, e fornisce una definizione non-costruttiva della funzione stessa la funzione è specificata tramite un invariante, cioè un predicato sempre vero
Un text editor: esempio di schema Z (1)
Un text editor: esempio di schema Z (2) Stato: contenuto della memoria del sistema Schema di stato: invarianti che riguardano lo stato
Schema di inizializzazione Stato iniziale del sistema In Z si chiama convenzionalmente Init ___ Init ____ Editor ___________ Left=right=<> Stato: Init include Editor nella parte dichiarativa. Gli invarianti di Editor si applicano anche a Init
Schemi operativi Gli schemi operativi modellano le variazioni degli stati FINE