Técnicas - Multi-Version

15

description

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. - PowerPoint PPT Presentation

Transcript of Técnicas - Multi-Version

Page 1: Técnicas - Multi-Version
Page 2: 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.

Page 3: Técnicas - Multi-Version

Técnicas - Multi-Version

• Técnicas para múltiplas versões– Recovery Blocks– N-Version Programming– N Self-Checking Programming

Page 4: Técnicas - Multi-Version

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

Page 5: Técnicas - Multi-Version

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

Page 6: Técnicas - Multi-Version

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)

Page 7: Técnicas - Multi-Version

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

Page 8: Técnicas - Multi-Version

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

Page 9: Técnicas - Multi-Version

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

Page 10: Técnicas - Multi-Version

Roteiro

• Motivação• Definição• Exemplos• Técnicas– Falhas de Hardware– Falhas de Software

• Desvantagens• Conclusões

Page 11: Técnicas - Multi-Version

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

Page 12: Técnicas - Multi-Version

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

Page 13: Técnicas - Multi-Version

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

Page 14: Técnicas - Multi-Version

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

Page 15: Técnicas - Multi-Version

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