Il linguaggio di specifica formale Z



Documenti analoghi
INGEGNERIA DEL SOFTWARE

LINGUAGGI DI PROGRAMMAZIONE

Lezione 8. La macchina universale

Funzioni in C. Violetta Lonati

Il Modello Relazionale

Corso di Informatica

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

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

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

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

(anno accademico )

4 3 4 = 4 x x x 10 0 aaa

Ingegneria del Software 5. Esercizi sui casi d uso. Dipartimento di Informatica Università di Pisa A.A. 2014/15

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Variabili e tipi di dato

Object Oriented Software Design

DATABASE RELAZIONALI

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Protezione. Protezione. Protezione. Obiettivi della protezione

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

RISOLUTORE AUTOMATICO PER SUDOKU

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari

Access. P a r t e p r i m a

Algebra Booleana ed Espressioni Booleane

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

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

Guida alla redazione del Fascicolo XBRL

Semantica Assiomatica

Calcolatori Elettronici A a.a. 2008/2009

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

Laboratorio di Informatica

ISTRUZIONI CHIUSURA / APERTURA CONTABILE GAMMA ENTERPRISE/SPRINT

Introduzione al MATLAB c Parte 2

Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota

Gestione delle tabelle

EXCEL FUNZIONI PRINCIPALI

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

Modellazione dei dati in UML

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Nozione di algoritmo. Gabriella Trucco

Registratori di Cassa

Definizione di domini

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE SOGGETTI INCARICATI MANUALE UTENTE VERSIONE 1.0

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

La Progettazione Concettuale

INFORMATICA 1 L. Mezzalira

Note per generazione file.txt per invio trimestrale V.P. all AGENZIA DELLE ENTRATE

I database relazionali (Access)

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

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Procedure memorizzate SQL-2003/PSM. Forma base di PSM. Parametri in PSM

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

PROCESSO DI INDICIZZAZIONE SEMANTICA

GUIDA UTENTE PRIMA NOTA SEMPLICE

Cosa è una macro? strumento per automatizzare delle operazioni fatte con un programma. istruzione complessa, composta da più istruzioni elementari

Gestione Rapporti (Calcolo Aree)

Gestione Manutenzioni Immobiliari.

Ricorsione in SQL-99. Introduzione. Idea di base

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

EUROPEAN COMPUTER DRIVING LICENCE / INTERNATIONAL COMPUTER DRIVING LICENCE Database Livello avanzato

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Database 1 biblioteca universitaria. Testo del quesito

Ottimizzazione delle interrogazioni (parte I)

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

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

Operazioni sui database

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Il Modello Relazionale

1 Giochi a due, con informazione perfetta e somma zero

WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.

Capitolo 13. Interrogare una base di dati

Elementi di Algebra Relazionale

Soluzione dell esercizio del 2 Febbraio 2004

H1 Hrms Gestione eventi/scadenze automatiche

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Diagrammi dei package

PROGETTO TESSERA SANITARIA FORNITURA DA PARTE DEL MINISTERO DELLA SALUTE DELL ELENCO NAZIONALE DELLE DISCIPLINE (DECRETO 2 NOVEMBRE 2011)

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Il calcolo delle provvigioni con Excel

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Gestione Turni. Introduzione

ALGEBRA DELLE PROPOSIZIONI

Memorie ROM (Read Only Memory)

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Cosa è un foglio elettronico

Inizializzazione, Assegnamento e Distruzione di Classi

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

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:

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

STRUTTURE NON LINEARI

Demo. La palette allinea. La palette Anteprima conversione trasparenza. Adobe Illustrator CS2

La rubrica degli indirizzi di posta elettronica associati al dominio scuole.piemonte.it

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Progettazione del Software A.A.2008/09

Transcript:

Il linguaggio Z (Spivey, 1992) Il linguaggio di specifica formale Z Sviluppato presso l Università di Oxford (UK) Basato su FSM Applicato in ambito industriale Dotato di numerose estensioni (Object Z, Real time Z,..) Esistono tool Marina Zanella - Ingegneria del Software Linguaggio Z 1

Specifica in Z Ogni sistema sw è specificato mediante schemi, che definiscono: Proprietà statiche (a) Variabili di stato (b) Relazioni invarianti fra le variabili di stato Proprietà dinamiche (c) Operazioni legali (d) Effetti delle operazioni, sia in termini di I/O, sia di cambiamenti di stato Marina Zanella - Ingegneria del Software Linguaggio Z 2

Uno schema Z Schema name Schema signature Schema predicate Nome dello schema Parte dichiarativa (variabili, funzioni, ) Parte semantica (relazioni, effetti, ) basata sulla teoria degli insiemi e la logica del primo ordine Marina Zanella - Ingegneria del Software Linguaggio Z 3

Un esempio: l elenco dei compleanni Tipi base: [NAME, DATE] Non è necessario dettagliarli BirthdayBook known : PNAME birthday : NAME a DATE dom(birthday) = known // variabile di stato, rappresenta le persone conosciute // P indica il tipo set del tipo associato, qui NAME // in alcune fonti, anziché P si usa {}, es. {NAME} // funzione (a ogni elemento del dominio // fa corrispondere un solo elemento del codominio) // invariante: l elenco contiene i compleanni // solo di persone note // dom indica il dominio, rng il codominio Marina Zanella - Ingegneria del Software Linguaggio Z 4

Aggiunta di operazioni AddBirthday Inserisce una nuova voce nell elenco modifica lo stato FindBirthday Trova un compleanno, dato il nome di una persona è una interrogazione ( e, come tale, non modifica lo stato) Remind Trova i compleanni che cadono in una data assegnata è una interrogazione Replace Sostituisce una voce preesistente in elenco, che si riferisce alla medesima persona modifica lo stato Delete Cancella una voce in elenco modifica lo stato Marina Zanella - Ingegneria del Software Linguaggio Z 5

Operazioni di modifica AddBirthday BirthdayBook Name? : NAME Date? : DATE Name? known // significa che produce una modifica dello stato // dello schema associato, qui BirthdayBook //? significa che è una variabile d ingresso // precondizioni sulle variabili // prima di eseguire l operazione birthday = birthday {Name? a Date?} // postcondizioni sulle variabili // dopo l esecuzione dell operazione // X (prima), X (dopo) Marina Zanella - Ingegneria del Software Linguaggio Z 6

Osservazione Le specifiche di un operazione che cambia lo stato non dicono cosa succede alle variabili di stato non menzionate nelle postcondizioni, ad es. known, perché le loro variazioni possono essere provate a partire dall invariante // invariante known = dom(birthday ) known = dom(birthday {Name? a Date?}) //postcondizione known = dom(birthday) dom({name? a Date?}) known = known dom({name? a Date?}) // invariante known = known {Name?} Marina Zanella - Ingegneria del Software Linguaggio Z 7

Operazioni di interrogazione FindBirthday Ξ BirthdayBook Name? : NAME Date! : DATE Name? known Date! = birthday(name?) // Ξ significa che è una query //! significa che è una variabile d uscita // precondizione // postcondizione Remind Ξ BirthdayBook Today? : DATE Cards! : PNAME // precondizione Cards! = {n known birthday(n) = Today?} // postcondizione Marina Zanella - Ingegneria del Software Linguaggio Z 8

Operatori Replace BirthdayBook Name? : NAME Date? : DATE Name? known birthday = birthday {Name? a Date?} // è l operatore di overriding // i cui operandi sono due funzioni: per ogni coppia di valori della seconda funzione // (a) sostituisce la coppia corrispondente della prima, se presente // (b) aggiunge la coppia alla prima, altrimenti Marina Zanella - Ingegneria del Software Linguaggio Z 9

Operatori (cont.) Delete BirthdayBook Name? : NAME Name? known < < birthday = {Name?} birthday // è l operatore di sottrazione dal // dominio: l operando di sx è un insieme che appartiene al dominio della // funzione che costituisce l operando di dx. Dalla funzione a dx vengono // rimosse tutte le coppie il cui primo elemento appartiene all insieme a sx Marina Zanella - Ingegneria del Software Linguaggio Z 10

Stato iniziale InitBirthdayBook BirthdayBook known = Marina Zanella - Ingegneria del Software Linguaggio Z 11

Commenti Le specifiche di un operazione (sia di cambiamento, sia di interrrogazione) non dicono cosa succede se le precondizioni non sono verificate. Ad es. Che succede se si tenta di inserire due volte il compleanno della stessa persona? Oppure Cosa succede se si ricerca il compleanno di una persona non in elenco? Si possono produrre specifiche aggiuntive per rispondere a queste domande (le specifiche in linguaggio Z possono essere date incrementalmente), che verranno poi combinate con le specifiche originali (Z è compositivo) Marina Zanella - Ingegneria del Software Linguaggio Z 12

Incrementi Definizione di un nuovo tipo REPORT ::= ok already_known not_known Success result! : REPORT result! = ok AlreadyKnown Ξ BirthdayBook Name? : NAME result! : REPORT Name? known result! = already_known Marina Zanella - Ingegneria del Software Linguaggio Z 13

Incrementi (cont.) NotKnown Ξ BirthdayBook Name? : NAME result! : REPORT Name? known result! = not_known Marina Zanella - Ingegneria del Software Linguaggio Z 14

Composizione degli schemi RAddBirthday (AddBirthday Success) AlreadyKnown // versione robusta di AddBirthday che equivale a RAddBirthday BirthdayBook Name? : NAME Date? : DATE result! : REPORT (Name? known birthday = birthday {Name? a Date?} result! = ok) (Name? known birthday = birthday result! = already_known) Marina Zanella - Ingegneria del Software Linguaggio Z 15

Composizione degli schemi (cont.) RFindBirthday (FindBirthday Success) NotKnown // versione robusta di FindBirthday RRemind Remind Success // versione robusta di Remind Marina Zanella - Ingegneria del Software Linguaggio Z 16

Ulteriori operatori Sequenza: es. seq CHAR Funzione che ha come dominio un intervallo di numeri naturali, ad es. S = {1 a a, 2 a b, 3 a c}, oppure, più sinteticamente S = <a,b,c> Lunghezza di una sequenza: es. #S (vale 3 nel caso dell esempio precedente) Elemento i-esimo di una sequenza S: S(i), dove 1 i #S Campo: es., dato b: BirthdayBook b.known oppure b.birthday(n), dove n b.known Concatenazione di sequenze: es. <a,b> <c> = <a,b,c> Restrizione del dominio di una funzione: es. {Name?} birthday Conserva solo le coppie della funzione a dx il cui primo elemento appartiene all insieme a sx < Marina Zanella - Ingegneria del Software Linguaggio Z 17

Ulteriori operatori (cont.) Restrizione del codominio di una funzione: > es. {10/08, 09/11} birthday Conserva solo le coppie della funzione a dx il cui secondo elemento appartiene all insieme a sx Sottrazione dal codominio di una funzione: > es. {10/08, 09/11} birthday Rimuove dalla funzione a dx tutte le coppie il cui secondo elemento appartiene all insieme a sx Marina Zanella - Ingegneria del Software Linguaggio Z 18

Z: vantaggi e non Vantaggi Prove (semi-automatiche) di correttezza Verifica automatica di completezza e consistenza Spesso usato per le specifiche di sistemi safety-critical (sono utili a tal fine le condizioni invarianti) Problemi Mancanza di costrutti di scope / strutturazione Consente di rappresentare bene le specifiche di basso livello ma non quelle più generali Marina Zanella - Ingegneria del Software Linguaggio Z 19