Tolerância a Falhas
Carlos Oberdan Rolim
Ciência da Computação
Redundância de Hardware
Baseada da replicação de componentes físicos:
Redundância Dinâmica
É provida pelo emprego das técnicas de detecção,
localização e recuperação;
Usada em aplicações que suportam permanecer em um
estado errôneo durante um curto período de tempo;
Geralmente é preferível defeitos temporários do que suportar o custo de
grande quantidade de redundância necessária para o mascaramento de
falhas.
Redundância Dinâmica
Redundância dinâmica ou ativa
Redundância Dinâmica
Estados de um sistema com redundância dinâmica
Redundância Dinâmica
Ex.: através de módulos estepe (standby sparing).
Podem ser Operados de duas formas:
Exemplo de redundância dinâmica
Redundância de Software
Simples replicação de componente idênticos é uma
estratégia de detecção e mascaramento de erros inútil em
software:
Componentes idênticos vão apresentar erros idênticos
Redundância de Software
Exemplos de técnicas de Redundância de Softwares:
Diversidade (ou programação n-versões);
Blocos de Recuperação;
Verificação de Consistência
Diversidade
Programação diversitária;
Técnica de redundância para obter TF em software;
A partir de um problema a ser solucionado, são implementadas diversas
soluções alternativas;
Resposta do sistema é determinada por votação.
Diversidade
Programação n-versões
Diversidade
Não leva em conta se erros em programas alternativos
apresentam a mesma falha;
Ex.: Falsa interpretação de uma especificação ou uma troca de um sinal
de uma fórmula;
Para os erros serem detectados devem se manifestar de
forma diferente nas diversas alternativas;
Diversidade
Pode ser utilizada em todas as fases do desenvolvimento de
um programa:
Da especificação até o teste;
Dependendo do tipo de erro que se quer detectar:
Erro de especificação;
Erro de projeto
Erro de Implementação
Diversidade
Chamada Projeto Diversitário:
Quando o desenvolvimento do sistema é realizado usando diversidade
de metodologias;
Programação n-versões:
Quando se restringe à implementação.
Diversidade
Também pode ser usada como técnica de prevenção de
falhas;
Várias alternativas são desenvolvidas (de projeto ou de
implementação);
Na fase de testes, erros eventuais possam ser localizados e corrigidos;
Se escolhe então, a alternativa em que se detectou a menor ocorrência
de erros.
Diversidade
Vários fatores influenciam a eficácia da programação
diversitária:
as equipes podem trocar algoritmos entre si
os membros das equipes podem, por formação, tender a adotar os
mesmos métodos de desenvolvimento
as equipes podem buscar suporte nas mesmas fontes.
Qualquer uma dessas correlações imprevisíveis se constitui uma fonte
potencial de erros.
Blocos de Recuperação
Semelhante a programação n-versões
Programas secundários só serão necessários na detecção de um erro
no programa primário;
Teste de aceitação;
Programas são executados e testados um a um até que o primeiro
passe no teste de aceitação;
Blocos de Recuperação
Blocos de recuperação
Download

Tolerância a Falhas