Your SlideShare is downloading. ×
0
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Software Seguro
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Software Seguro

49

Published on

An overview about software safety.

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
49
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Engenharia de Software Grupo 5 – Validação e verificação de proteção Membros: Davi Catunda Eduardo Rocha Horta Rafael Anastácio
  • 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. 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. 1. O que é proteção Outra interpretação: ● Protegido contra ataques? ● Dados protegidos? ● Acesso a dados protegido? ● Protegido contra hardware defeituoso?
  • 5. 1. O que é proteção Exemplo:
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×