N-Version Programming Paulo Henrique Zanin

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas
Advertisements

Sistemas Distribuídos
Manutenção em software Conceitos básicos
Introdução a Algoritmos
Capitulo 6: Entrada e Saída
Sistemas distribuídos Metas de Projeto Prof. Diovani Milhorim
Sistemas Distribuídos
Adélia Barros Testes de Software Adélia Barros
Objetivos do Capítulo Utilizar o processo de desenvolvimento de sistemas delineado neste capítulo e o modelo de componentes de SI, do Capítulo 1, como.
Rational Unified Process
Teste de Software.
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
Engenharia de Software
INTRODUÇÃO A INFORMÁTICA
Faculdade de Ciências Sociais e Aplicadas de Petrolina – FACAPE
Sistemas Distribuídos
INTRODUÇÃO À PROGRAMAÇÃO
Carolina Fonseca Neumar Ribeiro
Recovery Blocks Paulo Junior Penna Pivetta. Introdução Os Projetos de Tolerância a falhas quase que exclusivamente eram dedicado a hardware Tolerância.
Reliability verification of Digital Systems Design based on mutation Analysis Samuel S. Marczak.
Fabio Notare Martins Pontifícia Universidade Católica do Rio Grande do Sul Programa de Pós-Graduação em Ciências da Computação.
Complexidade de Algoritmos
Linguagens de Programação
ESTRUTURA DE COMUNICAÇÃO DE DADOS
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
TSDD Teste de segurança durante o desenvolvimento.
Modelos de Processos de Software
Introdução aos conceitos de Teste de Software
Middleware e Sistemas Distribuídos
REDUNDÂNCIA POR SOFTWARE
Projeto: Capacitação em GP
Sistemas Distribuídos
Carlos Oberdan Rolim Ciência da Computação
Carlos Oberdan Rolim Ciência da Computação
Fiabilidade de Sistemas Informáticos
Análise e Projeto de Sistemas
Gerência de Configuração - GC
Software engineering, the software process and their support M.M. Lehman Apresentadora: Tarciana Dias da Silva.
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
Prof: Leandro Maranim Dei Santi Prof. Eduardo Rossit Paiossin
SISTEMAS OPERACIONAIS I
Experimentação Algorítmica
Teste de Software Conceitos iniciais.
PROGRAMAÇÃO DISTRIBUÍDA Aula 01 Prof. Henrique Mongelli
Sistemas Tolerantes a Falhas: Conceitos e Técnicas
Testes de Software AULA 02 Eduardo Silvestri
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Testes de Software AULA 06 Eduardo Silvestri
Gestão de defeitos.
Introdução a Teste de Software
Introdução a Banco de Dados Aula 04
Testes de Software AULA 03 Eduardo Silvestri
(OU) Hardware da Rede Implementacao da rede
Conceitos de thread Faculdade PITÁGORAS – Outubro de 2012
Processos de Software.
Definição um sistema de BD distribuído consistem em uma rede de várias ocorrências de bases de dados interligadas. característica principal para o usuário,
Subsistema de Entrada e Saída do Kernel
Como elaborar seu currículo? 04/2006 Um currículo bem feito não garante sua contratação mas um currículo mal elaborado elimina-o do processo seletivo.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Engenharia de Software
Capítulo 6: SAD – Arquitetura e aspectos de rede e segurança
Sistemas de Memória Cache em Multiprocessadores
Testes (verificação e validação)
RESPOSTAS A INCIDENTES E PLANO DE CONTINUIDADE DE NEGÓCIOS
TÉCNICAS DE ESTIMATIVAS
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Matheus Stigger Sistemas operacionais em carros. Eletrônica Embarcada A eletrônica embarcada consiste da eletrônica desenvolvida para uma aplicação móvel.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Transcrição da apresentação:

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 Esta técnica é relativamente simples. Eficaz na prevenção de defeitos.

Software Reliability Measureents in N-Version Software Execution Environment. (Michael R. Lyu)‏

Introdução 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

Testes 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

Sistema de simulador de vôo

Conclusã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.

Managing Redundancy in CAN-based networks supporting N-Version Programming. (Julián Proenza, José Miro-Julia and Hans Hansson)‏‏

Introdução 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).

Arquitetura Proposta 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

Conclusão 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.

N-Version Proramming Paulo Henrique Zanin