Corso di Laurea Triennale in Ingegneria Informatica Ingegneria del software Metodi formali nellingegneria del software Guasti software Sistemi critici.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Evoluzione dei linguaggi di programmazione
Miglioramento della protezione dei dati mediante SQL Server 2005 Utilizzo della crittografia di SQL Server 2005 per agevolare la protezione dei dati Pubblicato:
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Linguaggi di programmazione
Specifiche Algebriche
Type Checking (1° parte)
Lez. 21 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Semantica assiomatica.
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Informatica Industriale Monica Bianchini Dipartimento di Ingegneria dellInformazione Università degli Studi di Siena.
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.
Semantiche dei linguaggi di programmazione
Iterazione enumerativa (for)
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
VALUTAZIONE DEI RISCHI
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Testing e Debugging.
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
eliana minicozzi linguaggi1a.a lezione2
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Corso di Informatica Applicata - Lezione 3 - © 2005 Saverio De Vito Corso di Informatica Applicata Lezione 3 Università degli studi di Cassino Corso di.
Struttura dei sistemi operativi (panoramica)
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Unità Didattica 1 Algoritmi
Strutture di controllo in C -- Flow Chart --
Le transazioni Itis Max Planck.
Intelligenza Artificiale
Progettazione di una base di dati
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
Progetto Lauree Scientifiche Presenta…
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
L’ingegneria del software
CODIFICA Da flow-chart a C++.
Lo sviluppo del progetto informatico
Architettura del calcolatore
Studio e realizzazione di un tool per lautomatizzazione dei test di un sistema software distribuito Facoltà di Ingegneria Corso di Studi in Ingegneria.
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Gestionale A.A. 2003/2004.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Automi temporizzati cooperanti (TCA) . Automi cooperanti (CA)  Un CA consiste di n automi finiti, ciascuno con insieme di stati, stato iniziale e tabella.
4/21/20151 Metodi formali nel software a.a.2013/2014 Prof.Anna Labella.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
4/20/20151 Metodi formali dello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Taccani1 7.4 Identification ANALISI DEI PERICOLI Hazard Analysis Identificazione Valutazione Misure di Controllo Control Measures Assessment.
MCSA Mobile Code System Architecture Infrastruttura a supporto della code mobility Pierfrancesco Felicioni Reti di Calcolatori L.S. 2005/2006.
Siete i proprietari di una squadra di corse NASCAR. E’ l’ultima gara di un’ottima stagione e sarà trasmessa in Mondovisione vecchio sponsor (comunque.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
1 Metodologie di Programmazione = decomposizione basata su astrazioni.
Esercizi.
SUMMARY Time domain and frequency domain RIEPILOGO Dominio del tempo e della frequenza RIEPILOGO Dominio del tempo e della frequenza.
SUMMARY High efficiency motors RIEPILOGO Motori ad alta efficienza RIEPILOGO Motori ad alta efficienza.
Cloud SIA V anno.
Politecnico di Milano © 2001 William Fornaciari La tolleranza ai guasti Concetti generali Docente: William Fornaciari Politecnico di Milano
Le basi di dati.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
I linguaggi di programmazione -GALBIATI ALBERTO -ESPOSITO MATTIA.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Transcript della presentazione:

Corso di Laurea Triennale in Ingegneria Informatica Ingegneria del software Metodi formali nellingegneria del software Guasti software Sistemi critici Metodi formali Verifica formale Model checking

Ingegneria del software I guasti software Classificazione dei guasti: Natura dei guasti: –Accidentali: che si verificano fortuitamente –Intenzionali: creati con scopi malevoli Origine dei guasti: –Cause fenomenologiche: Guasti fisici: dovuti a fenomeni fisici Guasti causati dalluomo –Confini del sistema: Guasti interni: parti del sistema che producono errori Guasti esterni: causati dallinterferenza dellambiente fisico nel sistema o dallinterazione con luomo –Fase di creazione: Guasti di progetto Guasti operativi –Persistenza temporale: Guasti permanenti Guasti temporanei

Ingegneria del software Errori Catena –Guasto->errore->fallimento Ogni sistema è inteso in maniera ricorsiva come strutturato in componenti, fino al livello dei componenti atomici non ulteriormente scomponibili –Un guasto di un componente nel sistema, se non gestito opportunamente può determinare uno stato erroneo detto errore. –Errore: è uno scostamento del sistema dallo stato nominale, ed è leffetto di un guasto, non è il guasto. –Fallimento: si verifica se lo stato di errore non viene gestito, rappresenta la deviazione del comportamento del sistema rispetto a quello atteso secondo le specifiche.

Ingegneria del software Classificazione dei fallimenti Il fallimento di un sistema avviene quando un errore si manifesta come deviazione dal servizio offerto. –Vi sono diversi failure modes, che possono essere caratterizzati secondo tre punti di vista: il dominio la percezione del fallimento da parte degli utenti del sistema le conseguenze sullambiente –Consideriamo di seguito la classificazione relativa soltanto alle conseguenze del fallimento sullambiente, ossia alla gravità: Fallimenti benigni: –le conseguenze sono dello stesso ordine di grandezza del beneficio dato dal servizio erogato in assenza di fallimento Fallimenti catastrofici: –le conseguenze sono incommensurabilmente più grandi dei benefici prodotti dal servizio in assenza di fallimento

Ingegneria del software Fallimenti benigni Le conseguenze sono dello stesso ordine di grandezza del beneficio dato dal servizio erogato in assenza di fallimento: –Il costo del fallimento si limita alla perdita economica dovuta alla mancanza del servizio stesso: Es. se un aereo non può partire per un guasto, i viaggiatori non possono raggiungere velocemente la destinazione. –Sistemi fail-safe: sistemi i cui fallimenti possono essere solo benigni

Ingegneria del software Fallimenti catastrofici Le conseguenze sono incommensurabilmente più grandi dei benefici prodotti dal servizio in assenza di fallimento: –Es. se il guasto all aereo provoca un incidente, le conseguenze sono ovviamente diverse e meno desiderabili rispetto al in relazione alla gravità dei possibili fallimenti si identifica la criticità di un sistema: –Se il fallimento di un sistema ha la potenzialità di essere catastrofico si parla di sistema critico, altrimenti si parla di sistema non critico.

Ingegneria del software Classificazione dei sistemi critici A seconda della categoria degli effetti dei fallimenti i sistemi critici possono essere classificati in: Sistemi safety-critical: –Sistemi il cui fallimento può causare ferimenti, perdite di vite o seri danni ambientali( sistemi di controllo di impianti chimici, centrali nucleari, sistemi fly-by-wire, o sistemi drive-by-wire) Sistemi mission-critical: –Sistemi il cui fallimento può causare la cancellazione di attività mirate ad un obiettivo importante (sistema di navigazione di una sonda spaziale) Sistemi business-critical: –Sistemi il cui fallimento può causare ingenti perdite di denaro (sistema di gestione dei conti correnti di una banca)

Ingegneria del software Dependability Definizione: –la proprietà di un sistema di essere adeguato a che un essere umano, o una collettività, possa dipendere da esso, senza correre rischi inaccettabili [indicare i riferimenti bibliografici] –Un termine utilizzato spesso con la stessa accezione è affidabilità (reliability) –Caratterizzazione della dependability: La credibilità di un sistema di calcolo, ossia il grado di fiducia che può essere ragionevolmente riposto nei servizi che il sistema offre.

Ingegneria del software Attributi della dependability I servizi offerti da un sistema di calcolo sono rappresentati dal suo comportamento così come viene percepito dagli utenti: –A seconda dei servizi che il sistema deve fornire, la garanzia di funzionamento può essere interpretata in relazione a proprietà distinte, ma complementari: Availability: disponibilità - se laspettativa principale sul servizio è data dalla sua prontezza di risposta Reliability: affidabilità – se laspettativa riguarda la fornitura continua del servizio per un tempo sufficientemente lungo, Safety: sicurezza – se laspettativa principale è la garanzia di evitare situazioni catastrofiche e danni allambiente o alle persone Security: sicurezza - se laspettativa è la prevenzione di accessi non autorizzati e/o manipolazioni di informazioni private

Ingegneria del software Altri aspetti della dependability Pervasività: il principale aspetto da studiare a proposito di dependability è la pervasività e linevitabilità della presenza di guasti: –La presenza di guasti rende necessaria la possibilità di riparare i guasti Maintainability: la capacità di un sistema dependable di essere riparato in tempi e con costi prevedibili: –La manutenzione è lattività di rimozione dei guasti durante il funzionamento o comunque nella vita operativa di un sistema

Ingegneria del software Attributi di dependability dei sistemi embedded Si tratta di sistemi chiusi in cui attributi fondamentali sono: –Reliability –Availability –Maintainability –Safety Nei sistemi aperti (che comunicano cioè con altri sistemi) attributo fondamentali è la safety intesa come protezione dai guasti intenzionali e security intesa come protezione dei dati relativamente alla facile diffusione su nternet

Ingegneria del software Metodi per ottenere dependability Protezione dai guasti (fault prevention): tecniche mirate a prevenire e minimizzare le occorrenze di guasti: –Comprende luso di tecniche di progettazione e ingegnerizzazione adeguate allo scopo: Es. tecniche di ingegneria del software per minimizzare la presenza di bugs nel codice Tolleranza ai guasti (fault tolerance): la possibilità di guasti in un sistema può permanere nonostante ladozione di tecniche di progettazione: –Si tratta di tecniche che si occupano di garantire un servizio che si mantenga conforme alla specifiche nonostante i guasti Eliminazione dei guasti (fault removal): debugging, svolto o durante la fase di sviluppo del software o successivamente al rilascio (manutenzione correttiva) Predizione di guasti (fault forecasting): consiste nello stimare il numero, la frequenza e la probabilità di incidenza presente e futura, e nel prevedere le possibili conseguenze

Ingegneria del software Guasti software Un guasto software (bug) è un guasto interno, umano, di progetto, in genere non intenzionale.

Ingegneria del software Dependability del software Software fault tolerance: tolleranza ai guasti del software Software fault forecasting: software reliability Software fault avoidance: tecniche di ingegneria del software e di buona programmazione (già note); inoltre vi sono tecniche di metodi formali di sviluppo del software, che permettono di evitare lintroduzione di guasti nel software Software fault removal: rimozione dei guasti software - debugging

Ingegneria del software Il caso Ariane 5 4 giugno 1996, il primo lancio del vettore spaziale Ariane 5 risultò un fallimento: –Dopo 36 secondi dallinizio della sequenza di volo il razzo deviò dalla rotta ed il vettore espose con una perdita stimata di oltre 500 milioni di dollari, ma nessun danno a persone o cose In termini della catena: guasto-errore-fallimento –Missile esploso per la procedura di autodistruzione –Decisione errata presa dai computer di bordo dovuta ad un messaggio proveniente dalle piattaforme inerziali –Le due piattaforme avevano subito uno shutdown a causa di una eccezione Ada Operand Error non trattata –Leccezione era stata sollevata durante la conversione di dati da floating point a 64 bit a signed integer a 16 bit poiché il numero da convertire ( il valore dellaccelerazione laterale) aveva un valore superiore a quello rappresentabile con un signed integer 16 bit –Le piattaforme inerziali erano state ereditate dallAriane 4 in cui il software funzionava poiché non si raggiungevano tali accelerazioni laterali Il software era stato riusato ma in condizioni non analoghe a quelle per cui era stato collaudato –La funzione in cui veniva utilizzata la conversione era necessaria sullAriane 4 ma inutile nellAriane 5, non eliminata per non modificare il codice già collaudato

Ingegneria del software Cause dellincidente Incapacità del software di bordo di distinguere il messaggio di shutdown delle piattaforme inerziali Omissione di controllo a run-time delle eccezioni Riuso del software in un ambiente diverso da quello per cui era stato progettato e testato Mantenimento dellesecuzione di funzionalità diventate inutili Mancanza di test adeguato nelle condizioni di utilizzo del software Mancanza di un corretto flusso di informazione sulle specifiche di funzionamento del software delle piattaforme inerziali dal progetto Ariane 4 ad Ariane 5

Ingegneria del software Tipologia dei guasti nellAriane 5 Si tratta di guasti interni, umani, di progetto, non intenzionali

Ingegneria del software Altri esempi di guasti software Il baco del processore Pentium 5 – Lerrore era dovuto a un difetto di progettazione dellalgoritmo di divisione in floating point (FDIV) –FDIV è l'istruzione in assembly x86 –il processore sbagliava a calcolare espressioni semplici come se x fosse un numero contenente diverse cifre dopo la virgola: es. dividendo / si otteneva 1,33374 invece di 1,33382 un errore dello 0,006 per cento. Anche se il problema interessa poche persone diventa un danno di immagine per Intel Stimando tra i e i 5000 chips difettosi in circolazione la Intela dapprima si impegna a sostituirli soltanto per gli utenti che avessero necessità di effettuare calcoli con elevata precisione, successivamente cede e sostituisce i chips a chiunque ne avesse fatto richiesta. Il danno economico ammonta a 475milioni di dollari. –Lerrore non era presente nel processore 486 –La scoperta avvenne nell'estate del 1994 quando il professore Thomas Nicely tentò di calcolare il risultato di una particolare espressione matematica

Ingegneria del software Altri guasti software Automaker Toyota announced a recall of 160,000 of its Prius hybrid vehicles following reports of vehicle warning lights illuminating for no reason, and cars' gasoline engines stalling unexpectedly. But unlike the large-scale auto recalls of years past, the root of the Prius issue wasn't a hardware problem -- it was a programming error in the smart car's embedded code. The Prius had a software bug. January 15, AT&T Network Outage. A bug in a new release of the software that controls AT&T's #4ESS long distance switches causes these mammoth computers to crash when they receive a specific message from one of their neighboring machines - - a message that the neighbors send out when they recover from a crash. –One day a switch in New York crashes and reboots, causing its neighboring switches to crash, then their neighbors' neighbors, and so on. Soon, 114 switches are crashing and rebooting every six seconds, leaving an estimated 60 thousand people without long distance service for nine hours. The fix: engineers load the previous software release.

Ingegneria del software Altri guasti software July 28, Mariner I space probe. A bug in the flight software for the Mariner 1 causes the rocket to divert from its intended path on launch. Mission control destroys the rocket over the Atlantic Ocean. The investigation into the accident discovers that a formula written on paper in pencil was improperly transcribed into computer code, causing the computer to miscalculate the rocket's trajectory Soviet gas pipeline. Operatives working for the Central Intelligence Agency allegedly plant a bug in a Canadian computer system purchased to control the trans-Siberian gas pipeline. The Soviets had obtained the system as part of a wide-ranging effort to covertly purchase or steal sensitive U.S. technology. The CIA reportedly found out about the program and decided to make it backfire with equipment that would pass Soviet inspection and then fail once in operation. The resulting event is reportedly the largest non-nuclear explosion in the planet's history.

Ingegneria del software Altri guasti software Therac-25 medical accelerator. A radiation therapy device malfunctions and delivers lethal radiation doses at several medical facilities. Based upon a previous design, the Therac- 25 was an "improved" therapy system that could deliver two different kinds of radiation: either a low-power electron beam (beta particles) or X-rays. The Therac-25's X-rays were generated by smashing high-power electrons into a metal target positioned between the electron gun and the patient. A second "improvement" was the replacement of the older Therac-20's electromechanical safety interlocks with software control, a decision made because software was perceived to be more reliable. –What engineers didn't know was that both the 20 and the 25 were built upon an operating system that had been kludged together by a programmer with no formal training. Because of a subtle bug called a race condition, a quick-fingered typist could accidentally configure the Therac-25 so the electron beam would fire in high-power mode but with the metal X-ray target out of position. At least five patients die; others are seriously injured.

Ingegneria del software Metodi formali Tecniche basate su fondamenti matematici, di aiuto al corretto sviluppo ed alla verifica del software. Problema: Indecibilità della verifica di correttezza di un programma rispetto ad una specifica Soluzione: –Una metodologia model driven

Ingegneria del software Definizione Metodo di specifica e produzione del software che comprende: –Una collezione di notazioni matematiche indirizzate alle fasi di specifica, di progetto e di sviluppo –Un sistema di inferenza logica ben fondato in cui si possano formulare dimostrazioni di correttezza e altre proprietà –Un contesto metodologico mediante il quale il software possa essere sviluppato dalla specifica allimplementazione in modo formalmente verificabile

Ingegneria del software Verifica formale del codice sorgente Hoare alla fine degli anni 60 propose luso di asserzioni nel codice sorgente: –si usa la logica di Hoare Un sistema formale con lo scopo di fornire un insieme di regole per studiare la correttezza di programmi col rigore della logica matematica. –Si basa sulla tripla di Hoare, che descrive come lesecuzione di un pezzo di codice cambia lo stato della computazione.

Ingegneria del software Logica di Hoare Si presenta nella forma: [P]C[Q] dove –P e Q sono asserzioni, formule valide in logica dei predicati sulle variabili del programma –C un comando P precondizione Q postcondizione –La logica definisce assiomi e regole di inferenza per tutti i costrutti di un linguaggio di programmazione imperativo basate sulla semantica del linguaggio

Ingegneria del software Regole della logica di Hoare Le regole permettono di derivare la postcondizione Q a partire dalla precondizione P e dalla semantica del comando C Esempio: i=0; Precondizione i==0 while (i a[j-1]==0&&i==k {a[i]=0;invariante al k-esimo ciclo i++; } Postcondizione0 a[j-1]==0 &&i ==n

Ingegneria del software Invariante Per comandi semplici (es. assegnamento ) la postcondizione si ottiene dalla precondizione modificando lasserzione sul valore della variabile toccata dallassegnamento Se il comando è un ciclo, al fine di calcolare la postcondizione occorre definire linvariante del ciclo, ovvero unasserzione che vale in un punto del corpo del ciclo and ogni iterazione.

Ingegneria del software Model checking Tecnica di verifica: –Le proprietà del sistema diventano decidibili (cioè verificabili algoritmicamente) se un sistema è modellato mediante una macchina a stati finiti. –Model checking Consiste nel descrivere un sistema (software o altro) mediante una finite state machine, nellesprimere una proprietà dinteresse mediante una formula e nel verificare se il comportamento del sistema soddisfi la proprietà stessa. La dimostrazione della proprietà può essere fatta automaticamente Il model checking coniuga le proprietà del test con quelle delle prove matematiche di correttezza

Ingegneria del software Model checking Definito da Edmund Clarke ( cmu), Allan Emerson ( univ. Of texas), Joseph Sifakis ( cmu), che ricevono nel 2007 lACM Turing Award, [E.M. Clarke, E.A. Emerson, A.P. Sistla, Automatic Verification of Finite-state Concurrent Systems using Temporal Logic Specification, ACM Transaction on Programming Languages and Systems, 8(2),April 1986, pp ]

Ingegneria del software Vantaggi definizione di un modello formale del sistema conforme alla implementazione possibilità di specificare proprietà del sistema mediante formalismi logici dimostrazione della validità di tali proprietà rispetto al modello disponibilità di un modello eseguibile ossia di un modello su cui si possono effettuare simulazioni –definire un modello utilizzando un formalismo –verificare proprietà del modello rispetto a specifiche formulate tramite logiche temporali

Ingegneria del software Model checker È lalgoritmo che verifica le proprietà, fornisce o una prova che la proprietà in esame risulta verificata oppure un contro-esempio, ossia un caso di test che dimostra il fallimento del sistema nel comportamento corretto rispetto alla proprietà.

Ingegneria del software Struttura di Kripke È una macchina a stati finiti, una quintupla M=(S, S 0,R,AP,L) dove: –S insieme finito di stati –S 0 è linsieme degli stati iniziali –RSxS è la relazione di transizione di stato che deve essere totale ossia per ogni stato sєS esiste sєS tale che sia definita R(s, s) –AP è un insieme di proposizioni atomiche –L: S 2 AP è una funzione che assegna ad ogni stato unetichetta che contiene le proposizioni atomiche vere in quello stato.

Ingegneria del software Computation Tree Logic (CTL) Branching time logic –Syntax: Propositional atoms & connectives AND, OR, NOT Temporal connectives (F, G, U, X) Quantifiers over paths (A, E) –Semantics Paths on a Kripke structure

Ingegneria del software Quantifiers and Operators Path Quantifiers –A - for All paths... –E - there Exists a path... Temporal Operators –G - Globally in a path... –F - sometime in the Future... –U -...Until... –X …in the neXt state... AG f AF f A(f1 U f2) AX f EG f EF f E( f1 U f2) EX f Allowed combinations: –Quantifier + Operator

Ingegneria del software Sintassi La logic CTL è definita mediante due categorie sintattiche: Formule di stato φ: φ φ | φ φ | true |p | A ψ |E ψ –Formule di cammino ψ: ψ X φ | φU φ |F φ |G φ La negazione si applica solo alle formule di stato, consentendo la dualità solo tra operatori preceduti dal quantificatore: AF φ= EG φ EF φ= AG φ EX φ= AX φ

Ingegneria del software Definizioni Un cammino π è una sequenza finita di stati tale che per ogni i0, (s i,s i+1 ) R Se φ è una formula di stato, M,s φ significa che φ è valida nello stato s nella struttura di Kripke M Se ψ è una formula di cammino, M, π ψ significa che ψ è valida lungo il cammino π nella struttura di Kripke M Generalmente M può essere omesso se è evidente dal contesto

Ingegneria del software Semantica La relazione è definita induttivamente come segue: Se φ 1,φ 2 sono formule di stato e ψ 1, ψ 2 sono formule di cammino s true sempre s p p L(S) s φ 1 φ 2 (s φ 1 ) (s φ 2 ) s φ s A ψ π a partire da s, π ψ s E ψ π a partire da s, tale che π ψ π X φ π=s 0,s 1,s 2,…,s n,.. s 1 φ π φ 1 U φ 2 π=s 0,s 1,s 2,…,s n,.. i: s i φ 2 k<i, S k φ 1 π Fφ π =s 0,s 1,s 2,…,s n,.. i: si φ π Gφ π=s 0,s 1,s 2,…,s n,.. i: s i φ

Ingegneria del software Lalgoritmo Data una struttura di Kripke M ed una formula φ, il model checking consiste nel verificare se M soddisfa φ. –La formula rappresenta una proprietà che si desidera che M abbia. –Il model checking consiste nel verificare che M sia un modello per φ cioè M φ. Emerson e Clarke hanno proposto un algoritmo che risolve il model checking per la Logica CTL. –Consiste nelletichettare tutti gli stati di M con sottoformule di φ soddisfatte in tali stati, iniziando con le sottoformule di lunghezza 0, (cioè con i predicati atomici), passando a sottoformule di lunghezza 1, dove si applica un solo operatore logico a formule con predicati atomici, quindi a sottoformule di lunghezza 2 dove si applica un operatore logico a sottoformule di lunghezza 1 e così via.

Ingegneria del software Verifica Il risultato si evince dalla formule che etichettano lo stato iniziale: –La formula è verificata se e solo se essa etichetta lo stato iniziale.

Ingegneria del software Model checking CTL Data una stuttura di Kripke che rappresenta una macchina a stati finiti ed una formula espressa in logica temporale che specifica lamproprietà che si desidera verificare, il problema del model checking consiste nel determinare tutti gli stati in S che soddisfano la formula

Ingegneria del software Esempio mutua esclusione Due processi concorrenti: –Eseguono alcune operazioni usando una risorsa condivisa –Entrambi i processi: eseguono alcune operazioni non critiche rappresentate dallo stato Ni con i=1,2 cercano di accedere alla risorsa (stato Ti trying con i=1,2) Eseguono operazioni critiche sulla risorsa condivisa (stato Ci i=1,2) Ni Ti Ci

Ingegneria del software Esempio: mutua esclusione Problema: –Implementare un meccanismo di mutua esclusione che impedisca ai processi di accedere alla risorsa condivisa contemporaneamente: –Ogni stato è una combinazione degli stati dei due processi nessuno stato deve implementare la combinazione degli stati C1 e C2 limplementazione non deve consentire che tutti e due i processi si trovino nella sezione critica

Ingegneria del software Esempio: mutua esclusione N1 N2 T1 N2N1 T2 C1 N2T1 T2 N1 C2 T1 T2 C1 T2 T1 C2

Ingegneria del software Formula da verificare In logica temporale la formula è la seguente: AG ~(C1 C2) Si vuole, inoltre, verificare che non vi sia starvation ossia che quando un processo entra nella fase di trying prima o poi riesca ad accedere alla risorsa: AG (Ti AF Ci) Cioè AG (~Ti AF Ci)

Ingegneria del software Etichettamento 1.Il processo di etichettamento inizia con letichettatura delle formule di lunghezza 1 ~Ti e AF Ci 2.Quindi procede con letichettatura dei nodi per cui valgono le formule di lunghezza 2. Cioè la formula: ~Ti AF Ci 3.Si procede con letichettatura delle formule di lunghezza 3. Cioè la formula: AG (~Ti AF Ci) Che andrà ad etichettare lo stato iniziale, essendo tutti gli altri stati già etichettati con le formule di lunghezza 2.

Ingegneria del software Esempio: mutua esclusione - etichettamento N1 N2 ~ T1 ~ T1 ν AF C1 T1 N2 AF C1 ~ T1 ν AF C1 N1 T2 ~ T1 ~ T1 ν AF C1 C1 N2 ~ T1 AF C1 ~ T1 ν AF C1 N1 C2 ~ T1 ~ T1 ν AF C1 T1 T2 AF C1 ~ T1 ν AF C1 C1 T2 ~ T1 AF C1 ~ T1 ν AF C1 T1 C2 AF C1 ~ T1 ν AF C1

Ingegneria del software Osservazioni La descrizione dello spazio degli eventi ci permette di astrarre dalle funzionalità dei processi La complessità dellalgoritmo nel caso peggiore è lineare in termini della grandezza della formula e in termini dello spazio degli stati In caso di fallimento lalgoritmo permette di tracciare gli stati che lhanno causato Il numero degli sati del sistema cresce al più esponenzialmente con il numero dei processi indipendenti

Ingegneria del software Riferimenti E. M. Clarke, E. A. Emerson, A.P. Sistla, Automatic Verification of Finite-State Concurrent Systems using Temporal Logic Specifications, ACM Transaction on Programming Languages and Systems, 8(2), april 1986, pp E.M. clarke, Jr. O Grumberg, D.A. Peled, Model checking, The MIT Press, A. Fantechi,Informatica Industriale, CittàStudi Edizioni,2009.