Transcript
Page 1: Programação Diversitária

Programação Diversitária

Componentes: Felipe Haack Schmitz - 106396 Lais Berlatto - 104493

Professor: Marcelo Trindade Rebonatto

Sistemas Distribuídos

Page 2: Programação Diversitária

Introdução

●Necessidade atual●Tolerância a falhas - 1967●Dependabilidade

Page 3: Programação Diversitária

Introdução● Dependabilidade

Page 4: Programação Diversitária

Introdução

● N-Versões,● programação N-Autoverificadora● blocos de recuperação por consenso e votação● blocos retry ● programação N-Cópias.

●DiversidadeO foco desse mecanismo consiste em utilizar variadas implementações de um mesmo sistema para obter atolerância a falhas, crendo assim que diferentes projetos e implementações autônomas também vão apresentar falhas independentes.

Page 5: Programação Diversitária

Diversidade

● Ambiente de software com uma versão

Agrupa técnicas que são utilizadas para tolerar parcialmente falhas de projeto de software:Monitorando as técnicas - atomicidade das ações- verificações de decisões-tratamento de exceções

● Ambiente de software com múltiplas versões Diversas versões do mesmo software, com funcionalidades equivalentes

Page 6: Programação Diversitária

Diversidade

● Princípio-chave da diversidade: REDUNDÂNCIA Utilizada nas mais diversas fases do ciclo de vida de um software, desde sua concepção até os testes, sempre levando em conta os tipos de erro que se quer encontrar.

Page 7: Programação Diversitária

Programação N-Versões

● Sugeria por Elmendorf em 1972 ● Conceito - Também chamada de programação

diversitária● Consiste em uma técnica multi-versões em que

todas as versões são desenvolvidas para satisfazer os mesmo requisitos básicos e a definição do resultado correto é realizado pela comparação dos resultados

Page 8: Programação Diversitária

Programação N-Versões

● A programação diversitária acaba resultando em um mascaramento de falhas garantindo a que não serão dadas respostas duvidosas, fazendo uso de recuperação de erros por avanço.

● Esta técnica é considerada estática pelo fato da seleção do resultado final ser definido através de um mecanismo de decisão, ser realizado após obterem-se todos os resultados advindos das diversas versões.

Page 9: Programação Diversitária

Programação N-Versões

●Vantagens● A facilidade no reconhecimento de erros na fase de teste do sistema, a tolerância

tanto de falhas intermitentes quanto de permanentes e a atuação potencial também contra erros externos ao sistema (como por exemplo erros do compilador, do sistema operacional e até mesmo falhas de hardware)

●DesvantagensDesvantagens da técnica também devem ser citadas, como o aumento dos custos de desenvolvimento e manutenção, a complexidade de sincronização das versões e o problema de determinar a correlação das fontes de erro. Experimentos comprovam que o número de manifestações idênticas (erros que assim não seriam detectados) é significativamente menor que o número total de erros.

Page 10: Programação Diversitária

Programação N-Versões

● Fatores que influenciam na eficácia:

● Vários fatores influenciam a eficácia da programação diversitária, como: 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.

Page 11: Programação Diversitária

Resumo

Em suma a programação diversitária, é uma técnica de redundância usada para obter tolerância a falhas em software. A partir de um problema a ser solucionado são implementadas diversas soluções alternativas, sendo a resposta do sistema determinada por votação. Essa técnica é chamada de projeto diversitário quando o desenvolvimento do sistema é realizado de forma diversitária e de programação em N-Versões quando se restringe à implementação do sistema.

Page 12: Programação Diversitária

Implementação (Estudo de caso)

● Paradigmas

● Linguagens de Programação

● Comunicação Socket em Diferentes Linguagens

Page 13: Programação Diversitária

Estrutura do Sistema Computação Diversitária

● Cliente

● Servidor Central

● Servidor c#

● Servidor Python

● Servidor Java

Page 14: Programação Diversitária

Validação dos Dados por Votação

Page 15: Programação Diversitária

Referências

http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html

http://docs.python.org/library/socket.html

http://msdn.microsoft.com/pt-br/library/kx37x362

PULLUM, Laura L. Software Fault Tolerance Techniques and Implementation Artech House, 2001.

Page 16: Programação Diversitária

Referências

JALOTE, P. Fault Tolerance in Distributed systems. New Jersey: Pretince Hall, 1994.

PRADHAN, Dhiraj K. Fault tolerant computer system design. New Jersey: Prentice Hall, 1996

PULLUM, Laura L. Software Fault Tolerance Techniques and Implementation Artech House, 2001.

Page 17: Programação Diversitária

Referências

WEBER, Taisy S. Um roteiro par a exploração dos conceitos básicos de tolerância a falhas, 2002. Disponível em:<http://www.inf.ufrgs.br/~taisy/disciplinas/textos/Dependabilidade.pdf>.Acesso em: 27/11/2011.

JALOTE, P. Fault Tolerance in Distributed systems. New Jersey: Pretince Hall, 1994.

PRADHAN, Dhiraj K. Fault tolerant computer system design. New Jersey: Prentice Hall, 1996.

Page 18: Programação Diversitária

Perguntas?

Obrigado!


Recommended