Técnicas - Multi-Version
description
Transcript of Técnicas - Multi-Version
Técnicas - Multi-Version
• Duas ou mais versões de uma mesma parte do software (módulo) usadas como meios de detectar e corrigir erros durante a execução.
• Se as versões são produzidas de diferentes maneiras (equipe, algoritmos, ferramentas) então elas falharão de maneiras distintas.
Técnicas - Multi-Version
• Técnicas para múltiplas versões– Recovery Blocks– N-Version Programming– N Self-Checking Programming
Técnicas - Multi-Version
• Recovey Block– Outras versões são desenvolvidas para serem usadas em caso de falha– Um teste de aceitação indica se a saída está dentro do intervalo
esperado para aquele input
Técnicas - Multi-Version
• Recovey Block– Vantagens• A falha conjunta tem menor probabilidade• As versões alternativas podem recuperar o sistema
• Desvantagens – Mesmo diferentes versões podem falhar no
mesmo ponto– O algoritmo apenas considera se a saída é válida
(dentro de certo intervalo), não se é a saída correta
Técnicas - Multi-Version
• N-Version programming– Várias versões são projetadas e desenvolvidas para satisfazer o
mesmo requisito– A decisão do resultado adequado é feito por um algoritmo (o mais
simples é o de voto)
Técnicas - Multi-Version
• N-Version programming– Vantagens
• A falha conjunta tem menor probabilidade• O desenvolvimento das versões pode ocorrer em paralelo• Normalmente a saída da maioria é a correta
• Desvantagens– Mesmo diferentes versões podem falhar no mesmo
ponto– O algoritmo de seleção pode ser complicado de
desenvolver• Voto simples pode piorar a confiabilidade• Todas as saídas podem ser diferentes
Técnicas - Multi-Version
• N Self-Checking Programming– Melhoramento de N-Version, são construídos testes de aceitação para validar
as saídas– N versões, M testes de aceitação são executados
Técnicas - Multi-Version
• N-Self checking programming– Vantagens
• Todas as vantagens de N-Version• A saída é validada dentro de intervalos confiáveis e de
diferentes formas (vários testes de aceitação)
• Desvantagens– Custo de desenvolvimento– Processamento e degradação da performance– Mesmo com tudo isso, não garante a corretude e
robustez
Roteiro
• Motivação• Definição• Exemplos• Técnicas– Falhas de Hardware– Falhas de Software
• Desvantagens• Conclusões
Desvantagens
• Custo• Um componente pode ocultar falhas menores– Em outro componente– Em partes do próprio componente
• Corrigir erros pode passar a ter baixa prioridade– Se as falhas não forem corrigidas, o acumulo pode
causar uma falha do sistema• O sistema de backup pode estar com defeito
Conclusões
• Existem diversas técnicas para melhorar a confiabilidade e robustez de um sistema distribuído
• Técnicas de tolerância a falha ajudam, mas o código ainda tem que ser bom– Não adianta ter defeitos replicados em todas as máquinas
e versões– Complexidade é a maior causa de erros... Simplifique!– Prazos irreais (pra ontem) não ajudam– Utilize algoritmos comprovados e reuse software de
qualidade– Revisão de código
http://youtube.com/watch?v=Kbj8kMvQDfI Primeiro aviao sem piloto(airbus crash due to software error) - verificar veracidadehttp://youtube.com/watch?v=2eQpUgHkBcg If programmers have make a plane (tirando onda) http://youtube.com/watch?v=UZq4sZz56qM Software Crash On German's Millionaire's showhttp://www.youtube.com/watch?v=dXkt_WFNsT8&NR=1
Referênciashttp://www.ece.cmu.edu/~koopman/des_s99/sw_fault_tolerance/ http://en.wikipedia.org/wiki/Fault_tolerant http://en.wikipedia.org/wiki/List_of_software_bugs
http://pt.wikipedia.org/wiki/Toler%C3%A2ncia_a_falhas_em_software http://dmi.uib.es/~jproenza/case/torres-pomales00software.pdf
http://www.cs.tau.ac.il/~nachumd/horror.html• apresentacao sobre sistemas criticos e falhas:
http://www.inf.ed.ac.uk/teaching/courses/seoc/2006_2007/notes/LectureNote21_DependableSystems.pdf• tecnicas para sistemas de tempo real
http://www.eventhelix.com/RealtimeMantra/FaultHandling/• tutorial da NASA
http://techreports.larc.nasa.gov/ltrs/PDF/2000/tm/NASA-2000-tm210616.pdf• artigo q da uma ideia geral em software(muitos links)
http://www.ece.cmu.edu/~koopman/des_s99/sw_fault_tolerance/• padrao de segurança
http://en.wikipedia.org/wiki/IEC_61508