73
Professora: Jenifer Vieira Disciplina Engenharia de Software I UNIDADE I Verificação e Validação 1

Engenharia de Software _VerificaçaoValidaçao

Embed Size (px)

DESCRIPTION

Engenharia de Software _VerificaçaoValidaçao

Citation preview

Page 1: Engenharia de Software _VerificaçaoValidaçao

Professora: Jenifer Vieira

Disciplina Engenharia de Software I

UNIDADE I

Verificação e Validação

1

Page 2: Engenharia de Software _VerificaçaoValidaçao

Compreender diferenças entre verificação e

validação de software.

Importância do processo de verificação e

validação.

Revisões.

Inspeções.

Exercícios de Fixação.

Objetivos

2

Page 3: Engenharia de Software _VerificaçaoValidaçao

Quais foram os

maiores

desafios?

Alguém já testou algum software?

3

Page 4: Engenharia de Software _VerificaçaoValidaçao

As falhas causam prejuízos financeiros

As falhas causam a perda de confiança do

cliente

Quais motivações para realização de Teste?

4

.....

Page 5: Engenharia de Software _VerificaçaoValidaçao

Teste é um processo

caro

Dificuldade em

implantar um processo

de teste

Desconhecem

a relação

custo/benefício

Só se preocupam

com teste na fase

final do projeto

Desconhecem

técnicas de teste

adequadas

Mas... por que algumas empresas não testam?

5

Page 6: Engenharia de Software _VerificaçaoValidaçao

Processo composto de

atividades que asseguram que o

software cumpra com suas

especificações e atenda as

necessidades dos usuários.

Processo de Verificação e Validação – V&V

6

Page 7: Engenharia de Software _VerificaçaoValidaçao

Objetivo:

Assegurar que o software cumpra as suas especificações

e atenda às necessidades dos usuário/cliente.

Quando acontece:

Ao longo do processo de desenvolvimento.

Requisitos.

Inspeções de Código.

Teste de Produto.

Processo de Verificação e Validação – V&V

7

Page 8: Engenharia de Software _VerificaçaoValidaçao

De acordo com Boehm (1979)

Verificação

“Estamos construindo corretamente o produto ?”

O software está de acordo com suas especificações.

Validação

“Estamos construindo o produto correto?”

O sistema atende às expectativas do cliente/usuário.

As especificações do software nem sempre estão de acordo com as expectativas dos usuários.

Verificação e Validação – V&V

8

Page 9: Engenharia de Software _VerificaçaoValidaçao

Verificação se preocupa com a construção correta do software,

analisando se o programa atende a sua especificação.

Validação se destina a mostrar que o

programa realiza o que o usuário

necessita, o que foi solicitado.

Processo de Verificação e Validação – V&V

9

Page 10: Engenharia de Software _VerificaçaoValidaçao

Descobrir defeitos em um sistema.

Avaliar se o sistema é útil.

Avaliar se o sistema pode ser utilizado em

determinadas situações operacionais.

Quais os objetivos da V & V?

10

Page 11: Engenharia de Software _VerificaçaoValidaçao

Modelo em V

11

Page 12: Engenharia de Software _VerificaçaoValidaçao

Modelo em V

12

Page 13: Engenharia de Software _VerificaçaoValidaçao

Projeto prematuro de Testes:

Ao projetar testes, problemas são encontrados;

Problemas encontrados cedo são baratos de corrigir;

Problemas mais significativos são encontrados primeiro;

Não há trabalho adicional;

Projeto de testes pode impactar os requisitos!

Modelo em V

13

Page 14: Engenharia de Software _VerificaçaoValidaçao

Modelo em V

14

Page 15: Engenharia de Software _VerificaçaoValidaçao

Modelo em V

15

Page 16: Engenharia de Software _VerificaçaoValidaçao

Dentre as 10 áreas de conhecimento, “Verificação e Validação” está presente na Qualidade de Software, na sub-área de Processo de Gerência de Qualidade.

Se existe a Garantia de Qualidade de SW, é porque

existiu um esforço da Verificação e Validação. Avaliar produtos (finais ou intermediários) de software ao

longo de todo o ciclo de produtos. Garantir que os requisitos de software atendam aos

usuários.

Verificação e Validação – SWEBOK (Software Engineering Body of Knowledge)

16

Page 17: Engenharia de Software _VerificaçaoValidaçao

Dentre os 7 níveis do modelo, a Verificação e Validação estão localizados no nível D (4 Nível de maturidade), chamado Largamente Definido.

Verificação: “Confirmar que cada serviço e/ou produto de trabalho do processo ou do projeto reflete apropriadamente os requisitos específicos.”

Validação: “Conformar que um produto ou componente do produto atenderá a seu uso pretendido quando colocado no ambiente par qual foi desenvolvido.”

Verificação e Validação – MPS.BR

17

Page 18: Engenharia de Software _VerificaçaoValidaçao

Dentre os 5 níveis do modelo, a Verificação e Validação estão localizados no nível 3 nível de maturidade, chamado Definido.

Verificação: “KPA – Assegurar que os produtos de trabalho selecionados satisfazem seus requisitos especificados.”

Validação: “KPA – Demonstrar que o produto ou componentes do produto satisfazem seu uso pretendido quando colocado no ambiente pretendido.”

Verificação e Validação – CMMI

18

Page 19: Engenharia de Software _VerificaçaoValidaçao

Uma revisão é uma leitura crítica do artefato e

de sua documentação, anotando:

os problemas encontrados.

dúvidas e dificuldades de compreensão.

possibilidades de melhorias.

Técnicas de V& V - Revisão

19

Page 20: Engenharia de Software _VerificaçaoValidaçao

Atividade na qual um

artefato de software pode

ser observado pela equipe

do projeto, gerentes,

usuários, clientes ou outras

partes interessadas.

Revisão

20

Page 21: Engenharia de Software _VerificaçaoValidaçao

Garantir que o artefato de software esteja em

conformidade com suas especificações.

Verificar se seu desenvolvimento esta de acordo

com os planos, padrões e diretrizes aplicáveis

para o projeto.

Objetivo da Revisão

21

Page 22: Engenharia de Software _VerificaçaoValidaçao

Segundo vários autores a revisão quando é

praticada encontra de 60% a 80% do total dos

problemas encontrados

Yourdon diz que se economiza aproximadamente

40% do custo total de desenvolvimento quando

se pratica revisões.

Por que fazer Revisões?

22

Page 23: Engenharia de Software _VerificaçaoValidaçao

Revisão pelo próprio autor(desktop checking).

Revisão por colega (peer review).

Revisões Progressiva.

Formas para realizar uma Revisão

23

Page 24: Engenharia de Software _VerificaçaoValidaçao

O autor lê e anota todos os problemas encontrados para, depois, removê-los.

Inconvenientes:

o autor tende a “ler o que acha que está escrito e não o que está de fato escrito”.

erros de entendimento não são observáveis.

sujeito à síndrome da “ideia fixa”.

Revisão pelo próprio autor(desktop checking)

24

Page 25: Engenharia de Software _VerificaçaoValidaçao

Um dos colegas do autor lê e anota todos os

problemas encontrados.

formulário para anotações.

ninguém deve ficar ofendido com as anotações.

o que está em jogo é a qualidade do artefato!

Revisão por colega (peer review)

25

Page 26: Engenharia de Software _VerificaçaoValidaçao

Seleciona-se um conjunto de colegas que farão a

revisão.

cada um com uma determinada especialidade.

cada colega lê e anota todos os problemas encontrados

dentro de sua especialidade.

a seguir passa a diante para o próximo colega da lista.

Revisões progressivas

26

Page 27: Engenharia de Software _VerificaçaoValidaçao

Simplicidade.

Eficácia.

apesar de informais, revisões tendem a encontrar um número significativo de problemas.

quando feitas por pessoas treinadas em aspectos formais (prova da corretude) podem ser muito mais eficazes.

Eficiência

em uma única revisão identifica-se uma quantidade grande de problemas.

Baixo custo

algumas coisas podem ser automatizadas.

Realização de Revisões - Prós

27

Page 28: Engenharia de Software _VerificaçaoValidaçao

Informalidade

a qualidade da revisão depende excessivamente dos revisores (proficiência, cultura?)

Dificuldade em determinar a confiabilidade da revisão

qual é a percentagem dos problemas existentes que tendem a ser encontrados?

qual a gravidade dos problemas encontrados?

Confiabilidade depende do rigor adotado pelo revisor

frequentemente não é repetível (ambíguo)

a falta de treinamento dos revisores amplifica os problemas decorrentes da informalidade

Realização das Revisões - Contras

28

Page 29: Engenharia de Software _VerificaçaoValidaçao

1920 - Inspeção do produto: Teve origem na linha de montagem. Os produtos intermediários e o produto final são examinados para se detectarem defeitos.

1976 – Inspeção de Software

Técnicas de V& V - Inspeções

29

Inspeção de Fagan é o mais influente trabalho sobre inspeção.

Quase um sinônimo de Inspeção.

Fagan tem sido usado por diferentes indústrias e em diferentes

artefatos de software.

É formada por seis etapas.

Page 30: Engenharia de Software _VerificaçaoValidaçao

Inspeção de software é um tipo particular de revisão que possui um processo de detecção de defeitos bem definido.

De forma resumida, o processo de inspeção envolve o planejamento da inspeção, indivíduos (representantes do cliente, da empresa desenvolvedora e consultores) revisando um determinado artefato, um encontro em equipe para discutir e registrar os defeitos.

Inspeções - História

30

Page 31: Engenharia de Software _VerificaçaoValidaçao

Verificar se o artefato de software satisfaz as

especificações e está de acordo com os padrões

aplicáveis.

Identificar desvios.

Coletar dados de engenharia de software como

defeito e esforço.

Objetivos das Inspeções

31

Page 32: Engenharia de Software _VerificaçaoValidaçao

especificações modelos projetos código casos de teste processos de desenvolvimento planos padrões arquivos de auxílio para o usuário documentação para o usuário teses, dissertações ...

Exemplos de artefatos

32

Page 33: Engenharia de Software _VerificaçaoValidaçao

67% do total de defeitos durante o

desenvolvimento são detectados na Inspeção.

82% de todos os defeitos achados durante a

inspeção referem-se a design e código.

Por que fazer Inspeção?

33

Page 34: Engenharia de Software _VerificaçaoValidaçao

Uma única sessão de inspeção pode encontrar um número considerável de erros.

Versões incompletas do sistema podem ser inspecionadas sem nenhum custo adicional.

Pode considerar padrões de qualidade mais amplos de um programa como conformidade com padrões, portabilidade e facilidade de manutenção.

Por que fazer Inspeção?

34

Page 35: Engenharia de Software _VerificaçaoValidaçao

Mais de 60% dos erros de um programa podem ser encontrados usando inspeções informais (Fagan, 1986).

Uma abordagem mais formal pode encontrar até 90% dos erros (Mills, et al., 1987).

Tempo e custo gasto no processo de inspeção é recuperado com a diminuição das atividades de debugging.

Por que fazer Inspeção?

35

Page 36: Engenharia de Software _VerificaçaoValidaçao

Processo formal realizado por uma equipe a partir

de um checklist de defeitos pré-definido.

Objetivo: inspecionar cada linha de código a

procura de defeitos ou não cumprimento de

padrões.

Inspeção de Programa

36

Page 37: Engenharia de Software _VerificaçaoValidaçao

Prós

processo formal realizado sistematicamente com resultados confiáveis.

de 60% a 90% dos erros de um programa podem ser encontrados em um única revisão.

Contras

Resistência ao uso – pessoal especializado aumenta o custo do projeto.

Realização de Inspeções

37

Page 38: Engenharia de Software _VerificaçaoValidaçao

São ferramentas que processam o código fonte do

programa e chamam a atenção do verificador para

anomalias, como seções não utilizadas e variáveis não

inicializadas/utilizadas.

Amplamente utilizadas pelas equipes de inspeção.

Analisadores automáticos de programas

38

Page 39: Engenharia de Software _VerificaçaoValidaçao

Equipe pode se focar mais na verificação manual da funcionalidade / algoritmo.

O uso da ferramenta resulta em completude e consistência.

Economiza esforço.

Encontra defeitos que não são possíveis de serem encontrados manualmente.

Realização de análise automatizada - Vantagens

39

Page 40: Engenharia de Software _VerificaçaoValidaçao

Podem ser utilizadas em todas as fases do processo de desenvolvimento do software.

Ferramentas para análise automática do código ou documentos podem ser utilizadas.

Verificação podem ser auxiliadas pela utilização de métodos formais.

Inspeções de Software

40

Page 41: Engenharia de Software _VerificaçaoValidaçao

Em geral produtos de trabalho devem ser

inspecionados por:

Participantes

41

O autor de algum documento antecessor.

Pares do autor do produto inspecionado.

Alguém que usará o produto inspecionado como

entrada para outro produto de trabalho.

Page 42: Engenharia de Software _VerificaçaoValidaçao

Em uma inspeção, cada um dos participantes recebe um ou mais papeis e responsabilidades.

Os papeis de uma inspeção tipicamente são distribuídos em

Participantes

42

Autor.

Moderador.

Leitor.

Escritor.

Inspetor.

Coordenador das Inspeções.

Page 43: Engenharia de Software _VerificaçaoValidaçao

Autor

Papeis

43

Criador ou mantenedor do produto de trabalho a ser

inspecionado.

Solicita ao Coordenador das Inspeções um Moderador.

Entrega o produto de trabalho e documentos

associados aos participantes.

Identifica junto ao moderador os outros participantes

da inspeção.

Esclarece as dúvidas relativas ao produto a ser

inspecionado.

Determina o tempo de preparação para a inspeção.

Page 44: Engenharia de Software _VerificaçaoValidaçao

Moderador

Papeis

44

Usa o checklist de moderador para auxiliar nas

inspeções.

Planeja o cronograma com o autor e lidera a inspeção.

Identifica junto ao autor os outros participantes da

inspeção.

Revisa o tempo de preparação definido pelo autor.

Determina o status do produto de trabalho.

Entrega o sumário completo da inspeção ao

Coordenador das Inspeções.

É o Facilitador da Inspeção.

Page 45: Engenharia de Software _VerificaçaoValidaçao

Leitor

Papeis

45

Faz a leitura de partes no produto de trabalho

inspecionado, de maneira a fazer com que o time de

inspeção apresente comentários, não-conformidades

ou questionamentos.

Page 46: Engenharia de Software _VerificaçaoValidaçao

Escritor

Papeis

46

Registra e classifica as não-conformidades

encontradas durante a inspeção.

Inspector

Examina o produto de trabalho antes da reunião de

inspeção para encontrar defeitos e desvios.

Registra o tempo de preparação.

Participa da reunião de inspeção para identificar

defeitos, desvios e sugerir melhorias.

Page 47: Engenharia de Software _VerificaçaoValidaçao

Coordenador das Inspeções

Papeis

47

Responsável pelas métricas de inspeção do projeto.

Mantém os registros das inspeções conduzidas e dados

do sumário de cada inspeção.

Gera relatórios de inspeção.

Page 48: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

48

Page 49: Engenharia de Software _VerificaçaoValidaçao

Mas antes de iniciar é essencial:

Especificação completa do código disponibilizada.

Membros da equipe familiarizados com padrões

organizacionais.

Versão atualizada e compilada do código tenha sido

distribuída entre a equipe de revisores.

Processo de Inspeção de Software

49

Page 50: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

50

Page 51: Engenharia de Software _VerificaçaoValidaçao

Planejamento

Selecionar a equipe de inspeção.

Organizar uma sala de reunião.

Assegurar que o material a ser inspecionado e suas

especificações estejam completos.

Processo de Inspeção de Software

51

Page 52: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

52

Page 53: Engenharia de Software _VerificaçaoValidaçao

Visão Geral

Programa a ser inspecionado é apresentado a equipe

de inspeção.

Autor do código descreve o que o programa se destina

a fazer.

Processo de Inspeção de Software

53

Page 54: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

54

Page 55: Engenharia de Software _VerificaçaoValidaçao

Preparação Individual

Cada membro da equipe estuda a especificação e o

programa.

Membros procuram e anotam defeitos encontrados.

Processo de Inspeção de Software

55

Page 56: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

56

Page 57: Engenharia de Software _VerificaçaoValidaçao

Reunião de Inspeção

Deve ser uma reunião curta e não deve ultrapassar duas

horas.

Deve enfocar a detecção de defeitos, conformidadade

aos padrões e programação de baixa qualidade.

A equipe não deve sugerir como corrigir os defeitos e

nem recomendar mudanças em outros componentes.

Checklists podem ser utilizados.

Processo de Inspeção de Software

57

Page 58: Engenharia de Software _VerificaçaoValidaçao

Checklists

Devem ser desenvolvidas por cada organização e

devem ter como base padrões e práticas locais.

Exemplos de checagens:

Defeitos de entrada/saída

Todas as variáveis de entrada são utilizadas?

Todas as variáveis de saída têm um valor associado?

Entradas inesperadas podem fazer com que os dados sejam

corrompidos?

Defeitos de gerenciamento de exceções

Todas as possíveis condições de erro foram.

levadas em conta?

Processo de Inspeção de Software

58

Page 59: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

59

Page 60: Engenharia de Software _VerificaçaoValidaçao

Retrabalho

Autor do programa faz as mudanças para

corrigir os problemas identificados.

Processo de Inspeção de Software

60

Page 61: Engenharia de Software _VerificaçaoValidaçao

Planejamento Visão Geral Preparação Individual

Reunião de Inspeção

Retrabalho

Acompanhamento

Processo de Inspeção de Software

61

Page 62: Engenharia de Software _VerificaçaoValidaçao

Acompanhamento

Moderador deve decidir se uma nova inspeção de

código completa deve ser realizada.

Caso não seja necessário então o programa é liberado

pelo moderador e aprovado.

Processo de Inspeção de Software

62

Page 63: Engenharia de Software _VerificaçaoValidaçao

Item Revisão Inspeção

Objetivos Avalia a conformidade

com as especificações

Garante a integridade

Detectar e identificar defeitos

Documentação dos defeitos

Verificar resolução

Qualificação dos

participantes

Experts técnicos

Membros da equipe

Inspetores formalmente treinados

Poder decisório A equipe de Revisão pede à

liderança da equipe de

Projeto ou Gerência para

levar as recomendações

adiante

A equipe declara informa o resultado (Aceite/

Re-trabalho/Verificação/ Re-inspeção)

Comparação entre Revisão e Inspeção

63

Page 64: Engenharia de Software _VerificaçaoValidaçao

Através da Revisão e Inspeção busca-se revelar as

falhas do software antes do mesmo entrar no

ambiente de produção, minimizando e otimizando

os custos com manutenção. A utilização de

abordagens baseadas em testes busca aumentar a

qualidade do software.

Conclusão

64

Page 65: Engenharia de Software _VerificaçaoValidaçao

Questão 01) Julgue as afirmativas. Justifique sua resposta.

1.1 Testes devem ser realizados para mostrar a inexistência

de defeitos.

1.2 O processo de verificação e validação deve ser

independente do processo de desenvolvimento, porém

integrado.

1.3 Verificação e validação são técnicas de teste.

1.4 A equipe de teste pode ser formada por profissionais

menos experientes e qualificados.

Atividade

65

Page 66: Engenharia de Software _VerificaçaoValidaçao

Softex http://www.softex.br/

TestExpert http://www.testexpert.com.br/

Associação Brasileira de Melhoria em Tecnologia da Informação http://www.abramti.org.br/

Qualidade de Software http://qualidadesoftware.org.br/

Qualidade de Software http://qualidade-de-software.blogspot.com/

Sites Recomendados - Brasileiros

66

Page 67: Engenharia de Software _VerificaçaoValidaçao

Certificação Brasileira de Teste de Software (CBTS) http://www.alats.org.br/Default.aspx?tabid=198

Brazilian Software Testing Qualification Board http://www.bstqb.org.br/

Instituto Brasileiro de Qualidade em Testes de Software http://www.ibqts.com.br/

Certified Software Quality Analyst (CSQA) http://www.softwarecertifications.org/

Software Quality Engineer Certification CSQE http://www.asq.org/certification/software-quality-engineer/index.html

ISEB Foundation Certificate in Software Testing http://www.bcs.org/server.php?show=nav.7179

Sites Recomendados - Certificações

67

Page 68: Engenharia de Software _VerificaçaoValidaçao

ISEB Practitioner Certificate in Software Testing http://www.bcs.org/server.php?show=nav.6956

The Certified Software Tester (CSTE) http://www.softwarecertifications.org/

Certified Test Manager (CTM) http://www.testinginstitute.com/ctm.php

Certified Software Test Professional (CSTP) http://www.testinginstitute.com/cstp.php

American Software Testing Qualifications Board http://www.astqb.org/

Sites Recomendados - Certificações

68

Page 69: Engenharia de Software _VerificaçaoValidaçao

StickyMinds Software Quality & Test http://www.stickyminds.com/

Software Test & Performance Magazine http://www.stpmag.com/

SDTimes Magazine http://www.sdtimes.com/index.html

The Rational Edge http://www-128.ibm.com/developerworks/rational/rationaledge/

Professional Tester Magazine http://www.professionaltester.com/

Free Software Magazine for the Free Software World http://www.freesoftwaremagazine.com/

Sites Recomendados - Revistas

69

Page 70: Engenharia de Software _VerificaçaoValidaçao

Software QA Testing and Test Tool Resources http://www.aptest.com/resources.html

Web Site Test Tools and Site Management Tools http://www.softwareqatest.com/qatweb1.html

Open Source Software Testing Tools, News and Discussion http://opensourcetesting.org/

Open Source Testing Tools in Java http://java-source.net/open-source/testing-tools

Software QA and Testing Resource Center http://www.softwareqatest.com/qattls1.html

Sites Recomendados - Ferramentas

70

Page 71: Engenharia de Software _VerificaçaoValidaçao

Questão 01) Com o objetivo de realizar uma inspeção de

programa, escolha uma ferramenta de programação que

você conheça e gere um checklist de erros comuns (não de

sintaxe) a serem buscados em um programa durante o

processo de inspeção.

71

Atividade

Page 72: Engenharia de Software _VerificaçaoValidaçao

Questão 02) É comum durante o desenvolvimento de

sistemas, realizar os testes até que o orçamento

destinado aos testes termine. Então, o sistema é

entregue aos clientes. Discuta a ética desta

abordagem.

72

Atividade

Page 73: Engenharia de Software _VerificaçaoValidaçao

SOMMERVILLE, Ian. Engenharia de Software. São Paulo:

Addisson-Wesley, 2007.

PRESSMAN, Roger S. Engenharia de Software. São Paulo:

Makron Books, 2006.

CRAIG, R.D. Systematic Software Testing. New York: Artech

House, 2002.

Jeff Tian. Software Quality Engineering - Testing, Quality

Assurance, and Quantifiable Improvement. IEEE Computer

Society. John Wiley & Sons, Inc. 2005.

Referências

73