Sviluppo di Software Sicuro - S 3 Condizioni di verifica in pratica Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni.

Slides:



Advertisements
Presentazioni simili
Disegna un quadrato di 8 quadretti per lato
Advertisements

1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
Traccia di lavoro di lavoro per EMMA 2010:
Parametri Acustici (ISO 3382)
Banche e finanza nella Relazione BdI Modena, 7/6/2010 Giuseppe Marotta Università di Modena e Reggio Emilia e Cefin.
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
Laboratorio Matematica e Informatica
Costruire le competenze in impresa Lapprendistato e la formazione sul posto di lavoro Area Istruzione e Formazione Professionale.
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
Metodi Quantitativi per Economia, Finanza e Management Lezione n°7.
Equilibrio di Nash ed aste GSP
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
Biometry to enhance smart card security (MOC using TOC protocol)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Sviluppo di Software Sicuro - S 3 Condizioni di verifica - III Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni Università
Sviluppo di Software Sicuro - S 3 SPARK – Moduli Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni Università di Pisa.
Dipartimento di Informatica e Sistemistica Alessandro DE CARLI Anno Accademico MOVIMENTAZIONE CONTROLLATA AZIONAMENTI CON MOTORE BRUSHLESS.
Filosofia teoretica (triennio)
1Sonda di elettroni Capitolo 7. 2Confronto fra microscopio elettronico e acceleratore Capitolo 7.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 3 - Functions Outline 3.1Introduction 3.2Program Components in C++ 3.3Math Library Functions 3.4Functions.
7 settembre Il mercato del lavoro in Provincia di Treviso Primo semestre 2010.
Algoritmi e Strutture Dati
Maurizio tiriticcoapprendere per competenze il riordino dei cicli scolastici e linnalzamento dellobbligo di istruzione a cura di maurizio tiriticco.
OSReT OSSERVATORIO SOCIO-RELIGIOSO TRIVENETO Lalfabetizzazione religiosa degli studenti che si avvalgono dellInsegnamento della Religione Cattolica.
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
PARMA, 6 MARZO LA PRODUZIONE INDUSTRIALE 2009 E PREVISIONI 2010 Il Parmigiano-Reggiano Nuove opportunità per il futuro Parma, 6 marzo 2010.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Strutture di controllo in C -- Flow Chart --
Incontro 11 marzo ° CENTRO TERRITORIALE INTERCULTURA per le scuole secondarie di secondo grado.
Copyright SDA Bocconi 1 LI.T. PER LA GESTIONE E LINNOVAZIONE AZIENDALE Paolo Pasini Confindustria Veneto, SIAV 16 marzo 2010.
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
ALGEBRA.
S. Bolognesi (1) from CMS A. Di Simone (2) from ATLAS 1 Università di Torino ed INFN Torino 2 Università di Roma Tor Vergata ed INFN Roma 2 V workshop.
Ettore Vittone: Dip. Fisica Sperimentale, Università di Torino; A.A Fisica dei Dispositivi Elettronici e Sensori; Laurea in Fisica; Fisica Stato.
La definizione dei gruppi di lavoro
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Italiano 2 - Capitolo 7 - Lessico -- I vestiti
INPS - COMUNI SERVIZI AL CITTADINO.
Realizzazione Grammatica non contestuale –no ricorsioni sinistre –LL(1) produzione individuata dal primo token Ogni non-terminale -> funzione –rappresenta.
(1) Sistemi Operativi Prof. P. Cattaneo ufficio: L Ricevimento: Martedì14.00 –
Promozione della salute per gli anziani: quale futuro ?
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
Sistema Real-time: Sistema VISyR Implementazione nellAmbiente di Sviluppo Quartus-II Semplice Applicazione: Prodotto Matrice x matrice Architettura StratiX.
Prospettive delle attivita' di Astrofisica Nucleare con Recoil Mass Separators Prospettive delle attivita' di Astrofisica Nucleare con Recoil Mass Separators.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
Strategie di comunicazione
Italiano 1 -- Cap Strategie di comunicazione
le caratteristiche del virus
Realizzazione di un sistema di Raccomandazione in Matlab
Realizzazione di un sistema di Raccomandazione in Matlab Tesi di Laurea Specialistica Ingegneria Informatica Niccolò Olivieri – Relatore: Paolo.
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
METODO EMPIRICO di valutazione del relatore, ovvero
C’è / Ci sono Scegli un numero.
Io credo che a questo mondo non si possa essere veramente felici se non sono felici anche gli altri Giorgio Gaber 1.
Corso di Web Services A A Domenico Rosaci Patterns di E-Business D. RosaciPatterns per l'e-Business.
LexALP: Legal Language Harmonization System for Environment and Spatial Planning within the multilingual Alps
Assemblea Elettiva Assoviaggi Assemblea Elettiva ASSOVIAGGI - Confesercenti Roma, 18 Marzo 2010 Mercato turistico e settore delle agenzie di viaggio.
Pippo.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
Moles and Formula Mass.
IL CALENDARIO: I MESI e I GIORNI
ASSEMBLEA RCL HB9RL. ASSEMBLEA RCL ORDINE DEL GIORNO 1. Nomina del presidente del giorno 2. Nomina di due scrutatori 3. Approvazione dell’ultimo.
Chapter 5 - Part 2 1 Procedura di sintesi  Specifiche  Formulazione – Ricavare un diagramma o una tabella di stato  Assegnazione della codifica di stato.
Transcript della presentazione:

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

Sommario Il nucleo del linguaggio delle asserzioni SPARK Examiner per la verifica – Generazione delle vc – Semplificazione delle vc: Simplifier Esempi semplici Un esempio dal vivo: – prodotto per somme successive Esercizio: divisione S3: VC- C.Montangero - Copyright 20102

Il linguaggio delle annotazioni Per il contesto di prova dei vincoli ai sottoprogrammi (pre, post e assert): – il linguaggio delle espressioni SPARK, più – la decorazione (tilde) per denotare i valori iniziali delle variabili in out – l'implicazione logica, denotata da " -> " – l'equivalenza logica, denotata da " " – le espressioni quantificate (tipizzate) universale, esistenziale su intervalli –... S3: VC - C.Montangero - Copyright 20103

Integer increment S3: SPARK - C.Montangero - Copyright package P 2 is 3 end P; 4 5 package body P 6 is 7 8 procedure Inc(X : in out Integer) 9 --# derives X from X; 10 --# post X = X~ + 1; 11 is 12 begin 13 X := X + 1; 14 end Inc; +++ Flow analysis of subprogram Inc performed: no errors found end P; Condizioni di verifica: For path(s) from start to finish: procedure_inc_1. H1: true. H2: x >= integer__first. H3: x <= integer__last. -> C1: x + 1 = x + 1.

Swap routine S3: SPARK - C.Montangero - Copyright package P is end P;... 5 package body P 6 is 7 procedure Swap(X, Y : in out Integer) 8 --# derives X from Y & Y from X; 10 --# post X = Y~ and Y = X~; 11 is 12 T : Integer; 13 begin 14 T := X; 15 X := Y; 16 Y := T; 17 end Swap; +++ Flow analysis of subprogram Swap performed: no errors found end P; Condizioni di verifica: procedure_swap_1. H1: true. H2: x >= integer__first. H3: x <= integer__last. H4: y >= integer__first. H5: y <= integer__last. -> C1: y = y. C2: x = x.

Swap routine difettosa S3: SPARK - C.Montangero - Copyright package P is end P;... 5 package body P 6 is 7 procedure Swap(X, Y : in out Integer) 8 --# derives X from Y & Y from X; 10 --# post X = Y~ and Y = X~; 11 is 12 T : Integer; 13 begin 14 T := X; 15 X := Y; 16Y := T + 1; -- error, but information flow unaffected 17 end Swap; +++ Flow analysis of subprogram Swap performed: no errors found end P; Condizioni di verifica: procedure_swap_1. H1: true. H2: x >= integer__first. H3: x <= integer__last. H4: y >= integer__first. H5: y <= integer__last. -> C1: y = y. C2: x + 1 = x. !!!!!!!! Usando Simplifier:... -> C1: false.

Examiner e Simplifier L'esempio sopra mostra che – Simplifier può identificare un difetto – Examiner può dare informazioni per individuarlo Il prossimo mostra che – Examiner può identificare un difetto – Simplifier può dare informazioni aggiuntive sulla sua natura S3: VC- C.Montangero - Copyright 20107

Swap routine con difetto di flusso S3: SPARK - C.Montangero - Copyright package P 2 is 3 end P; 4 5 package body P 6 is 7 procedure Swap(X, Y : in out Integer) 8 --# derives X from Y & 9 --# Y from X; 10 --# post X = Y~ and Y = X~; 11 is 12 T : Integer; 13 begin 14 T := X; ^1 !!! ( 1) Flow Error : Ineffective statement. 15 X := Y; 16 Y := X; 17 end Swap; Condizioni di verifica: For path(s) from start to finish: procedure_swap_1. H1: true. H2: x >= integer__first. H3: x <= integer__last. H4: y >= integer__first. H5: y <= integer__last. -> C1: y = y. C2: y = x. Usando Simplifier:... -> C1: y = x

Swap routine con difetto di flusso S3: SPARK - C.Montangero - Copyright package P 2 is 3 end P; 4 5 package body P 6 is 7 procedure Swap(X, Y : in out Integer) 8 --# derives X from Y & 9 --# Y from X; 10 --# post X = Y~ and Y = X~; 11 is 12 T : Integer; 13 begin 14 T := X; ^1 !!! ( 1) Flow Error : Ineffective statement. 15 X := Y; 16 Y := X; 17 end Swap; Condizioni di verifica: For path(s) from start to finish: procedure_swap_1. H1: true. H2: x >= integer__first. H3: x <= integer__last. H4: y >= integer__first. H5: y <= integer__last. -> C1: y = y. C2: y = x. Usando Simplifier:... -> C1: y = x

Cicli: radice quadrata S3: SPARK - C.Montangero - Copyright procedure IntRoot(N : in Natural; Root : out Natural) 9 --# derives Root from N; 10 --# pre N >= 0; 11 --# post (Root * Root <= N) and (N < (Root + 1) * (Root + 1)); 13 is 14 R : Natural := 0; 15 S, T : Natural := 1; 16 begin 17 loop 18 --# assert (T = 2 * R + 1) and (S = (R + 1) * (R + 1)) and (R * R <= N); 21 exit when S > N; 22 R := R + 1; 24 T := T + 2; 25 S := S + T; -- S := (R+1)^2 + 2R +1 = R^2 + 4R + 2 = (R+2)^2 26 end loop; 27 Root := R; 28 end IntRoot;

VC: inizializzazione S3: VC - C.Montangero - Copyright For path(s) from start to assertion of line 18: procedure_introot_1. H1: n >= 0. H2: n >= natural__first. H3: n <= natural__last. -> C1: 1 = 2 * (T = 2 * R + 1) C2: 1 = (0 + 1) * (0 + 1) (S = (R + 1) * (R + 1)) C3: 0 * 0 <= n. (R * R <= N);

VC: corpo del ciclo S3: VC - C.Montangero - Copyright For path(s) from assertion of line 18 to assertion of line 18: procedure_introot_2. H1: t = 2 * r + 1. H2: s = (r + 1) * (r + 1). H3: r * r <= n. H4: not (s > n). guardia -> C1: t + 2 = 2 * (r + 1) + 1.H1[t/t+2, r/r+1] C2: s + (t + 2) = (r ) * (r ). H2[s/s+t, t/t+2, r/r+1] C3: (r + 1) * (r + 1) <= n. H3[r/r+1]

VC: finalizzazione Simplifier le verifica tutte S3: VC - C.Montangero - Copyright For path(s) from assertion of line 18 to finish: procedure_introot_3. H1: t = 2 * r + 1. H2: s = (r + 1) * (r + 1). H3: r * r <= n. H4: s > n. guardia -> C1: r * r <= n. post[Root/R] C2: n < (r + 1) * (r + 1).

Pragmatica I file generati da Examiner:.vcg Per semplificare: – tasto destro sul vcg: SPARK-> Simplify – I file generati da Simplifier:.siv Tutti in una cartella con il nome del file Ada – con gli switch di timet S3: VC - C.Montangero - Copyright

Esercizio Divisione per sottrazioni successive: – Ddo = Dre * Q + R and R<Dre Condizione di uscita: R<Dre