SlideShare uma empresa Scribd logo
1 de 29
Engenharia de Software
Grupo 5 – Validação e verificação de
proteção
Membros:
Davi Catunda
Eduardo Rocha
Horta
Rafael Anastácio
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
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)
1. O que é proteção
Outra interpretação:
● Protegido contra ataques?
● Dados protegidos?
● Acesso a dados protegido?
● Protegido contra hardware
defeituoso?
1. O que é proteção
Exemplo:
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;
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);
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.
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.
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;
1. O que é proteção
➔Algumas abordagens de proteção:
◆ Evitar o perigo;
◆ Detecção e remoção do perigo;
◆ Limitação dos danos;
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
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.
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
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
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.
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
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"
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.
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.
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.
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.
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!
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
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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testes
elliando dias
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
paulo peres
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
guest23778e
 

Mais procurados (20)

Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Ferramentas de Gestão de Testes
Ferramentas de Gestão de TestesFerramentas de Gestão de Testes
Ferramentas de Gestão de Testes
 
Fundamentos de Testes de Software - Qualidad
Fundamentos de Testes de Software - QualidadFundamentos de Testes de Software - Qualidad
Fundamentos de Testes de Software - Qualidad
 
Fundamentos de Testes de Software
Fundamentos de Testes de SoftwareFundamentos de Testes de Software
Fundamentos de Testes de Software
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Papéis em teste e qualidade de software
Papéis em teste e qualidade de softwarePapéis em teste e qualidade de software
Papéis em teste e qualidade de software
 
Testes Funcionais
Testes FuncionaisTestes Funcionais
Testes Funcionais
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1Validação e Testes de Software - MOD1
Validação e Testes de Software - MOD1
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes de Software - Fundamentos
Testes de Software - FundamentosTestes de Software - Fundamentos
Testes de Software - Fundamentos
 
Testes de software
Testes de softwareTestes de software
Testes de software
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 
Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
Testes e Refatoração
Testes e RefatoraçãoTestes e Refatoração
Testes e Refatoração
 

Destaque

Aula 15 administração do tempo
Aula 15   administração do tempoAula 15   administração do tempo
Aula 15 administração do tempo
Luiz Siles
 

Destaque (8)

DEVELOPMENT OF A PERSONAL ORGANIZATION SYSTEM BASED ON GTD FOR MOBILE DEVICES...
DEVELOPMENT OF A PERSONAL ORGANIZATION SYSTEM BASED ON GTD FOR MOBILE DEVICES...DEVELOPMENT OF A PERSONAL ORGANIZATION SYSTEM BASED ON GTD FOR MOBILE DEVICES...
DEVELOPMENT OF A PERSONAL ORGANIZATION SYSTEM BASED ON GTD FOR MOBILE DEVICES...
 
Sebrae - Google Apps
Sebrae - Google AppsSebrae - Google Apps
Sebrae - Google Apps
 
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do FacebookFacebook's Hack programming language / Linguagem de programação Hack do Facebook
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
 
Palestra
PalestraPalestra
Palestra
 
GTD em 10 percepções
GTD em 10 percepçõesGTD em 10 percepções
GTD em 10 percepções
 
Gestao do Tempo
Gestao do TempoGestao do Tempo
Gestao do Tempo
 
Aula 15 administração do tempo
Aula 15   administração do tempoAula 15   administração do tempo
Aula 15 administração do tempo
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Semelhante a Software Seguro

Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
Cloves da Rocha
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
Aline Zanin
 

Semelhante a Software Seguro (20)

Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
Aula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptxAula 8 - Plano de Teste.pptx
Aula 8 - Plano de Teste.pptx
 
Segurança em Desenvolvimento de Software
Segurança em Desenvolvimento de SoftwareSegurança em Desenvolvimento de Software
Segurança em Desenvolvimento de Software
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
3 engenharia de software
3   engenharia de software3   engenharia de software
3 engenharia de software
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 
Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de software
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptx
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de Software
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 
Introdução aos fundamentos de teste de software 3
Introdução aos fundamentos de teste de software 3Introdução aos fundamentos de teste de software 3
Introdução aos fundamentos de teste de software 3
 
Testes unitários x unit
Testes unitários   x unitTestes unitários   x unit
Testes unitários x unit
 

Software Seguro

  • 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