I metodi formali nel processo di sviluppo del software



Documenti analoghi
Metodo delle Abstract State Machines per l analisi e il design

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)

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

Organizzazione degli archivi

Esempio - Controllo di un ascensore

Elementi di semantica operazionale

Fasi di creazione di un programma

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

Introduzione ai tipi di dato astratti: applicazione alle liste

Lezione 8. La macchina universale

Macchine sequenziali

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

Descrizione di un algoritmo

Modellazione di sistema

Concetto di Funzione e Procedura METODI in Java

Elementi di semantica denotazionale ed operazionale

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

Concetti di base di ingegneria del software

Funzioni in C. Violetta Lonati

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:

Progettazione della componente applicativa

Stefania Marrara - Esercitazioni di Tecnologie dei Sistemi Informativi. Integrazione di dati di sorgenti diverse

Introduzione ai Metodi Formali

Programmi e Oggetti Software

Progettaz. e sviluppo Data Base

Protezione. Protezione. Protezione. Obiettivi della protezione

Algebra Booleana ed Espressioni Booleane

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Corso di Informatica

ISTITUTO TECNICO ECONOMICO MOSSOTTI

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

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

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.

Introduzione alla programmazione in C

Programmazione Funzionale

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

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

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Progettazione di Basi di Dati

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Strumenti di modellazione. Gabriella Trucco

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Database. Si ringrazia Marco Bertini per le slides

FONDAMENTI di INFORMATICA L. Mezzalira

Gli algoritmi: definizioni e proprietà

GESTIONE INFORMATICA DEI DATI AZIENDALI

ALGEBRA DELLE PROPOSIZIONI

Sequence Diagram e Collaboration Diagram

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

MODELLO RELAZIONALE. Introduzione

Macchine a stati finiti. Sommario. Sommario. M. Favalli. 5th June 2007

Automazione Industriale (scheduling+mms) scheduling+mms.

Corso di Laurea in INFORMATICA

Macchine a stati finiti. Sommario. Sommario. M. Favalli. Le macchine a stati si utilizzano per modellare di sistemi fisici caratterizzabili mediante:

Esercitazione di Basi di Dati

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

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

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Alessandra Raffaetà. Basi di Dati

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.

LINGUAGGI DI PROGRAMMAZIONE

Codifiche a lunghezza variabile

Corrispondenze e funzioni

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Algoritmi e Strutture Dati

Generazione Automatica di Asserzioni da Modelli di Specifica

Metodi Stocastici per la Finanza

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Ciclo di vita dimensionale

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

RISOLUTORE AUTOMATICO PER SUDOKU

Reti sequenziali sincrone

Testi di Esercizi e Quesiti 1

Progetto PI , passo A.1 versione del 14 febbraio 2007

CPU. Maurizio Palesi

IL SISTEMA INFORMATIVO

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

I file di dati. Unità didattica D1 1

Introduzione all Information Retrieval

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Matematica in laboratorio

INFORMATICA 1 L. Mezzalira

Alcune nozioni di base di Logica Matematica

Semantica Assiomatica

Appunti sulla Macchina di Turing. Macchina di Turing

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Ciclo di vita del progetto

Origini e caratteristiche dei calcolatori elettronici

Definizione di nuovi tipi in C

Esercizi Capitolo 6 - Alberi binari di ricerca

Object Oriented Programming

Oggetti Lezione 3. aspetti generali e definizione di classi I

Corso di Calcolo Numerico

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Transcript:

I metodi formali nel processo di sviluppo del software I metodi formali consentono di creare una specifica più completa, uniforme e non ambigua di quelle prodotte usando i metodi convenzionali ed orientati agli oggetti Questa specifica matematica può essere dimostrata corretta ed eseguita ad alto livello (nel caso si utilizzino linguaggi di specifica eseguibili) Bisogna avere delle conoscenze specifiche Da usare per specificare sistemi critici per la sicurezza o per la missione I metodi formali riducono notevolmente gli errori di specifica. Consentono di creare software con una quantità di errori più limitata 1

Metodo delle Abstract State Machines per l analisi e il design Metodo per l ingegneria dei sistemi che guida lo sviluppo del software dalla cattura dei requisiti alla loro implementazione Aiuta lo sviluppatore a gestire la dimensione, la complessità e l affidabilità del sistema Comprende in un unico framework concettuale le attività di analisi e design L affidabilità del software può essere supportata e giustificata attraverso la verifica (tecniche di ragionamento) e la validazione (simulazione e testing) già dalle fase iniziali del processo di sviluppo 2

Metodo delle Abstract State Machines per l analisi e il design Il metodo migliora il processo di sviluppo in due direzioni Modellazione di alto livello accurata, al livello di astrazione determinato dal dominio di applicazione Connessione delle descrizioni nei diversi stadi del processo di sviluppo attraverso una catena organica di rigorosi e coerenti modelli del sistema (a livelli di astrazione via via più raffinati) Contrariamente ad UML, il metodo ha fondamenti matematici che aggiungono precisione alla operatività del metodo 3

Metodo delle Abstract State Machines per l analisi e il design Concetto di Abstract State Machine Costruzione del modello ground Passi di raffinamento 4

Concetto di Abstract State Machine Le Abstract State Machines sono un modello computazionale con una notazione rigorosa dal punto di vista matematico comprensibile da chi è coinvolto nella pratica della programmazione 5

Abstract State Machines Basic ASMs Non determinismo e parallelismo senza restrizioni Programmi flat Turbo ASMs Composizione sequenziale e iterazione Chiamate ricorsive ASMs multi-agente Sincrone Asincrone 6

Piccolo esempio di ASM CLOCK = if DisplayTime + Delta = CurrTime then DisplayTime := CurrTime E possibile separare la descrizione della guardia della regola dalla regola stessa definendo ClockTick = (DisplayTime + Delta = CurrTime) SUSTAIN(signal) = if ClockTick then EMIT(signal) In questo caso il segnale è CurrTime ed EMIT(CurrTime) significa porre DisplayTime := CurrTime 7

Un altro piccolo esempio di ASM The game of life CONWAY(c) = if aliveneighb(c)=3 then alive(c) := true if aliveneighb(c)< 2 or aliveneighb(c)> 3 then alive(c) := false In ogni stato della loro vita, tutte le cellule eseguono la loro regola della vita simultaneamente. Ciò viene espresso in questo modo GAMEOFLIFE = forall c Cell do CONWAY(c) 8

Stati Astratti Gli stati delle ASM sono delle strutture della logica del I Ordine, ma possono essere pensati come delle memorie astratte Il vocabolario Σ è una collezione finita di simboli funzionali: ogni simbolo funzionale ha un arietà, i nomi di funzioni nullari vengono detti costanti i simboli di funzione possono essere statici (fra cui undef, true, false) o dinamici (monitorati, controllati, condivisi e di output) 9

Stati Astratti (ctnd.) Uno stato S sul vocabolario Σ è una coppia (D,I) dove D è il dominio ed I la funzione interpretazione dei simboli funzionali in Σ. D è anche detto il base set dello stato E possibile definire funzioni parziali Una relazione ha sempre valori true, false, undef Nelle applicazioni D viene spesso suddiviso in universi più piccoli 10

Locazioni e aggiornamenti In uno stato i simboli di funzione e gli argomenti delle funzioni sono le locazioni di memoria mentre i valori delle funzioni sono i loro contenuti Una locazione di uno stato S è una coppia (f, (a 1,...,a n )) dove f è un simbolo funzionale n-ario ed a 1,...,a n sono elementi del dominio D. Il valore f I (a 1,...,a n ) è il contenuto della locazione in S Un aggiornamento per S è una coppia (l,v) dove l è una locazione di S e v un elemento di D. Un insieme di aggiornamenti U viene detto consistente se non ha aggiornamenti in collisione, cioé se per ogni locazione l e tutti gli 11

elementi v,w, è vero che se (l,v), (l,w) U, allora v = w 12

Come ottenere un nuovo stato? Se un insieme di aggiornamenti consistente U viene sparato in un dato stato il risultato è uno stato nuovo In questo nuovo stato, il contenuto delle locazioni non considerate nell insieme U rimarrà invariato. Per ogni (l,v) in U invece, il contenuto della locazione l nel nuovo stato sarà proprio v. Se un insieme di aggiornamenti U consistente viene sparato su uno stato S, il nuovo stato risultante S + U viene determinato univocamente 13

Ma da dove viene un insieme di aggiornamenti? Ogni ASM è dotata di un programma La sintassi dei programmi ASM è definita attraverso le regole di transizione ASM Interpretando il programma ASM nello stato corrente, viene determinato un insieme di aggiornamenti che, sparati sullo stato corrente determinano il nuovo stato 14

Regole di transizione per ASM Basic Skip rule Update rule Block rule skip f(s 1,...,s n ) := t P par Q Conditional rule if ϕ then P else Q Let rule Forall rule Choose rule let x = t in P forall x with ϕ do P choose x with ϕ do P 15

Utilizzo delle regole di transizione sugli stati...... allo scopo di determinare nuovi stati Sia P una regola di transizione costruita con i simboli nel vocabolario Σ Sia S = (D,I) uno stato per il vocabolario Σ: tutti i simboli funzionali saranno interpretati sul dominio D, a tutte le variabili verrà assegnato un valore di D. In particolare ogni update rule del tipo f(t 1,...,t n ) := t contenuta in P diventerà un aggiornamento (l,v) L insieme di questi aggiornamenti U verrà sparato su S ottenendo lo stato successore 16

Dichiarazione di regola Una dichiarazione di regola per un simbolo di regola r di arietà n è una espressione r(x 1,...,x n ) = P, dove P è una regola di transizione e le variabili libere di P sono contenute nella lista x 1,...,x n In una chiamata ad una regola r(t 1,...,t n ) le variabili x i vengono sostituite con i parametri t i Non ci sono variabili globali. I parametri formali della testa sono le sole variabili che occorrono libere nel corpo della dichiarazione della regola 17

Definizione di Abstract State Machine Una abstract state machine M consiste in un vocabolario Σ, un insieme di stati iniziali per Σ, un insieme di dichiarazioni di regole, un simbolo di regola distinto di arietà 0 detto la main rule della macchina 18

Mossa di una ASM Diciamo che una macchina M può fare una mossa da uno stato S 1 ad uno stato S 2 e scriviamo S 1 M S 2 se la main rule di M restituisce un insieme di aggiornamenti consistente U partendo dallo stato S 1 e se S 2 = S 1 + U Gli aggiornamenti in U vengono detti aggiornamenti interni in modo da distinguerli dai possibili aggiornamenti di locazioni monitorate o condivise. S 2 viene detto lo stato interno successivo 19

Computazione (run) di una ASM Una computazione di una ASM comincia in uno stato iniziale della macchina Non appena la macchina fa una mossa, la run procede, richiedendo solo che le mosse dell ambiente (che avvengono nel frammezzo) che aggiornano le locazioni monitorate e condivise producano uno stato nuovo per la mossa successiva Se in uno stato la macchina non può produrre un insieme di aggiornamenti consistente, oppure non è in grado di produrre nessun insieme di aggiornamento, lo stato viene considerato l ultimo della computazione A causa del non-determinismo della regola choose una ASM può avere diverse computazioni parallele dallo stesso stato iniziale 20

Computazione (run) di una ASM (ctnd. 1) Sia M una ASM con vocabolario Σ. Una computazione di M è una sequenza finita o infinita S 0,S 1,S 2,... di stati per Σ tali che S 0 è uno stato iniziale di M per ogni n, o M può fare una mossa da S n al successivo stato interno S n e l ambiente produce un insieme consistente di aggiornamenti esterni o condivisi U tali che S n+1 = S n + U, oppure M non può fare una mossa in uno stato S n ed S n è l ultimo stato della computazione 21

Esempio - parallelismo sincrono limitato Applicazione di forall a insiemi finiti di cardinalità limitata da un n fissato n macchine funzioni statiche: mod, funzione successore, uguaglianza sui numeri naturali CYCLETHRU(R0,...,R n ) = forall i n do if cycle = i then R i cycle := (cycle +1) mod (n + 1) Un caso speciale frequente è ALTERNATE(R,S) 22