Sviluppo di Software Sicuro - S 3 Condizioni di verifica - III Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni Università

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Lezione 8 Anno accademico Titolare corso: Prof. Costanza Torricelli
PROGRAMMARE IN PASCAL (le basi)
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Dipartimento di Matematica
Type Checking (1° parte)
Algoritmi e Programmazione
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Informatica Generale Marzia Buscemi
Lez. 121 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Progettazione.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
I TRASFERIMENTI INTERGOVERNATIVI
Anno accademico Array e puntatori in C.
TERNE PITAGORICHE Obiettivi dell’esercitazione
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il ragionamento classico
Cammini minimi con sorgente singola
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Funzioni in Javascript.
Asse Matematico 29 Marzo L'ASSE MATEMATICO.
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
1 Capitolo 2: Semplificazione, Ottimizzazione e Implicazione.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Mastery Learning Mastery Learning 2010.
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Sviluppo di Software Sicuro - S 3 Condizioni di verifica in pratica Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni.
Sviluppo di Software Sicuro - S 3 SPARK – Moduli Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni Università di Pisa.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Modelli e Algoritmi per la Logistica
7 settembre Il mercato del lavoro in Provincia di Treviso Primo semestre 2010.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
OSReT OSSERVATORIO SOCIO-RELIGIOSO TRIVENETO Lalfabetizzazione religiosa degli studenti che si avvalgono dellInsegnamento della Religione Cattolica.
PARMA, 6 MARZO LA PRODUZIONE INDUSTRIALE 2009 E PREVISIONI 2010 Il Parmigiano-Reggiano Nuove opportunità per il futuro Parma, 6 marzo 2010.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Organizzazione del corso
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
VALUTAZIONE IL QUADRO NORMATIVO 1S. Pace - valutazione - settembre 2010.
Le funzioni.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.
La definizione dei gruppi di lavoro
Sistemi e Tecnologie Informatiche Requisiti per la realizzazione di un buon programma.
Realizzazione di un sistema di Raccomandazione in Matlab Tesi di Laurea Specialistica Ingegneria Informatica Niccolò Olivieri – Relatore: Paolo.
BIOINFO3 - Lezione 331 SUBROUTINE IN PERL Una subroutine (funzione, metodo, procedura o sottoprogramma), e` una prozione di codice all`interno di un programma.
Sessione live Testing. Esercizio Quesito 1 Soluzione 1.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
FUNZIONI Dichiarazione: Definizione:
4/5/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Introduzione a Javascript
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
La logica Dare un significato preciso alle affermazioni matematiche
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Transcript della presentazione:

Sviluppo di Software Sicuro - S 3 Condizioni di verifica - III Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni Università di Pisa – Polo di La Spezia C. Montangero Anno accademico 2009/10

Sommario Chiamata di procedure Funzioni Accept S3: VC- C.Montangero - Copyright 20102

CHIAMATA DI PROCEDURE S /10 – Condizioni di verifica – Parte III 3S3: VC- C.Montangero - Copyright 2010

Il problema Come si calcola la wp di una chiamata? – Come una serie di assegnamenti ai parametri out: Dove v è una costante, sempre diversa – denota il valore assegnato Caratterizzata dalla postcondizione della procedura – i valori assegnati soddisfano la postcondizione – ad esempio: D^ Y=Y~*2 (Y è il parametro) L'ipotesi su v dovuta alla postcondizione è – D^[Y/v, Y~/X] v = X*2 S3: VC - C.Montangero - Copyright X=v0 => wp[D(X)]X=v0*4 wp[D(X)]X=v0*4 v =v0*4

Una chiamata non basta Quindi: come prevedibile... ma due sì: S3: VC - C.Montangero - Copyright wp[D(X)] X=v0*4 v=v0*4 and v = X*2 -- all'inizio v0 = X X*4 = X*2 X=0, insufficiente wp[D(X)](v=v0*4 and v = X*2 ) v=v0*4 and v= v1*2 and v1=X*2 -- all'inizio v0 = X v=X*4 and v= v1*2 and v1=X*2 v=X*4 and v= X*2*2 X*4 = X*2*2 true

Run time check sugli argomenti Oltre al controllo sulla rappresentabilità del valore, quello sul rispetto della precondizione: ^D[Par/Arg] Esempio: divisione S3: SPARK - C.Montangero - Copyright procedure div(Ddo, Dre: Natural; Q, R: out Natural); --# pre Dre<>0; --# post Ddo = Q*Dre + R and R < Dre;

Esercizio: wp[div(X,Y,Z,W)]W=0 Considerando anche la precondizione: procedure div(Ddo, Dre: Natural; Q, R: out Natural); --# pre Dre<>0; --# post Ddo = Q*Dre + R; wp[div(X,Y,Z,W)]W=0 (W=0)[Q/q1,R/w1] and div^[Ddo/X,Dre/Y,Q/q1,R/w1] w1=0 and X= q1*Y + w1 cioè X = q1*Y (some q1 =>...) ^div[Ddo/X,Dre/Y,Q/Z,R/W] Dre<>0[Dre/Y] Y<>0

FUNZIONI S /10 – Condizioni di verifica – Parte III 8S3: VC- C.Montangero - Copyright 2010

Specifica delle funzioni Il secondo serve per definire il valore La prima forma per relazione semplice – esprimibili come espressione d'annotazione Esempio: return X+1 ; -- dove X è il parametro S3: VC- C.Montangero - Copyright function_constraints ::= [ --# pre predicate ] [ --# return_expression ] return_expression ::= return annotation_expression | return simple_name => predicate

Specifica delle funzioni (2) La seconda per relazioni più complesse – caratterizza il risultato con un predicato return M => (X > Y -> M = X and Y >= X -> M = Y); -Si legge: restituisci M tale che se X>Y allora M=X, altrimenti M=Y La prima è un'abbreviazione per: return Dummy => ( Dummy = X+1 ) S3: VC - C.Montangero - Copyright

Verifica di una funzione Viene risolta come ^Max -> wp[body]pseudoPost[Dummy/Rexp] – posizione fissa di return... S3: VC - C.Montangero - Copyright body pseudoPost Dummy Rexp

Condizioni di verifica Una tipica, da Max: Ridotta a true da Simplifier. S3: VC - C.Montangero - Copyright function_max_3.... H6: x > y.... -> C1: (x > y) -> (x = x). C2: (x (x = y)....

Chiamata di funzioni S3: VC - C.Montangero - Copyright Data come descrivo il risultato di in Usando la funzione di prova function max(x,y : integer) return integer – implicitamente dichiarata con Max – notare il gioco Maiusc/Minusc ?

Funzioni di prova wp[R:=Max(F1,F2)]R=max(F1,F2) Max(F1,F2) = max(F1,F2) max(F1,F2) = max(F1,F2) true... purchè Max sia corretta! S3: VC - C.Montangero - Copyright

Documentazione Le definizioni e il teorema di correttezza – nel file.rul per il Proof Checker... Codice in funzioni\max.adb S3: VC - C.Montangero - Copyright function max(x,y : integer) return integer; -- Def: ( x>=y -> max(x,y) = x ) and ( x max(x,y) = y ) ; -- Th (di correttezza): Max(x,y) = max(x,y); -- prova: max.siv 28-APR-2010, 21:54:01

ANNOTAZIONE ACCEPT S /10 – Condizioni di verifica – Parte III 16S3: VC- C.Montangero - Copyright 2010

--# accept In una funzione che calcola il resto: – Z serve solo come ausilio, non viene usata – Examiner genera un errore di Flow: S3: VC - C.Montangero - Copyright

--# accept (2) tipo (flow, warn), numero, "giustificaz S3: VC - C.Montangero - Copyright

--# accept (3) 44 In.lsb: S3: VC - C.Montangero - Copyright Expected messages marked with the accept annotation Type Msg Lines Reason Match No. From To No. Line Flow end Z serve per calcolare T 2 18 Flow end Z serve per calcolare T 2 51

QUANTIFICATORI S /10 – Condizioni di verifica – Parte III 20S3: VC- C.Montangero - Copyright 2010

Quantificatori Come si specifica una funzione che restituisce il resto della div? Devo dire: restituisco un R tale che, – per qualche Q vale Ddo = Dre*Q + R Come si specifica una funzione che dice se tutti gli elementi di un array sono nulli? Devo dire: restituisco – per ogni i nel range di indici ammissibili, A(i)=0 S3: VC - C.Montangero - Copyright

Quantificatori: sintassi Esempi for some Q in Natural => ( Ddo = Dre*Q + R ) for some M in Index => ( A(M) = Sought ) for all I in Index => ( A(I) = 0 ) for all M in Index range 1.. (Z - 1) => ( A(M) /= Sought ) – Warning: non c'è vero scoping: identifier devono essere freschi S3: VC - C.Montangero - Copyright quantified_expression ::= kind identifier in discrete_subtype_mark [ range range ] => ( predicate ) kind ::= for all | for some

La funzione Resto Chiamata: La post usa la funzione di prova implicita S3: VC - C.Montangero - Copyright

La funzione resto La VC viene semplificata, il che è lecito purché codice in funzioni/resto.adb S3: VC - C.Montangero - Copyright For path(s) from start to finish: procedure_call2_ > C1: resto2(f1, f2) = resto2(f1, f2).

Esercizio Progettare e realizzare un package Divisione, – procedura che fa la divisione di due naturali, e memorizza in uno stato globale "own" quoziente e resto – due funzioni che restituiscono rispettivamente quoziente e resto dell'ultima divisione effettuata. Come si tratta il divisore nullo? E la chiamata delle funzioni prima di una divisione? S3: VC - C.Montangero - Copyright