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