Sei sulla pagina 1di 8

Università di degli Studi della Campania

Luigi Vanvitelli
Dipartimento di Ingegneria
Laurea Magistrale in Ingegneria Informatica

Affidabilità dei Sistemi Software Complessi


a.a. 2018-2019

I Mezzi per Garantire la Reliability


(Means)
Docente : Massimo Ficco
E-mail : massimo.ficco@unicampania.it
1

The dependability tree


(Mezzi-Attributi-Minacce)

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 2


I Means
I quattro means possono essere raggruppati in due categorie:

➢ Dependability procurament (fault prevention+ fault


tolerance): stabiliscono come pemettere al sistema di
soddisfare i requisiti presentati nelle specifiche;

➢ Dependability validation (fault removal + fault


forecasting): come assicurare con certezza che il sistema
risolva i requisiti presentati nelle specifiche.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 3

Fault Prevention
La fault prevention si ottiene tramite le buone pratiche di
ingegneria, è infatti l'obiettivo ultimo delle metodologie di
sviluppo.
Chiaramente la fault prevention si raggiunge diversamente
a seconda del sistema che stiamo realizzando
• Per i sistemi software: modularizzazione, information hiding, uso di
linguaggi fortemente tipizzati, formalismi per il software design, cicli
di sviluppo a V, CMM, …
• per i sistemi hardware : regole di progettazione, utilizzare
componenti affidabili ecc.

In sostanza la fault prevention si ottiene con un


miglioramento del processo di sviluppo (development).
Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 4
Fault tolerance (1/2)
Run-time techniques are used to ensure that system faults do not
result in system errors and/or that system errors do not lead to
system failures

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 5

Fault tolerance (2/2)

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 6


Fault tolerance: Error detection
L'error detection è la tecnica che consente di individuare gli
errori che si sono verificati nel sistema.
Può essere realizzata mentre il sistema è in uso, prendendo
il nome di concurrent detection, o mentre il sistema ha
sospeso la fornitura del suo servizio per la ricerca di latent
error e dormant fault, ed allora prende il nome di preemptive
detection.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 7

Fault tolerance: Error handling


L'error handling ha lo scopo di eliminare gli errori dallo stato del
sistema. Le tecniche utilizzate:
➢ Rollback: durante la normale esecuzione del sistema vengono
salvati degli stati corretti, detti checkpoint, quando si verifica un errore il
sistema viene riportato nel più recente di questi stati.
➢ Rollforward: se si conosce almeno uno stato successivo in cui il
sistema è privo di errori, quando si verifica un error, il sistema può
essere immediatamente portato in tale stato.
➢ Compensation: l'error viene mascherato dal sistema, poiché lo stato
contiene sufficienti ridondanze in modo da permettere al sistema di
continuare a fornire il correct service.
Le prime due tecniche possono avvenire anche su richiesta dell'utente,
dopo che è avvenuta l'error detection. La compensation può invece
applicarsi sia su richiesta che sistematicamente, in questo secondo
caso si parla di fault masking.
Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 8
Fault tolerance: Fault handling (1/2)
La pratiche di fault handling servono ad evitare che un fault che è stato
attivato torni nuovamente ad attivarsi.
Le pratiche della fault handling sono quattro:
➢ Diagnosis: identifica e memorizza le cause degli errori in termini di
locazione e tipo;
➢ Isolation: esegue un isolamento fisico o logico del componente
guasto per evitare che possa contribuire alla fornitura del system
service, in altre parole rende il fault dormant;
➢ Reconfiguration: riconfigura il sistema per ridistribuire i task fra i
componenti non guasti;
➢ Reinitialization: controlla, aggiorna e memorizza la nuova
configurazione e aggiorna il sistema.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 9

Fault tolerance: Fault handling (2/2)


E' bene notare come gli errori intermittenti non richiedano
isolation o reconfiguration del sistema, proprio per la loro
natura casuale. La loro identificazione avviene tramite error
handling ma anche con la fault diagnosis.

La preemptive error detection e handling, possibilmente


seguita da fault handling sono generalmente eseguite
durante l'avvio del sistema seguita da corrective
maintenance

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 10


Fault removal (1/4)
Le tecniche di fault removal possono applicarsi durante le
fasi di development e di use.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 11

Fault removal durante il development (2/4)

Sono tre le fasi che interessano il fault removal: verification,


diagnosis, correction.
La fase di verification è quella che richiede la maggior
attenzione. In particolare la verification può essere di tipo
static, se avviene quando il sistema non è in esercizio, o
dynamic se viene effettuata provando il sistema in
esercizio.

Se ci si riferisce alle specifiche del sistema stesse, il


processo assume il nome di validation.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 12


Le tecniche per la fault removal (3/4)

La static verification corrisponde a ispezionare il sistema, tramite


anche astrazioni e modelli, per individuare problemi, o inadeguatezza
alle specifiche.
La dynamic verification può essere fatta fornendo input simbolici al
sistema, ed assume il nome di symbolic verification, o può fornire una
serie di input reali, realizzando in questo modo il testing.

Dopo la verification, si passa alla diagnosis dei fault che hanno causato
il fallimento della verification ed in seguito alla correction degli stessi. A
fine del ciclo, si deve provvedere ad una nuova verification per
assicurare che il fault sia stato effettivamente eliminato e che non ne
siano stati introdotti di ulteriori.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 13

Fault removal durante l'uso (4/4)


Durante la fase di utilizzo il fault removal si traduce con la
manutenzione correttiva o preventiva del sistema. La
prima si effettua per correggere errori che si sono verificati
nel sistema, la seconda per evitare che fault individuati
possano tradursi in errori. In entrambi i casi la
manutenzione può essere fatta, a seconda delle
caratteristiche del sistema, online o offline (causando in
questo secondo caso un service outage).

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 14


Fault forecasting (1/2)
Il fault forecasting consiste nel valutare il comportamento
del sistema rispetto all'attivazione o all'occorrenza di fault.
In particolare si possono operare due metodologie:
➢ qualitative evaluation: ha lo scopo di identificare e
classificare i failure o la combinazione di eventi che
porta ad un failure;
➢ quantitative evaluation: che ha lo scopo di valutare il
limite in cui alcuni attributi sono soddisfatti.

Molte tecniche sono utilizzate in entrambi i casi, altre sono


invece specifiche.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 15

Fault forecasting (2/2)


Dal punto di vista dell'approccio probabilistico (quantitative evaluation) le
principali tecniche sono due: modeling e testing.
Questi sono approcci complementari poiché la modellazione del sistema
richiede la conoscenza di alcuni dati della realtà da modellare che possono
essere ottenuti tramite testing o tramite lo studio dei casi di failure.
Nel caso di uso di modelli si deve chiaramente prima costruire il modello e
validarlo, in seconda istanza vanno effettuate le misurazioni di
dependability su tale modello.
Si può introdurre la nozione di dependability and securety benchmark che
include una serie di pratiche di fault forecasting per valutare la
dependability di un sistema in presenza di fault.

Affidabilità dei Sistemi Software Complessi - Docente: Massimo Ficco 16

Potrebbero piacerti anche