SlideShare une entreprise Scribd logo
1  sur  51
Engenharia do Software I Manuel Menezes de Sequeira DCTI, ISCTE-IUL Manuel.Sequeira@iscte.pt, D6.02 As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
Na aula anterior Desenho de interfaces com o utilizador Problemas de desenho Heurísticas de Nielsen para interfaces com o utilizador Estilos de interacção Processo de desenho de interfaces com o utilizador Análise dos utilizadores Prototipagem de interfaces com o utilizador Avaliação de interfaces 2009/2010 2 Engenharia do Software I
Verificação e validação 2009/2010 3 Engenharia do Software I
Sumário Verificação e validação Planeamento da verificação e validação Inspecções de software Análise estática automática Desenvolvimento de software em sala limpa 2009/2010 4 Engenharia do Software I
Objectivos Apresentar verificação e validação de software e sua distinção Descrever processo de inspecção de software e seu papel na verificação e validação Explicar análise estática como técnica de verificação Descrever processo de desenvolvimento de software em sala limpa 2009/2010 5 Engenharia do Software I
Verificação vs. validação 2009/2010 Engenharia do Software I 6
Processo de verificação e validação Processo de ciclo de vida completo: aplicado em cada etapa do processo de software Principais objectivos Descobrir defeitos no sistema Aferir se o sistema é útil e usável em operação 2009/2010 Engenharia do Software I 7
Objectivos da verificação e validação Criar confiança de que software é adequado ao seu propósito Não significa que seja completamente livre de defeitos Tem de ser suficientemente bom para a utilização pretendida Tipo de utilização determina grau de confiança necessário 2009/2010 Engenharia do Software I 8
Confiança Depende de  Propósito do sistema Expectativas do utilizador Ambiente de marketing 2009/2010 Engenharia do Software I 9
Confiança 2009/2010 Engenharia do Software I 10
Verificações estática e dinâmica 2009/2010 Engenharia do Software I 11 Verificação estática Verificação dinâmica
Verificação e validação estáticas e dinâmicas 2009/2010 12 Engenharia do Software I Inspecções de software Especificação de requisitos Desenho de alto nível Especificação formal Desenho pormenorizado Programa Protótipo Teste de software
Teste de software Pode revelar erros Não demonstra ausência de erros Única técnica de validação para requisitos não funcionais: software tem de ser executado para observar como se comporta Usado em conjunto com verificação estática para cobrir completamente verificação e validação 2009/2010 Engenharia do Software I 13
Tipos de testes Testes de defeitos Descobrem defeitos do sistema Teste com sucesso revela presença de defeito Testes de validação Mostram que software cumpre requisitos Teste com sucesso mostrar que requisito foi devidamente implementado 2009/2010 Engenharia do Software I 14 Capítulo 23
Teste e depuração São processos distintos Verificação e validação estabelecem existência de defeitos em programa Depuração localiza e corrige erros Depurar envolve formular hipóteses sobre comportamento do programa e testá-las para encontrar erro no sistema 2009/2010 Engenharia do Software I 15
Processo de depuração 2009/2010 16 Engenharia do Software I Resultados do teste Especificação Casos de teste Localizar erro Desenhar correcção do erro Corrigir erro Testar programa de novo
Planeamento da verificação e validação Planear cuidadosamente para obter máximo resultado de processos de teste e inspecção Planear logo no início do processo de desenvolvimento Identificar equilíbrio entre verificação estática e teste Definer normas para processo de teste Não descrever testes de produto 2009/2010 Engenharia do Software I 17
Modelo em V 2009/2010 18 Engenharia do Software I Especificação de requisitos Serviço Testes de aceitação Especificação de sistema Desenho de sistema Testes de integração de sistema Plano de testes de integração de subsistemas Plano de testes de integração de sistemas Plano de testes de aceitação Desenho de pormenor Testes de integração de subsistemas Codificação e teste de módulos e unidades
Estrutura de um plano de teste de software Processo de teste Rastreabilidade de requisitos Itens testados Calendário de testes Procedimento de registo de testes Requisitos de hardware e software Restrições 2009/2010 Engenharia do Software I 19
Plano de teste de software 2009/2010 Engenharia do Software I 20
Inspecções de software Exame de representações fonte para descobrir anomalias e defeitos Não requerem execução do sistema: podem ocorrer antes da implementação Aplicadas a qualquer representação do sistema Requisitos Desenho Dados de configuração Dados de teste Etc. Eficazes a descobrir erros em programas 2009/2010 Engenharia do Software I 21
Sucesso da inspecção Muitos diferentes defeitos podem ser descobertos numa única inspecção Como um defeito pode esconder outro, necessárias várias execuções Como conhecimento do domínio e de programação é reutilizado, revisores podem já ter visto tipos de erro mais comuns 2009/2010 Engenharia do Software I 22
Inspecções e testes Técnicas de verificação complementares Ambas usadas durante processo de verificação e validação Inspecções Podem verificar cumprimento de especificação  Não podem verificar cumprimento dos requisitos reais do cliente Não podem verificar características não funcionais como desempenho ou usabilidade 2009/2010 Engenharia do Software I 23
Inspecções de programa Abordagem formalizada a revisões documentais Destinadas explicitamente a detectar defeitos (e não a corrigi-los) Defeitos Erros lógicos Anomalias no código que podem indicar uma condição errónea (e.g., variável não inicializada) Violação de normas 2009/2010 Engenharia do Software I 24
Pré-condições da inspecção Disponibilidade de especificação precisa Membros da equipa familiarizados com normas organizacionais Disponibilidade de código ou outras representações do sistema sintacticamente correctas 2009/2010 Engenharia do Software I 25
Pré-condições da inspecção Lista de verificação de erros preparada Gestão mentalizada para aumento inicial dos custos devido à inspecção Gestão mentalizada para não usar inspecções para avaliação de pessoal (i.e., para não procurar os responsáveis pelos erros) 2009/2010 Engenharia do Software I 26
Processo de inspecção 2009/2010 27 Engenharia do Software I Planeamento Visão global Preparação individual Reunião de inspecção Retrabalho Seguimento
Procedimento de inspecção Apresentar visão geral do sistema à equipa de inspecção Distribuir com tempo código e documentos associados Inspeccionar anotando erros descobertos Corrigir erros descobertos Reinspeccionar se necessário 2009/2010 Engenharia do Software I 28
Papéis na inspecção 2009/2010 Engenharia do Software I 29
Listas de verificação da inspecção Devem usar-se para guiar inspecção Dependem da linguagem de programação e reflectem seus erros típicos Verificação de tipos “fraca” implica lista maior Exemplos Inicialização Nomes de variáveis e constantes Terminação de ciclos Limites de matrizes 2009/2010 Engenharia do Software I 30
Verificações da inspecção Erros nos dados Variáveis inicializadas antes de usadas? Sem números mágicos (constantes sem nome)? Índice máximo de matrizes é comprimento ou comprimento - 1? Deve atribuir-se explicitamente delimitador a cadeias de caracteres? Pode ocorrer transbordamento de memória?  Erros de entrada e saída Variáveis de entrada todas usadas? Variáveis de saída com valor atribuído antes da saída? Entradas inesperadas podem causar corrupção? 2009/2010 Engenharia do Software I 31
Verificações da inspecção Erros no controlo Guardas de instruções condicionais correctas? Terminação de ciclos assegurada? Instruções compostas correctamente envolvidas? Cobertura de instruções de selecção de casos correcta? Se necessária, foi incluída quebra depois de cada caso? Erros de interface Invocações com número correcto de argumentos? Tipos de argumentos e parâmetros correspondem? Argumentos estão na ordem correcta? Se componentes acedem a memória partilhada, têm o mesmo modelo da sua estrutura? 2009/2010 Engenharia do Software I 32
Verificações da inspecção Erros de gestão de armazenamento Quando estrutura com ligações modificada, ligações correctamente atribuídas? Memória dinâmica correctamente reservada? Memória libertada quando deixa de ser necessária? Erros de gestão de excepções Lida-se com todas possíveis condições de erro? 2009/2010 Engenharia do Software I 33
Taxa de inspecção Ritmo Visão global: 500 instruções/hora Preparação individual: 125 instruções/hora Inspecção: 90-125 instruções/hora Custo Processo de inspecção é caro Inspecção de 500 linhas exige esforço de 40 humanos hora – cerca de £2800 no Reino Unido (≈ 3260 €) 2009/2010 Engenharia do Software I 34
Análise estática automática Levada a cabo por analisadores estáticos Analisadores estáticos Ferramentas de software Analisam o código fonte Tentam descobrir potenciais condições de erro Reportam à equipa de verificação e validação Eficazes como auxílio às inspecções Suplementam inspecção, não a substituem 2009/2010 Engenharia do Software I 35
Verificações da análise estática 2009/2010 Engenharia do Software I 36
Etapas da análise estática 2009/2010 Engenharia do Software I 37 Usar com cuidado! Geram grande quantidade de informação. Usar com cuidado! Geram grande quantidade de informação.
lint 1   // test.c  2   #include <stdio.h>  3     4   printarray (Anarray)  5       int Anarray;  6   {  7   printf("%d", Anarray);  8   }  9    10   main() 11   { 12       int Anarray[5]; int i; char c; 13   printarray(Anarray, i, c); 14   printarray(Anarray) ; 15   } > cc test.c > lint test.c test.c(13): warning: c may be used before set test.c(13): warning: i may be used before set printarray: variable # of args. test.c(4) :: test.c(13) printarray, arg. 1 used inconsistently test.c(4) :: test.c(13) printarray, arg. 1 used inconsistently test.c(4) :: test.c(14) printf returns value which is always ignored 2009/2010 Engenharia do Software I 38
Utilização da análise estática Particularmente útil para linguagens fracamente tipificadas (e.g., C) em que compilador não detecta muitos erros Relação custo-benefício menos boa para linguagens fortemente tipificadas (e.g., Java) em que compilador detecta muitos erros 2009/2010 Engenharia do Software I 39
Verificação e métodos formais Pode usar-se métodos formais quando houver especificação matemática do sistema Técnica de verificação estática por excelência Envolvem análise matemática pormenorizada da especificação Podem produzir demonstração formal da conformidade de programa com especificação 2009/2010 Engenharia do Software I 40
Argumentos a favor de métodos formais Produzir especificação matemática requer análise pormenorizada dos requisitos, o que pode revelar erros Podem detectar erros de implementação antes de testes quando programa analisado em conjunto com especificação 2009/2010 Engenharia do Software I 41
Argumentos contra métodos formais Requerem notações especializadas não compreendidas por peritos do domínio Muito caro desenvolver especificação e mais caro ainda mostrar que um programa cumpre especificação Pode ser possível atingir mesmo nível de confiança em programa de forma mais económica usando outras técnicas de verificação e validação 2009/2010 Engenharia do Software I 42
Desenvolvimento de software em sala limpa Nome derivado do processo de “sala limpa” usado no fabrico de semicondutores Prevenção e não remoção de defeitos Processo de desenvolvimento baseado em Desenvolvimento incremental Especificação formal Verificação estática usa argumentos de correcção Testes estatísticos mostram fiabilidade do programa 2009/2010 Engenharia do Software I 43
Processo de sala limpa 2009/2010 44 Engenharia do Software I Especificar sistema formalmente Desenhar testes estatísticos Testar sistema integrado Definir incrementos do software Construir programa estruturado Desenvolver perfil operacional retrabalho Verificar formalmente código Integrar incremento
Características do processo de sala limpa Especificação formal com modelo de transição de estados Desenvolvimento incremental com cliente prioritizando incrementos Programação estruturada – Construções de controlo e abstracção limitadas usadas no programa Verificação estática usando inspecções rigorosas Testes estatísticos do sistema 2009/2010 Engenharia do Software I 45 Capítulo 24
Especificação formal e inspecções Modelo baseado em estados é especificação do sistema Processo de inspecção verifica programa relativamente a modelo Abordagem à programação torna clara correspondência entre modelo e sistema Argumentos matemáticos (e não demonstrações) usados para aumentar confiança no processo de inspecção 2009/2010 Engenharia do Software I 46
Equipas do processo de sala limpa 2009/2010 Engenharia do Software I 47
Avaliação do processo de sala limpa Resultados muito impressionantes Poucas falhas nos sistemas entregues Avaliações independentes mostram que não é mais caro que outras abordagens Menos erros que em processos “tradicionais” Pouco usado: pouco claro como transferir processo para ambiente com engenheiros menos hábeis ou motivados 2009/2010 Engenharia do Software I 48
A reter Verificação e validação diferentes Verificação: conformidade com especificação Validação: cumprimento de requisitos do cliente Processo de testes guiado por plano Técnicas de verificação estática envolvem exame e análise do programa para detectar erros 2009/2010 Engenharia do Software I 49
A reter Inspecções muito eficazes na descoberta de erros Código sistematicamente verificado por pequena equipa para localizar erros de software Ferramentas de análise estática descobrem anomalias que indiciam erros no código Processo de desenvolvimento de sala limpa Desenvolvimento incremental Verificação estática Testes estatísticos 2009/2010 Engenharia do Software I 50
A ler IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006 Capítulo 22 2009/2010 Engenharia do Software I 51

Contenu connexe

Tendances

1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
Marcos Morais de Sousa
 
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
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
elliando dias
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
Luís Fernando Richter
 

Tendances (20)

1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Qualidade de Software: Teste de software
Qualidade de Software: Teste de softwareQualidade de Software: Teste de software
Qualidade de Software: Teste de software
 
Modelagem De Banco De Dados
Modelagem De Banco De DadosModelagem De Banco De Dados
Modelagem De Banco De Dados
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Aula3 engenharia requisitos
Aula3 engenharia requisitosAula3 engenharia requisitos
Aula3 engenharia requisitos
 
Verificação e validação de software
Verificação e validação de softwareVerificação e validação de software
Verificação e validação de software
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
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
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Analise de Requisitos Software
Analise de Requisitos SoftwareAnalise de Requisitos Software
Analise de Requisitos Software
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
 
Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006Engenharia Requisitos - Aula4 06 03 2006
Engenharia Requisitos - Aula4 06 03 2006
 
Análise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemasAnálise, projeto e implementação de sistemas
Análise, projeto e implementação de sistemas
 

En vedette

Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
ljaquet
 
FABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriertFABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriert
FABIS Sales Solutions GmbH & Co. KG
 
Exibri Software Product Lines Aosd
Exibri Software Product Lines AosdExibri Software Product Lines Aosd
Exibri Software Product Lines Aosd
Cédric WILLIAMSON
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
MD DAY
 

En vedette (20)

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
 
JAD e levantamento de requisitos
JAD e levantamento de requisitosJAD e levantamento de requisitos
JAD e levantamento de requisitos
 
Resumo de Técnicas de elicitação de requisitos
Resumo de Técnicas de elicitação de requisitosResumo de Técnicas de elicitação de requisitos
Resumo de Técnicas de elicitação de requisitos
 
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
2009 Wikimanagement: Neue Denkansätze für die Wissensnutzung im Geschäftsproz...
 
Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?Open Source Software: Reif für den typischen CH KMU?
Open Source Software: Reif für den typischen CH KMU?
 
Lm software
Lm softwareLm software
Lm software
 
Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013Blogwerk: Content Marketing an der SuisseEMEX 2013
Blogwerk: Content Marketing an der SuisseEMEX 2013
 
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et MoovementSoftware Academy 10 Erreurs Rh Par Altaide Et Moovement
Software Academy 10 Erreurs Rh Par Altaide Et Moovement
 
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
Découvrez les solutions de virtualisation de Stockage DataCore et sa platefor...
 
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...Einsatz von Social Software fürOnline-Marketing und virtuelle Zusammenarbeit...
Einsatz von Social Software für Online-Marketing und virtuelle Zusammenarbeit...
 
Freie Software in der (Groß-)Forschung
Freie Software in der (Groß-)ForschungFreie Software in der (Groß-)Forschung
Freie Software in der (Groß-)Forschung
 
FABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriertFABIS Produktmanagement im CRM integriert
FABIS Produktmanagement im CRM integriert
 
Exibri Software Product Lines Aosd
Exibri Software Product Lines AosdExibri Software Product Lines Aosd
Exibri Software Product Lines Aosd
 
Présentation update crm lsi
Présentation update crm lsi Présentation update crm lsi
Présentation update crm lsi
 
Präsentation PM Forum - Social Software
Präsentation PM Forum  - Social SoftwarePräsentation PM Forum  - Social Software
Präsentation PM Forum - Social Software
 
Slide Lewis Chimarro
Slide   Lewis ChimarroSlide   Lewis Chimarro
Slide Lewis Chimarro
 
Mia software mdday2010
Mia software mdday2010Mia software mdday2010
Mia software mdday2010
 
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
Solutions en mode SaaS (Software as a Service) : les PME accèdent-elles à des...
 
(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos(In)Segurança De Software, Quebrando Códigos
(In)Segurança De Software, Quebrando Códigos
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 

Similaire à Eng.ª do Software - 9. Verificação e validação

Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
UFPA
 

Similaire à Eng.ª do Software - 9. Verificação e validação (20)

Aula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdfAula18_V&VTesteSoftware.pdf
Aula18_V&VTesteSoftware.pdf
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Eng.ª do Software - 4. Processos de software
Eng.ª do Software - 4. Processos de softwareEng.ª do Software - 4. Processos de software
Eng.ª do Software - 4. Processos de software
 
Eng.ª do Software - 5. Desenvolvimento rápido de software
Eng.ª do Software - 5. Desenvolvimento rápido de softwareEng.ª do Software - 5. Desenvolvimento rápido de software
Eng.ª do Software - 5. Desenvolvimento rápido 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
 
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?
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitos
 
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
 
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
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Introdução a testes de sofwtare
Introdução a testes de sofwtareIntrodução a testes de sofwtare
Introdução a testes de sofwtare
 
TesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdfTesteDeSoftware_WorkshopSINFO2014.pdf
TesteDeSoftware_WorkshopSINFO2014.pdf
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Aula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdfAula07_TesteSoftware_Parte1_semResposta.pdf
Aula07_TesteSoftware_Parte1_semResposta.pdf
 
Verificação e Validação
Verificação e ValidaçãoVerificação e Validação
Verificação e Validação
 
Introdução a engenharia de software aula 01
Introdução a engenharia de software   aula 01Introdução a engenharia de software   aula 01
Introdução a engenharia de software aula 01
 
Eng.ª do Software - 1. Introdução
Eng.ª do Software - 1. IntroduçãoEng.ª do Software - 1. Introdução
Eng.ª do Software - 1. Introdução
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
 

Plus de Manuel Menezes de Sequeira

Plus de Manuel Menezes de Sequeira (20)

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 

Dernier

ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 

Dernier (20)

O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
O desenvolvimento é um conceito mais amplo, pode ter um contexto biológico ou...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Missa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdfMissa catequese para o dia da mãe 2025.pdf
Missa catequese para o dia da mãe 2025.pdf
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 

Eng.ª do Software - 9. Verificação e validação

  • 1. Engenharia do Software I Manuel Menezes de Sequeira DCTI, ISCTE-IUL Manuel.Sequeira@iscte.pt, D6.02 As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira.
  • 2. Na aula anterior Desenho de interfaces com o utilizador Problemas de desenho Heurísticas de Nielsen para interfaces com o utilizador Estilos de interacção Processo de desenho de interfaces com o utilizador Análise dos utilizadores Prototipagem de interfaces com o utilizador Avaliação de interfaces 2009/2010 2 Engenharia do Software I
  • 3. Verificação e validação 2009/2010 3 Engenharia do Software I
  • 4. Sumário Verificação e validação Planeamento da verificação e validação Inspecções de software Análise estática automática Desenvolvimento de software em sala limpa 2009/2010 4 Engenharia do Software I
  • 5. Objectivos Apresentar verificação e validação de software e sua distinção Descrever processo de inspecção de software e seu papel na verificação e validação Explicar análise estática como técnica de verificação Descrever processo de desenvolvimento de software em sala limpa 2009/2010 5 Engenharia do Software I
  • 6. Verificação vs. validação 2009/2010 Engenharia do Software I 6
  • 7. Processo de verificação e validação Processo de ciclo de vida completo: aplicado em cada etapa do processo de software Principais objectivos Descobrir defeitos no sistema Aferir se o sistema é útil e usável em operação 2009/2010 Engenharia do Software I 7
  • 8. Objectivos da verificação e validação Criar confiança de que software é adequado ao seu propósito Não significa que seja completamente livre de defeitos Tem de ser suficientemente bom para a utilização pretendida Tipo de utilização determina grau de confiança necessário 2009/2010 Engenharia do Software I 8
  • 9. Confiança Depende de Propósito do sistema Expectativas do utilizador Ambiente de marketing 2009/2010 Engenharia do Software I 9
  • 11. Verificações estática e dinâmica 2009/2010 Engenharia do Software I 11 Verificação estática Verificação dinâmica
  • 12. Verificação e validação estáticas e dinâmicas 2009/2010 12 Engenharia do Software I Inspecções de software Especificação de requisitos Desenho de alto nível Especificação formal Desenho pormenorizado Programa Protótipo Teste de software
  • 13. Teste de software Pode revelar erros Não demonstra ausência de erros Única técnica de validação para requisitos não funcionais: software tem de ser executado para observar como se comporta Usado em conjunto com verificação estática para cobrir completamente verificação e validação 2009/2010 Engenharia do Software I 13
  • 14. Tipos de testes Testes de defeitos Descobrem defeitos do sistema Teste com sucesso revela presença de defeito Testes de validação Mostram que software cumpre requisitos Teste com sucesso mostrar que requisito foi devidamente implementado 2009/2010 Engenharia do Software I 14 Capítulo 23
  • 15. Teste e depuração São processos distintos Verificação e validação estabelecem existência de defeitos em programa Depuração localiza e corrige erros Depurar envolve formular hipóteses sobre comportamento do programa e testá-las para encontrar erro no sistema 2009/2010 Engenharia do Software I 15
  • 16. Processo de depuração 2009/2010 16 Engenharia do Software I Resultados do teste Especificação Casos de teste Localizar erro Desenhar correcção do erro Corrigir erro Testar programa de novo
  • 17. Planeamento da verificação e validação Planear cuidadosamente para obter máximo resultado de processos de teste e inspecção Planear logo no início do processo de desenvolvimento Identificar equilíbrio entre verificação estática e teste Definer normas para processo de teste Não descrever testes de produto 2009/2010 Engenharia do Software I 17
  • 18. Modelo em V 2009/2010 18 Engenharia do Software I Especificação de requisitos Serviço Testes de aceitação Especificação de sistema Desenho de sistema Testes de integração de sistema Plano de testes de integração de subsistemas Plano de testes de integração de sistemas Plano de testes de aceitação Desenho de pormenor Testes de integração de subsistemas Codificação e teste de módulos e unidades
  • 19. Estrutura de um plano de teste de software Processo de teste Rastreabilidade de requisitos Itens testados Calendário de testes Procedimento de registo de testes Requisitos de hardware e software Restrições 2009/2010 Engenharia do Software I 19
  • 20. Plano de teste de software 2009/2010 Engenharia do Software I 20
  • 21. Inspecções de software Exame de representações fonte para descobrir anomalias e defeitos Não requerem execução do sistema: podem ocorrer antes da implementação Aplicadas a qualquer representação do sistema Requisitos Desenho Dados de configuração Dados de teste Etc. Eficazes a descobrir erros em programas 2009/2010 Engenharia do Software I 21
  • 22. Sucesso da inspecção Muitos diferentes defeitos podem ser descobertos numa única inspecção Como um defeito pode esconder outro, necessárias várias execuções Como conhecimento do domínio e de programação é reutilizado, revisores podem já ter visto tipos de erro mais comuns 2009/2010 Engenharia do Software I 22
  • 23. Inspecções e testes Técnicas de verificação complementares Ambas usadas durante processo de verificação e validação Inspecções Podem verificar cumprimento de especificação Não podem verificar cumprimento dos requisitos reais do cliente Não podem verificar características não funcionais como desempenho ou usabilidade 2009/2010 Engenharia do Software I 23
  • 24. Inspecções de programa Abordagem formalizada a revisões documentais Destinadas explicitamente a detectar defeitos (e não a corrigi-los) Defeitos Erros lógicos Anomalias no código que podem indicar uma condição errónea (e.g., variável não inicializada) Violação de normas 2009/2010 Engenharia do Software I 24
  • 25. Pré-condições da inspecção Disponibilidade de especificação precisa Membros da equipa familiarizados com normas organizacionais Disponibilidade de código ou outras representações do sistema sintacticamente correctas 2009/2010 Engenharia do Software I 25
  • 26. Pré-condições da inspecção Lista de verificação de erros preparada Gestão mentalizada para aumento inicial dos custos devido à inspecção Gestão mentalizada para não usar inspecções para avaliação de pessoal (i.e., para não procurar os responsáveis pelos erros) 2009/2010 Engenharia do Software I 26
  • 27. Processo de inspecção 2009/2010 27 Engenharia do Software I Planeamento Visão global Preparação individual Reunião de inspecção Retrabalho Seguimento
  • 28. Procedimento de inspecção Apresentar visão geral do sistema à equipa de inspecção Distribuir com tempo código e documentos associados Inspeccionar anotando erros descobertos Corrigir erros descobertos Reinspeccionar se necessário 2009/2010 Engenharia do Software I 28
  • 29. Papéis na inspecção 2009/2010 Engenharia do Software I 29
  • 30. Listas de verificação da inspecção Devem usar-se para guiar inspecção Dependem da linguagem de programação e reflectem seus erros típicos Verificação de tipos “fraca” implica lista maior Exemplos Inicialização Nomes de variáveis e constantes Terminação de ciclos Limites de matrizes 2009/2010 Engenharia do Software I 30
  • 31. Verificações da inspecção Erros nos dados Variáveis inicializadas antes de usadas? Sem números mágicos (constantes sem nome)? Índice máximo de matrizes é comprimento ou comprimento - 1? Deve atribuir-se explicitamente delimitador a cadeias de caracteres? Pode ocorrer transbordamento de memória? Erros de entrada e saída Variáveis de entrada todas usadas? Variáveis de saída com valor atribuído antes da saída? Entradas inesperadas podem causar corrupção? 2009/2010 Engenharia do Software I 31
  • 32. Verificações da inspecção Erros no controlo Guardas de instruções condicionais correctas? Terminação de ciclos assegurada? Instruções compostas correctamente envolvidas? Cobertura de instruções de selecção de casos correcta? Se necessária, foi incluída quebra depois de cada caso? Erros de interface Invocações com número correcto de argumentos? Tipos de argumentos e parâmetros correspondem? Argumentos estão na ordem correcta? Se componentes acedem a memória partilhada, têm o mesmo modelo da sua estrutura? 2009/2010 Engenharia do Software I 32
  • 33. Verificações da inspecção Erros de gestão de armazenamento Quando estrutura com ligações modificada, ligações correctamente atribuídas? Memória dinâmica correctamente reservada? Memória libertada quando deixa de ser necessária? Erros de gestão de excepções Lida-se com todas possíveis condições de erro? 2009/2010 Engenharia do Software I 33
  • 34. Taxa de inspecção Ritmo Visão global: 500 instruções/hora Preparação individual: 125 instruções/hora Inspecção: 90-125 instruções/hora Custo Processo de inspecção é caro Inspecção de 500 linhas exige esforço de 40 humanos hora – cerca de £2800 no Reino Unido (≈ 3260 €) 2009/2010 Engenharia do Software I 34
  • 35. Análise estática automática Levada a cabo por analisadores estáticos Analisadores estáticos Ferramentas de software Analisam o código fonte Tentam descobrir potenciais condições de erro Reportam à equipa de verificação e validação Eficazes como auxílio às inspecções Suplementam inspecção, não a substituem 2009/2010 Engenharia do Software I 35
  • 36. Verificações da análise estática 2009/2010 Engenharia do Software I 36
  • 37. Etapas da análise estática 2009/2010 Engenharia do Software I 37 Usar com cuidado! Geram grande quantidade de informação. Usar com cuidado! Geram grande quantidade de informação.
  • 38. lint 1 // test.c 2 #include <stdio.h> 3 4 printarray (Anarray) 5 int Anarray; 6 { 7 printf("%d", Anarray); 8 } 9 10 main() 11 { 12 int Anarray[5]; int i; char c; 13 printarray(Anarray, i, c); 14 printarray(Anarray) ; 15 } > cc test.c > lint test.c test.c(13): warning: c may be used before set test.c(13): warning: i may be used before set printarray: variable # of args. test.c(4) :: test.c(13) printarray, arg. 1 used inconsistently test.c(4) :: test.c(13) printarray, arg. 1 used inconsistently test.c(4) :: test.c(14) printf returns value which is always ignored 2009/2010 Engenharia do Software I 38
  • 39. Utilização da análise estática Particularmente útil para linguagens fracamente tipificadas (e.g., C) em que compilador não detecta muitos erros Relação custo-benefício menos boa para linguagens fortemente tipificadas (e.g., Java) em que compilador detecta muitos erros 2009/2010 Engenharia do Software I 39
  • 40. Verificação e métodos formais Pode usar-se métodos formais quando houver especificação matemática do sistema Técnica de verificação estática por excelência Envolvem análise matemática pormenorizada da especificação Podem produzir demonstração formal da conformidade de programa com especificação 2009/2010 Engenharia do Software I 40
  • 41. Argumentos a favor de métodos formais Produzir especificação matemática requer análise pormenorizada dos requisitos, o que pode revelar erros Podem detectar erros de implementação antes de testes quando programa analisado em conjunto com especificação 2009/2010 Engenharia do Software I 41
  • 42. Argumentos contra métodos formais Requerem notações especializadas não compreendidas por peritos do domínio Muito caro desenvolver especificação e mais caro ainda mostrar que um programa cumpre especificação Pode ser possível atingir mesmo nível de confiança em programa de forma mais económica usando outras técnicas de verificação e validação 2009/2010 Engenharia do Software I 42
  • 43. Desenvolvimento de software em sala limpa Nome derivado do processo de “sala limpa” usado no fabrico de semicondutores Prevenção e não remoção de defeitos Processo de desenvolvimento baseado em Desenvolvimento incremental Especificação formal Verificação estática usa argumentos de correcção Testes estatísticos mostram fiabilidade do programa 2009/2010 Engenharia do Software I 43
  • 44. Processo de sala limpa 2009/2010 44 Engenharia do Software I Especificar sistema formalmente Desenhar testes estatísticos Testar sistema integrado Definir incrementos do software Construir programa estruturado Desenvolver perfil operacional retrabalho Verificar formalmente código Integrar incremento
  • 45. Características do processo de sala limpa Especificação formal com modelo de transição de estados Desenvolvimento incremental com cliente prioritizando incrementos Programação estruturada – Construções de controlo e abstracção limitadas usadas no programa Verificação estática usando inspecções rigorosas Testes estatísticos do sistema 2009/2010 Engenharia do Software I 45 Capítulo 24
  • 46. Especificação formal e inspecções Modelo baseado em estados é especificação do sistema Processo de inspecção verifica programa relativamente a modelo Abordagem à programação torna clara correspondência entre modelo e sistema Argumentos matemáticos (e não demonstrações) usados para aumentar confiança no processo de inspecção 2009/2010 Engenharia do Software I 46
  • 47. Equipas do processo de sala limpa 2009/2010 Engenharia do Software I 47
  • 48. Avaliação do processo de sala limpa Resultados muito impressionantes Poucas falhas nos sistemas entregues Avaliações independentes mostram que não é mais caro que outras abordagens Menos erros que em processos “tradicionais” Pouco usado: pouco claro como transferir processo para ambiente com engenheiros menos hábeis ou motivados 2009/2010 Engenharia do Software I 48
  • 49. A reter Verificação e validação diferentes Verificação: conformidade com especificação Validação: cumprimento de requisitos do cliente Processo de testes guiado por plano Técnicas de verificação estática envolvem exame e análise do programa para detectar erros 2009/2010 Engenharia do Software I 49
  • 50. A reter Inspecções muito eficazes na descoberta de erros Código sistematicamente verificado por pequena equipa para localizar erros de software Ferramentas de análise estática descobrem anomalias que indiciam erros no código Processo de desenvolvimento de sala limpa Desenvolvimento incremental Verificação estática Testes estatísticos 2009/2010 Engenharia do Software I 50
  • 51. A ler IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006 Capítulo 22 2009/2010 Engenharia do Software I 51