L'università è facile…

studia finché non lo diventa…

Come funziona la block recovery?

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

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Informazione

Questa voce è stata pubblicata il 08/07/2010 da in Informatica Industriale con tag , , , , .
%d blogger hanno fatto clic su Mi Piace per questo: