Magazine Università

Come funziona la block recovery?

Creato il 29 dicembre 2010 da Ewilly
Nella progettazione di software,ci sono a volte errori (bug) inevitabili all’interno del codice. Bisogna quindi trovare tecniche in grado di far comunque funzionare il programma gestendo bene questi errori. Una di queste tecniche è la block recovery.
E una tecnica che si basa su tre elementi software:

-Routine primaria
: esegue una funzione software critica;
-Test di accettazione: controlla le uscite della routine primaria dopo ogni esecuzione;
-Routine alternativa: realizza la stessa funzione della routine primaria.
Come mai funziona ?
La routine primaria può essere progettata in modo che sia la più veloce possibile, mentre la routine alternativa può essere più lenta (viene usata un minor numero di volte), implementata in modo semplice in modo da implementare correttamente le specifiche.
(

piccola parentesi per farvi capire meglio con un esempio


:
Uno studente deve fare l’esame di informatica industriale.
Decide di fare una preparazione veloce (Routine primaria)
Cosi tenta il primo appello dopo una settimana di studio.
Il prof valuto il Compito del nostro studente e decide che voto darlo-questo è il  Test di accettazione del nostro esempio.
Se supera l’esame anche con un 18 accetterà comunque (ormai è l’ultimo esame prima di laurearsi e lui ha molto fretta oppure non ne può più dell’università)
ma se invece viene bocciato dovrà per forza rifare l’esame. Ora per essere sicuro di passare,decide di dedicare 3 settimane con un preparazione più lenta e impegnativa (senza cibo ne acqua no scherzo) -Routine alternativa
Si capisce che La routine alternativa in questo caso vera ripetuta finche lo studente non supera l’Esame oppure molla L’università (Errore peggiore???) )

Struttura della Block recovery


image
La clausola Ensure specifica il test di accettazione T, la clausola by indica la routine primaria P e la clausola else by individua la routine alternativa S da utilizzare se quella primaria fornisce dei risultati non corretti, si può inserire un numero arbitrario di clausole else by prima di del caso peggiore in cui bisogna accettare l’errore.

Esempio di implementazione in Java


Se abbiamo due versioni diverse della stessa funzione:
int fvers1(int x,y);
int fvers2(int x,y);
e un acceptance test :
boolean acceptable(int x);
Un recovery block si può realizzare come:
int fsafe(int x,y);
{
int res;
res = fvers1(x,y);
if acceptable(res) return res;
else {
res = fvers2(x,y);
if acceptable(res) return res;
else failsafestate();
}
}
failsafestate() è una funzione che ci permette di passare dallo stato di errore ad uno stato sicuro  (per esempio scrivendo un messaggio di errore con la possibilità di tornare indietro )

Applicazione:


image
Spero che hai imparato qualcosa leggendo questo articolo. Se hai dei dubbi o suggerimenti,lasca un commento qui sotto.
avatar Come funziona la block recovery?

Ritornare alla prima pagina di Logo Paperblog

Magazine