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 veracidade http://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 show http://www.youtube.com/watch?v=dXkt_WFNsT8& NR=1 Referências http://www.ece.cmu.edu/~koopman/des_s99/sw_f ault_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_f alhas_em_software http://dmi.uib.es/~jproenza/case/torrespomales00software.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/n otes/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/NASA2000-tm210616.pdf • artigo q da uma ideia geral em software(muitos links) http://www.ece.cmu.edu/~koopman/des_s99/sw_fault_toler ance/ • padrao de segurança http://en.wikipedia.org/wiki/IEC_61508