Software Seguro

29
Engenharia de Software Grupo 5 Validação e verificação de proteção Membros: Davi Catunda Eduardo Rocha Horta Rafael Anastácio

description

An overview about software safety.

Transcript of Software Seguro

Page 1: Software Seguro

Engenharia de Software

Grupo 5 – Validação e verificação de

proteção

Membros:

Davi Catunda

Eduardo Rocha

Horta

Rafael Anastácio

Page 2: Software Seguro

Agenda

1. O que é proteção

2. Definição e Importância da Validação e

Verificação

3. Como verificar e validar a proteção de um

software?

4. Papel do Engenheiro de Software

Page 3: Software Seguro

1. O que é proteção

Software Safety:

"É o julgamento das

possibilidades de que o

sistema desenvolvido possa

causar danos aos usuários

ou ao ambiente em uso".

(Sommerville, 2011)

Page 4: Software Seguro

1. O que é proteção

Outra interpretação:

● Protegido contra ataques?

● Dados protegidos?

● Acesso a dados protegido?

● Protegido contra hardware

defeituoso?

Page 5: Software Seguro

1. O que é proteção

Exemplo:

Page 6: Software Seguro

1. O que é proteção

➔O software atende a todos os requisitos

funcionais e não funcionais...

➔… mas será que ele está protegido?

◆ Um software nunca é 100% livre de erros ou

tolerante a falhas;

◆ Alguns erros não percebidos podem passar muito

tempo sem se manifestarem;

Page 7: Software Seguro

1. O que é proteção

➔O software atende a todos os requisitos

funcionais e não funcionais...

➔… mas será que ele está protegido?

(continuação)

◆ Especificação incompleta (não prevê o

comportamento do sistema em situações críticas);

◆ Mau funcionamento de hardware (o sistema passa a

se comportar de maneira não prevista);

Page 8: Software Seguro

1. O que é proteção

➔O software atende a todos os requisitos

funcionais e não funcionais...

➔… mas será que ele está protegido?

(continuação)

◆ Quem utiliza o sistema pode utilizar funcionalidades

do sistema que respondem corretamente ao

solicitado, mas pode levar o sistema a funcionar

incorretamente de uma maneira geral.

Page 9: Software Seguro

1. O que é proteção

➔Por que se preocupar?

◆ O custo da falha;

● Mais barato remover defeitos e erros antes do

software ser entregue do que arcar com custos

dos danos ocasionados por eles.

Page 10: Software Seguro

1. O que é proteção

➔Por que se preocupar? (continuação)

◆ Validação de atributos de proteção.

● Entidades reguladoras;

● Padrões a ser seguidos;

Page 11: Software Seguro

1. O que é proteção

➔Algumas abordagens de proteção:

◆ Evitar o perigo;

◆ Detecção e remoção do perigo;

◆ Limitação dos danos;

Page 12: Software Seguro

2. Definição de Validação &

Verificação

➔ “Doveryai, no proveryai” (“Confie, mas verifique”)

➔ Seu principal objetivo é assegurar que os produtos

cumprem suas especificações e atendem sua utilização

prevista.

➔ Verificação (construir corretamente o produto)◆ Assegurar que o software está sendo desenvolvido de

um modo apropriado e consistente

➔ Validação (construir o produto correto)◆ Visa assegurar que o software cumpre os requisitos e

expectativas estabelecidos pelo cliente

Page 13: Software Seguro

2. Importância da V & V

➔ Ciclo de vida da Falha:

◆ Designers e desenvolvedores são humanos.

◆ Humanos cometem erros.

◆ Erros não detectados causam falhas no sistema.

◆ Falhas afetam a segurança dos dados, os usuários

e deste modo financeiramente o software.

➔ Para quebrar esse ciclo é preciso:

◆ Encontrar e corrigir, o mais cedo possível, os erros

durante todo o desenvolvimento do software.

◆ Ou previni-los com especificações mais rigorosas,

com padrões ou com testes antes da codificação.

Page 14: Software Seguro

O que deve ser validado e verificado

➔ Fatores de qualidade operacionais

◆ Correção, eficiência, robustez, confiabilidade,

usabilidade, utilidade

➔Fatores de qualidade de revisão

◆ Manutenção, evolução e avaliação

➔Fatores de qualidade de transição

◆ Instalação, reutilização e interação

Page 15: Software Seguro

2. Atividades de V & V

➔ Estásticas - análise e checagem de documentos

◆ Inspeção● Análise da representação estática do software para descobrir

problemas

● Pode ser suplementada pelo uso de ferramentas de

documentação e de análise de código

◆ Verificação formal

➔ Dinâmicas - execução de código

◆ Testes (séries de casos de testes)● Detecção de defeitos

● De validação

◆ Verificação automática

Page 16: Software Seguro

2. Inspeção

➔ Podem ser feitas sem a execução do software,

podendo ser feita a qualquer momento.

➔ Etapas

◆ Planejamento: materiais e inspetores são

selecionados

◆ Apresentação e preparação: Grupo recebe

instruções essenciais e se prepara.

◆ Reunião: Os defeitos encontrados são

categorizados

◆ Retrabalho: O autor deve corrigir os erros

◆ Acompanhamento: Os testes são refeitos para

assegurar que nenhum erro foi introduzido.

Page 17: Software Seguro

2. Testes

➔ Etapas:

Planejamento => Especificação dos casos de testes

=>Execução => Análise dos resultados

➔ Técnicas

◆ Funcional (caixa-preta)

◆ Estrutural (caixa-branca)

➔ Estratégias de Testes

◆ Unidade: testar cada modulo separadamente

◆ Integração: testar interfaces entre módulos

◆ Validação

Page 18: Software Seguro

3. Como verificar e validar a

proteção de um software?

➔ Principal referência:

NASA Software Safety Guidebook, 2004.

➔ Safe software does not just “happen”. It is crafted by a

team of software engineers and designers from well-

understood requirements.

➔ 5 regras para o desenvolvimento de software seguro:

1. Comunique-se!

2. Siga boas práticas de programação!

3. Realize análises de segurança e desenvolvimento!

4. Incorpore metodologias, técnicas e design apropriados!

5. "Caveat Emptor"

Page 19: Software Seguro

3. Como verificar e validar a

proteção de um software?

➔ 1. Comunique-se!

➔ Previna desentendimentos: suposições fazem parte da

rotina, mas não são sempre iguais.

➔ Identifique riscos antes que se tornem problemas:

prática do Brainstorming! Um time diversificado

gerencia melhor os riscos e produz as melhores

soluções.

Page 20: Software Seguro

3. Como verificar e validar a

proteção de um software?

➔ 2. Siga boas práticas de programação!

➔ Não existe uma "silver bullet": estude as opções

disponíveis antes de definir quais metodologias

empregar!

➔ Nem sempre as soluções mais modernas são as mais

seguras: processos e técnicas já consolidadas geram

software com menos erros que processos recém

criados.

Page 21: Software Seguro

3. Como verificar e validar a

proteção de um software?

➔ 3. Realize análises de segurança e desenvolvimento!

➔ Análises de segurança do sistema: Têm o objetivo de

exercitar o sistema de tal modo que todas as

funcionalidades e limites sejam testados, e sua

capacidade de suportar falhas seja bem conhecida.

➔ Ao acrescentar código, verificar se erros não foram

inseridos.

➔ E se não houver tempo para testes exaustivos? Testar

todos os casos é praticamente impossível! Utilize a

análise de risco para priorizar testes.

Page 22: Software Seguro

3. Como verificar e validar a

proteção de um software?

➔ 4. Incorpore metodologias, técnicas e design

apropriados!

➔ Alguns consagrados: Design patterns, refatoração,

técnicas de software inspection

➔ Gerenciamento de requisitos (ou Requirement

management): especificação através de requisitos não-

ambíguos, completos, consistentes, verificáveis e

rastreáveis.

Page 23: Software Seguro

3. Como verificar e validar a

proteção de um software?

➔ 5. "Caveat Emptor"

➔ Ao usar algum recurso "off-the-shelf", saiba de suas

possíveis falhas: se não foi programado por você,

considere possíveis falhas! (Incluindo compilador, editor,

debugger…)

➔ Como validar? Não se desespere! Solução: estudo

minucioso de bibliotecas e APIs sendo utilizadas. Saiba

como tais ferramentas podem falhar e verifique!

Page 24: Software Seguro

4. Papel do Engenheiro de Software

➔ O processo de desenvolvimento de software deve ser

um processo disciplinado e planejado

➔ A criação de qualquer software envolve mais do que

simplesmente codificar

➔ É importante existir uma metodologia de

desenvolvimento que inclua a análise dos requisitos,

design e verificação

Page 25: Software Seguro

4. Papel do Engenheiro de Software

➔ Um processo de desenvolvimento de software bem

definido ajuda a assegurar que:

◆ todos os requerimentos foram entendidos, bem

documentados e incorporados no software

◆ todas as funcionalidades estão de fato incorporadas

no sistema e todos os elementos funcionam sem

conflito

◆ a análise e verificação garantem a viabilidade do

produto dentro das condições estabelecidas

Page 26: Software Seguro

4. Papel do Engenheiro de Software

➔ Trabalhar com engenheiros de sistemas e engenheiros

de proteção para ajudar a formular as funcionalidades

do sistema e determinar o papel do software no projeto

➔ Planos completos de gerenciamento e desenvolvimento

◆ horários, resultados, comentários e outros detalhes

◆ ciclo de vida, metodologia, linguagem, normas e

técnicas a serem utilizadas

➔ Analisar os requerimentos e criar especificação

Page 27: Software Seguro

4. Papel do Engenheiro de Software

➔ Criar um design que implementa os requerimentos. A

análise garante que o design será capaz de atingir os

requerimentos funcionais e de performance

➔ Implementação do código e utilização de teste unitário

➔ Testar o software. O teste de aceitação final é feito

quando o sistema está pronto para ser entregue

Page 28: Software Seguro

4. Papel do Engenheiro de Proteção

de Software

➔ Fazer análises ou verificar as análises dos outros. Esse

trabalho de análise se estende durante todo o período

de desenvolvimento do software e durante a fase de

manutenção

➔ Implementar as tarefas encontradas durante o processo

de análise e garantir que serão incluídas nos

requerimentos do software e nas demais fases do

processo de desenvolvimento

Page 29: Software Seguro

4. Papel do Engenheiro de Proteção

de Software

➔ Verificar as mudanças após as correções dos problemas

(normalmente por inspeção ou teste). Além disso, deve

verificar que as mudanças não afetaram negativamente

alguma outra porção do sistema

➔ Sugerir mudanças no processo de desenvolvimento e

nas atividades de verificação para aumentar a proteção

Um bom processo de desenvolvimento, bem entendido e

executado, facilita a criação de um software mais seguro e

confiável