Engenharia de Confiança. Helena Macedo Reis Luis Fernando de Souza Moro

Documentos relacionados
Organização para Realização de Teste de Software

Verificação e Validação. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 22 Slide 1

Contextualização. Gerenciamento de riscos de Proteção. Contextualização. Objetivo

Engenharia de Software II

Engenharia de Proteção. Dario Pintor Venilton Falvo Júnior

Mecanismos de Interrupção e de Exceção, Barramento, Redes e Sistemas Distribuídos. Sistemas Operacionais, Sistemas

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

Verificação e Validação (V & V)

Verificação e Validação

Documento de Requisitos*

falhas em sistemas distribuídos

Desenvolvimento de Software. Testes de Software. Tópicos da Aula. Onde estamos... Verificação x Validação. Testes de Software

Introdução a Teste de Software

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

Engenharia de Software Sistemas Sociotécnicos

3. Engenharia dos requisitos de software

TESTES DE SOFTWARE. Profa. Maria Auxiliadora

Qualidade de software. Prof. Emiliano Monteiro

Engenharia de Software

Sistemas Embarcados (embutidos) Paulo C. Masiero

Confiança. Objetivos. Reflete o grau de confiança do usuário no sistema

Estilos Arquiteturais

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Instituto Federal de São Paulo Campus Presidente Epitácio. Disciplina: História da Ciência e da Tecnologia

Verificação e Validação

Bruno R. N. Matheus. Engenharia de Software Prof. Paulo Masiero

Métodos formais. Especificação Formal. Aceitação de métodos formais. O uso de métodos formais. Especificação e projeto

Teste de Software. Competência: Entender as técnicas e estratégias de testes de Software

Computadores. HW e SW

Banco de Dados. SGBDs. Professor: Charles Leite

Política de Controles Internos

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

Análise e Projeto Orientado a Objetos

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2016

Qualidade e Certificação em Software. Prof. Cesar 1

Conceitos de Linguagens de Programação

Banco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)

Engenharia de Software

Política Controles Internos

CONHECIMENTOS ESPECÍFICOS

Análise e projeto de sistemas

TESTES DE SOFTWARE 1. Fundamentos sobre testes de software

Requisitos de Software

Organização para Realização de Teste de Software Quando o teste se inicia há um conflito de interesses:

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

BANCO DE DADOS 2 TRANSAÇÃO

Engenharia de Software

VERIFICAÇÃO & VALIDAÇÃO

Projeto de Arquitetura

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Capítulo 20 - Manutenção de Software. Os Fatores de Qualidade de Software focalizam três aspectos importantes do Software Produto: (ISO 9126)

Projeto de Linguagem. Linguagens de Programação

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Engenharia de Software

CAP. VI ANÁLISE SEMÂNTICA

Designing Data Intensive Applications

Teste de Software. Karen Frigo Busolin Novembro / 2010

- 1ª Lista de Exercícios -

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Especificação de Sistemas de Software e a UML

RBI - RISK BASED INSPECTION O QUE É PRECISO SABER?

Gerência de Projetos e Qualidade de Software. Prof. Walter Gima

Análise e Modelagem de Desempenho de Sistemas de Computação. Profa. Jussara M. Almeida 1 o Semestre de 2014

Arquitetura dos SBDs Características e Benefícios Visão Geral de Projeto de BD MER: Entidades e Atributos Atividade.

Introdução à Qualidade de Software

Teste de Software Básico

Política de Controles Internos

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Universidade Federal do Maranhão

Estratégias de Testes Parte I

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Princípios da Engenharia de Software aula 03

Controle - 3. Realizar o Controle da Qualidade Relatório de Desempenho. Mauricio Lyra, PMP

LIVRO ENGENHARIA DE SOFTWARE FUNDAMENTOS, MÉTODOS E PADRÕES

Teste de Software. Prof. Camila. Pedro de Assis Sobreira Jr.

Avaliação Experimental em Sistemas Autonômicos

Engenharia de Software II

Modelagem Orientada a Objetos

Engenharia de Software.

Segurança e Auditoria de Sistemas. Prof. Alessandra Bussador

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Análise de sistemas. Engenharia de Requisitos

BANCO DE DADOS I. Prof. Luiz Antônio Vivacqua C. Meyer

Qualidade de Software QUALIDADE DE SOFTWARE PRODUTO

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

TECNOLOGIAS DE CONSTRUÇÃO

Engenharia de Software Aula 2.1 Introdução à Engenharia de Requisitos. Prof. Bruno Moreno

Requisitos de Software

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Apresentação da Disciplina

Problemas e Práticas Recomendadas no Desenvolvimento de Software

AUDITORIA DE SISTEMAS DE INFORMAÇÃO

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

Transcrição:

Engenharia de Confiança Helena Macedo Reis Luis Fernando de Souza Moro 1

Engenharia de Confiança Preocupada com técnicas que aumentam a confiança e diminui os riscos de falhas Falha pode causar perda de vidas ou financeira Sistemas críticos: Controle de processos; Sistemas de proteção; Sistemas médicos Sistemas de controle de voo. 2

Engenharia de Confiança As técnicas usadas na Engenharia de Confiança suportam três abordagens: Prevenção de defeitos; Detecção e correção de defeitos; Tolerância. Os sistemas críticos são avaliados por órgãos reguladores. 3

Engenharia de Confiança 4

Diversidade e Redundância Exemplos: Fechaduras de uma casa Realização de backup Processos seguros Maior dificuldade para compreender o sistema Menor possibilidade de encontrar erros que resultem em falhas Empresas utilizam as duas abordagens: Airbus 340 Hardware e Software redundantes Boeing 777 Hardware redundante 5

Processos confiáveis Para um processo ser considerado confiável deve seguir os seguintes atributos: 6

Processos confiáveis As atividades que podem serem incluídas em um processo confiável são: Revisões de requisitos; Gerenciamento de requisitos; Especificação formal; Sistema de modelagem; Inspeções de projeto e programa; Análise estática; Planejamento e gerenciamento de testes. 7

Arquiteturas de Sistemas Confiáveis Sistemas de Proteção Arquitetura de Auto monitoramento Programação N-Version Diversidade de Software 8

Sistemas de Proteção 9

Arquitetura de Auto monitoramento 10

Arquitetura de Auto monitoramento Sistema de voo do Airbus 11

Programação N-Version 12

Diversidade de software Independência nas implementações Equipes diferentes Politicas explicitas Métodos de projeto Diferentes linguagens Diferentes ambientes de desenvolvimento Diferentes algoritmos 13

Diversidade de software Especificação detalhada Idealmente Sem dependência Diferentes falhas Mais confiabilidade 14

Diversidade de software Porém Impossível alcançar a independência completa Membros com mesma origem cultural Requisitos incorretos Redução de erros Especificações detalhadas independentes Diferentes linguagens (especificação formal, modelo baseado em estados) Sistema de 3 canais, 5 a 9 vezes mais confiável Custo X Confiabilidade 15

Programação Confiável Programação Boas praticas de programação Diretrizes de programação confiável 1. Limitar a visibilidade de informação em um programa 2. Verificar todas as entradas para validade 3. Fornecer um tratador para todas as exceções 4. M inimizar o uso de construções propensas a erros 5. Fornecer recursos de reiniciação 6. Verificar limites d e vetor 7. Incluir timeouts ao chamar componentes externos 8. Nomear todas as constantes que representam valores do mundo real 16

Diretriz 1: Limitar a visibilidade de informação em um programa Militares e informações Acessos componentes Tipos abstratos Fila de pedidos de serviço 17

Diretriz 2: Verificar todas as entradas para validade Verificar leitura das entradas Intervalos (Probabilidade) Tamanhos (Conta bancaria) Representações (Nome) Razoabilidade (Conta de agua) Falha (Reinserir, valor antigo) 18

Diretriz 3: Fornecer um tratador para todas as exceções Exceções Tratamento Componente superior Processamento alternativo Run-time Tolerância a defeitos 19

Diretriz 4: Minimizar o uso de construções propensas a erros Construções e técnicas Go-to Código espaguete Números de ponto flutuante Comparação Ponteiros Área de memoria 20

Diretriz 4: Minimizar o uso de construções propensas a erros Alocação dinâmica de memoria Falta de memoria Paralelismo Dependência Recursão Logica difícil Memoria Interrupções Encerramento de uma operação critica 21

Diretriz 4: Minimizar o uso de construções propensas a erros Herança Entender comportamento Varias instancias Alias Perda de declarações Vetores não limitados Overflow de buffer Entradas default Entradas inesperadas Cuidado na utilização 22

Diretriz 5: Fornecer recursos de reiniciação Transações curtas Transações longas Checkpoint Comercio eletrônico Exceção 23

Diretriz 6: Verificar limites de vetor Tamanhos fixos Verificação de índices Overhead Garantia pelo desenvolvedor 24

Diretriz 7: Incluir timeouts ao chamar componentes externos Espera de resposta Timeouts Recuperação 25

Diretriz 8: Nomear todas as constantes que representam valores do mundo real Entidades do mundo real Constantes Erros Alteração de valor 26