150 likes | 253 Views
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.
E N D
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_fault_tolerance/ http://en.wikipedia.org/wiki/Fault_tolerant http://en.wikipedia.org/wiki/List_of_software_bugshttp://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 • apresentacaosobresistemascriticos e falhas: http://www.inf.ed.ac.uk/teaching/courses/seoc/2006_2007/notes/LectureNote21_DependableSystems.pdf • tecnicasparasistemas 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 daumaideiageralem 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