n-version programming paulo henrique zanin. roteiro n-version proramming: a foult-tolerance approach...

32
N-Version Programming Paulo Henrique Zanin

Upload: internet

Post on 16-Apr-2015

118 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

N-Version Programming

Paulo Henrique Zanin

Page 2: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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)

Page 3: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

N-Version Programming: A Foult-Tolerance Approach to Reliability of Software Operation

(Liming Chen and Algirdas Avizienis)

Page 4: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 5: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 6: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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).

Page 7: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 8: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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;

Page 9: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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;

Page 10: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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;

Page 11: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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;

Page 12: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 13: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 14: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 15: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

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.

Page 16: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• Esta técnica é relativamente simples.

• Eficaz na prevenção de defeitos.

Conclusão

Page 17: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Software Reliability Measureents in N-Version Software Execution

Environment. (Michael R. Lyu)

Page 18: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 19: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 20: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Introdução

Page 21: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 22: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Testes

Page 23: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Sistema de simulador de vôo

Page 24: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 25: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Managing Redundancy in CAN-based networks supporting N-

Version Programming. (Julián Proenza, José Miro-Julia and Hans Hansson)

Page 26: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 27: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Introdução

Page 28: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 29: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 30: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

Arquitetura Proposta

Page 31: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

• 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

Page 32: N-Version Programming Paulo Henrique Zanin. Roteiro N-Version Proramming: A Foult-Tolerance Approach to Reliability of Software Operation. (Liming Chen

N-Version Proramming

Paulo Henrique Zanin