Upload
internet
View
118
Download
1
Embed Size (px)
Citation preview
N-Version Programming
Paulo Henrique Zanin
Roteiro
N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation.(Liming Chen and Algirdas Avizienis)
Software Reliability Measureents in N-Version Software Execution Environment. (Michael R. Lyu)
Managing Redundancy in CAN-based networks supporting N-Version Programming. (Julián Proenza, José Miro-Julia and Hans Hansson)
N-Version Programming: A Foult-Tolerance Approach to Reliability of Software Operation
(Liming Chen and Algirdas Avizienis)
Introdução
Programação n-versões é um método para prevenção de defeitos na qual são criado vários módulos contendo a mesma funcionalidade.
Em 1966, em um seminário da IEEE, ocorreu o primeiro debate sobre o viabilidade desta técnica.
Em 1975, foi criado um projeto de pesquisa, intitulado N-Version Programming, para realmente verificar a viabilidade desta abordagem.
Programação N-Versões
Definida como a geração independente de duas ou mais funcionalidade equivalentes no mesmo programa.
A junção destas n-versões é chamada de unidade de software;
Programação independente, onde distinto esforços são empregados a programação destas versões.
Programação N-Versões
Especificação inicial deve possuir:– A funcionalidade que todas as versões devem
possuir;– O formato dos dados para a comparação e o
mecanismo de sincronização destes dados;– Os pontos de checagem dos dados;– A forma de escolha do resultado (votação ou
comparação).
Programação N-Versões
Para a criação de uma unidade de software com N-Versões é necessária a criação de um supervisor (driver).
Este supervisor irá coordenar a execução destas versões e após coordenar o recebimento dos resultados para votação.
Cada versão retorna um vetor, o qual possuí os valores a serem votados, além de informações refentes a execução de cada versão.
Programação N-Versões
Mecanismo de sincronização:
– Serve para as versões indicarem ao supervisor que seus resultados estão prontos;
– Serve também para o supervisor evitar a votação dos resultados ocorra antes que alguma versão não tenha enviado seus resultados;
Programação N-Versões
Após o recebimento dos resultados de cada versão o supervisor deverá levar em consideração:
– Se todos as versões entregaram o resultado dentro do tempo especificado;
– Se os resultados concordam ou discordam;
Comparação
Apresenta uma comparação realizada entre a Programação N-Versões e com a abordagem de blocos de recuperação.
Blocos de recuperação possuí vantagem na evolução do sistema.
Desvantagem é que um bloco de recuperação somente vai ser executado após a obtenção de uma saída incorreta de outro bloco;
Comparação
Devido a isto, a abordagem da programação N-Versões oferece algumas vantagens;
Não há atraso na operação, pois os blocos são executados em paralelos, havendo assim um mascaramento do defeito;
Implementação – Voto Inexato
Concepção de diferentes processos de votação para tratar de resultados não idênticos
Para cálculos numéricos dois tipos de desvios podem aparecer nos resultados:
Esperado: que pode acontecer pela representação inexata de hardware ou devido ao informações especificas do algoritmo;
Inesperado: ocorre devido a uma concepção inadequada, ou pela mal implementação do algoritmo, ou ainda pelo mal funcionamento do hardware.
Implementação – Voto Inexato
Existem duas alternativas que podem ser aplicadas neste voto inexato:
Adaptativa: – Atribuir pesos aos resultados recebidos;– Com isso a intenção é fornecer resultados
aceitáveis e diminuir o efeito destes resultados discordarem;
– Resultado desta função gera um ruído;– Caso esta saída servir de entrada para outras
computações este ruído poderá causar problemas sérios.
Implementação – Voto Inexato
Não-adaptativa:– Determinar um intervalo permitido para estes
resultados.Desvantagem:
– Este intervalo é difícil de ser determinado dinamicamente para cada instância de votação.
Não existe uma estratégia de voto inexato que possa ser aplicado para todos os casos de forma satisfatória.
Viabilidade
RATE:– Também aplicada com 3-versões.
MESS:– Esta técnica foi aplicada com 3-versões.– Mostrou-se relativamente simples, podendo ser
generalizada para outras aplicações similares.
• Esta técnica é relativamente simples.
• Eficaz na prevenção de defeitos.
Conclusão
Software Reliability Measureents in N-Version Software Execution
Environment. (Michael R. Lyu)
• NVP é uma abordagem que esta ganhando bastante aceitação em áreas de aplicações criticas.
• Mas ainda há muitas questões controversas quanto a eficácia desta técnica no aumento de confiabilidade.
• Neste artigo são apresentadas as N-versões de um projeto obtido a partir de seis linguagem diferentes, e avaliar aspectos de confiabilidade dos resultados obtidos.
Introdução
• As linguagens de implementação destas N-versões são ADA, C, Pascal, Modula-2, Prolog, T.
• A aplicação para a qual estas implementação foi desenvolvida é um piloto automático para a aterrissagem de aviões comerciais.
Introdução
Introdução
• Foram realizados três fases de testes, testes de unidade, integração e de aceitação.
• Durante o ciclo de vida deste projeto 93 falhas foram encontrada.
• Algumas falhar ocorridas foram devido ao mal entendimento das especificações iniciais, por parte dos programadores.
• As linguagem de programação orientadas a objetos parecem herdar menos defeitos do que outras linguagens de programação.
Testes
Testes
Sistema de simulador de vôo
• Ao final de todas estas execuções pode-se realmente demonstrar a potencial capacidade de melhoria na confiabilidade de um software desenvolvido a partir da programação com n-versões.
Conclusão
Managing Redundancy in CAN-based networks supporting N-
Version Programming. (Julián Proenza, José Miro-Julia and Hans Hansson)
• Implementação de Miro-Julia:– As versões são executadas em computadores
distintos. – Quando cada uma das versões concluí seu
processamento envia broadcast o resultado.– Estes resultados são enviados através da rede
por um equipamento especial denominado NVXP (N-Version Executivo Processor).•O qual é anexado em cada computador para gerenciar esta comunicação.
Introdução
Introdução
• Propõem eliminar a inconsistência citada:– Pelo fator baixo custo requerido, optou-se por utilizar
computadores normais onde as versões são executas.– Devido ao custo, a confiabilidade e ao desempenho em
tempo real, eles utilizaram Control Area Network (CAN) protocol.
– Além destas alterações no hardware também foi criado um novo software para o gerenciamento de redundância desta arquitetura.•Desenvolvem um novo projeto para o NVXP, chamado de RCMB (Redundancy and Communication Management Boards).
Introdução
• Limites de contenção de erros:– É um mecanismo que procura impedir que uma
falha ocorrida em um determinado nó não se propague, impedindo que ocorram erros.
• Controller Area Network (CAN) protocol, pois oferece uma transmissão confiável.
• É utilizada a topologia de barramento devido a vantagem de reduz o custo e facilidade de extensibilidade da rede.
Arquitetura Proposta
Arquitetura Proposta
• A partir destas mudanças realizadas foi possível solucionar a inconsistência que o projeto do Miro-Julia possuía.
• Com esta abordagem proposta diminui-se possíveis ocorrências de falhas de comunicação.
Conclusão
N-Version Proramming
Paulo Henrique Zanin