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
Download

Slide 1