Software Seguro

262 views
175 views

Published on

An overview about software safety.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
262
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Software Seguro

  1. 1. Engenharia de Software Grupo 5 – Validação e verificação de proteção Membros: Davi Catunda Eduardo Rocha Horta Rafael Anastácio
  2. 2. 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
  3. 3. 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)
  4. 4. 1. O que é proteção Outra interpretação: ● Protegido contra ataques? ● Dados protegidos? ● Acesso a dados protegido? ● Protegido contra hardware defeituoso?
  5. 5. 1. O que é proteção Exemplo:
  6. 6. 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;
  7. 7. 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);
  8. 8. 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.
  9. 9. 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.
  10. 10. 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;
  11. 11. 1. O que é proteção ➔Algumas abordagens de proteção: ◆ Evitar o perigo; ◆ Detecção e remoção do perigo; ◆ Limitação dos danos;
  12. 12. 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
  13. 13. 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.
  14. 14. 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
  15. 15. 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
  16. 16. 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.
  17. 17. 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
  18. 18. 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"
  19. 19. 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.
  20. 20. 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.
  21. 21. 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.
  22. 22. 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.
  23. 23. 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!
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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

×