Schema di blocco di recupero
Lo schema a blocchi di ripristino è una tecnica di tolleranza ai guasti del software basata sulla diversità di progettazione e sul ripristino degli errori a ritroso. Struttura un programma come una serie di blocchi, ciascuno con un modulo primario, un test di accettazione e uno o più moduli alternativi. Se l'output del modulo primario non supera il test di accettazione, lo stato del sistema viene ripristinato e viene eseguito un modulo alternativo.
Il concetto di blocco di ripristino, introdotto da Brian Randell, è un approccio strutturato per ottenere la tolleranza ai guasti del software. Si basa sul principio di fornire moduli software ridondanti, noti come alternative, per una data operazione, abbinati a un meccanismo per verificare la correttezza del risultato dell'operazione. I componenti chiave sono: il test di accettazione (AT), l'alternativa primaria (P) e una sequenza di alternative secondarie (Q1, Q2, ...). Prima di eseguire l'alternativa primaria, il sistema salva un checkpoint del suo stato corrente. Al termine di P, viene eseguito il test di accettazione sull'output. L'AT è un elemento logico cruciale che verifica che il risultato sia accettabile; non deve dimostrare la correttezza assoluta, ma piuttosto che il risultato sia ragionevole e coerente.
Se il risultato supera l'AT, il checkpoint viene scartato e il programma prosegue. Tuttavia, se l'AT fallisce, o se l'alternativa primaria stessa non riesce a essere eseguita (ad esempio, a causa di un errore di runtime), il sistema esegue un rollback. Ripristina lo stato dal checkpoint salvato ed esegue quindi l'alternativa successiva nella sequenza (Q1). L'output di Q1 viene quindi sottoposto allo stesso test di accettazione. Questo processo continua finché un'alternativa non produce un risultato che supera il test, o finché tutte le alternative non sono state esaurite, momento in cui viene dichiarato un errore a livello di sistema.
The effectiveness of recovery blocks hinges on the diversity of the alternates. The primary and secondary modules should be designed and implemented independently, ideally by different teams using different algorithms or programming languages. This minimizes the chance of a common design flaw (a bug) existing in all alternates, which would cause them all to fail the acceptance test in the same way. The acceptance test itself is a single point of failure and must be simpler and more reliable than the modules it is testing. Compared to N-version programming, another software fault tolerance technique, recovery blocks can be more efficient as they only execute one module at a time, but they introduce latency due to the potential for rollback and re-execution.
UNESCO Nomenclature: 1203
- Informatica
Interruzione
Incrementale
Utilizzo
Nicchia/Specializzato
Precursori
- Concetti di gestione delle eccezioni nei linguaggi di programmazione
- Meccanismi di transazione e rollback del database
- Primi lavori sulla verifica e la correttezza del programma
- Principi generali di ridondanza dall'ingegneria hardware
Applicazioni
- software critici per la sicurezza nei sistemi di segnalamento ferroviario
- sistemi di protezione dei reattori nucleari
- applicazioni aerospaziali in cui il guasto del software è catastrofico
- sistemi operativi sperimentali tolleranti agli errori
Idee e potenziali innovazioni
- generazione automatizzata di test di accettazione da specifiche formali
- meccanismi di checkpointing e rollback accelerati dall'hardware
- integrazione di blocchi di ripristino con apprendimento automatico per il rilevamento predittivo dei guasti
- blocchi di ripristino distribuiti per architetture di microservizi
- blocchi di recupero per proteggere gli smart contract sulle blockchain
- sistemi di blocco di recupero adattivo che riordinano le alternative in base alle prestazioni passate
- framework di blocchi di ripristino leggeri per sistemi embedded con risorse limitate
- blocchi di ripristino simultanei per applicazioni multithread
- verifica formale tools for proving the correctness of recovery block implementations
- software autosintetizzante che genera i propri moduli alternativi
Argomenti correlati: blocchi di ripristino, tolleranza ai guasti del software, diversità di progettazione, test di accettazione, ripristino degli errori a ritroso, checkpointing, Brian Randell, software critico per la sicurezza, moduli ridondanti, programmazione a N versioni.