Programação Diversitária
-
Upload
lais-berlatto -
Category
Technology
-
view
69 -
download
0
description
Transcript of Programação Diversitária
![Page 1: Programação Diversitária](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/1.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/2.jpg)
Introdução
●Necessidade atual●Tolerância a falhas - 1967●Dependabilidade
![Page 3: Programação Diversitária](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/3.jpg)
Introdução● Dependabilidade
![Page 4: Programação Diversitária](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/4.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/5.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/6.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/7.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/8.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/9.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/10.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/11.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/12.jpg)
Implementação (Estudo de caso)
● Paradigmas
● Linguagens de Programação
● Comunicação Socket em Diferentes Linguagens
![Page 13: Programação Diversitária](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/13.jpg)
Estrutura do Sistema Computação Diversitária
● Cliente
● Servidor Central
● Servidor c#
● Servidor Python
● Servidor Java
![Page 14: Programação Diversitária](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/14.jpg)
Validação dos Dados por Votação
![Page 15: Programação Diversitária](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/15.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/16.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/17.jpg)
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](https://reader034.fdocumentos.com/reader034/viewer/2022052323/5585ca1bd8b42a8b0a8b4b0f/html5/thumbnails/18.jpg)
Perguntas?
Obrigado!