Plano de Recuperação de Blocos
The recovery block scheme is a software fault-tolerance technique based on design diversity and backward error recovery. It structures a program as a series of blocks, each with a primary module, an acceptance test, and one or more alternate modules. If the primary module’s output fails the acceptance test, the system state is restored, and an alternate module is executed.
O conceito de bloco de recuperação, introduzido por Brian Randell, é uma abordagem estruturada para alcançar tolerância a falhas em software. Ele opera com base no princípio de fornecer módulos de software redundantes, conhecidos como alternativas, para uma determinada operação, juntamente com um mecanismo para verificar a correção do resultado da operação. Os componentes principais são: o teste de aceitação (TA), a alternativa primária (P) e uma sequência de alternativas secundárias (Q1, Q2, ...). Antes de executar a alternativa primária, o sistema salva um ponto de verificação de seu estado atual. Após a conclusão de P, o teste de aceitação é executado na saída. O TA é uma peça lógica crucial que verifica se o resultado é aceitável; ele não precisa provar a correção absoluta, mas sim que o resultado é razoável e consistente.
Se o resultado passar no teste de aceitação (TA), o ponto de verificação é descartado e o programa prossegue. No entanto, se o TA falhar, ou se a alternativa principal falhar ao executar (por exemplo, devido a um erro de tempo de execução), o sistema realiza um rollback. Ele restaura o estado a partir do ponto de verificação salvo e, em seguida, executa a próxima alternativa na sequência (Q1). A saída de Q1 é então submetida ao mesmo teste de aceitação. Esse processo continua até que uma alternativa produza um resultado que passe no teste, ou até que todas as alternativas tenham sido esgotadas, momento em que uma falha em nível de sistema é declarada.
A eficácia dos blocos de recuperação depende da diversidade das alternativas. Os módulos primários e secundários devem ser projetados e implementados independentemente, idealmente por equipes diferentes, utilizando algoritmos ou linguagens de programação distintas. Isso minimiza a probabilidade de uma falha de projeto comum (um bug) existir em todas as alternativas, o que faria com que todas falhassem no teste de aceitação da mesma maneira. O próprio teste de aceitação é um ponto único de falha e deve ser mais simples e confiável do que os módulos que testa. Comparados à programação N-versão, outra técnica de tolerância a falhas de software, os blocos de recuperação podem ser mais eficientes, pois executam apenas um módulo por vez, mas introduzem latência devido à possibilidade de rollback e reexecução.
UNESCO Nomenclature: 1203
Ciência da Computação
Precursores
- Conceitos de tratamento de exceções em linguagens de programação
- Mecanismos de transação e reversão de banco de dados
- Trabalhos iniciais sobre verificação e correção de programas
- Princípios gerais de redundância da engenharia de hardware
Aplicações
- software crítico para a segurança em sistemas de sinalização ferroviária
- sistemas de proteção de reatores nucleares
- Aplicações aeroespaciais onde a falha de software é catastrófica
- sistemas operacionais experimentais tolerantes a falhas
Ideias de Inovação Potencial
Devido ao tráfego de bots de coleta de dados, atualmente superior a 40 mil por dia, este conteúdo é reservado aos membros da comunidade.
> Login < ou > Registrar < (100% gratuito) para acessar isso, assim como todo o restante do conteúdo e das ferramentas restritas.
Relacionado a: blocos de recuperação, tolerância a falhas de software, diversidade de projeto, teste de aceitação, recuperação de erros retroativa, checkpointing, Brian Randell, software crítico para segurança, módulos redundantes, programação em N versões.