Engenharia de Software

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto de Sistemas III
Advertisements

ENGENHARIA DE SOFTWARE Garantia de Qualidade de Software
Adélia Barros Testes de Software Adélia Barros
Fundamentos de Engenharia de SW
Débora da Silva Orientadora: Maria Inés Castiñeira
Engenharia de Requisitos
Teste de Software.
Engenharia de Software
Tópicos Motivação para teste Por que algumas empresas não testam
Verificação e Validação
A falta de Teste Aumento de falhas devido a podre qualidade;
Professor Sílder Lamas Vecchi
FACULDADE DOS GUARARAPES
Mitos e Problemas Relacionados ao Software
Faculdade de Ciências Sociais de Aplicadas de Petrolina – FACAPE
Sistemas Críticos (Confiança)
Aline Vasconcelos CEFET Campos
Revisões de Software Parte 1
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
Técnicas de Teste de Software
Abordagem Estratégica ao Teste de Software
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
TSDD Teste de segurança durante o desenvolvimento.
Testes – visão geral Vanilson Burégio.
Engenharia de Software
Gerência de Configuração de Software
Introdução aos conceitos de Teste de Software
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
Estudo de Caso: Técnicas de Teste como parte do Ciclo de Desenvolvimento de Software Aline Pacheco Patric Ribeiro Diego Kreutz.
Engenharia de Software
Prof.Alfredo Parteli Gomes
Gerenciamento de Configuração
Gestão de Projetos Ms. Karine R. de Souza
Introdução à Qualidade
Tolerância a Falhas em Sistemas Distribuídos
Engenharia de Software com o RUP - Workflow de Testes Parte I
Teste de Sistemas de Software
Engenharia de Software
Engenharia de Software
Modelos de Processo de Software
Engenharia de Software
GERENCIAMENTO DA QUALIDADE FERRAMENTAS DE CONTROLE
O Processo de desenvolvimento de software
Documentação de Software
Teste de Software Conceitos iniciais.
ANÁLISE ESTRUTURADA DE SISTEMAS
Engenharia de Software
Qualidade de Software Aula 4
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Gestão de defeitos.
EPR16 – Planejamento e Gestão da Qualidade Professora Michelle Luz
Processos de Software.
Gerenciamento de Qualidade
Estimativa, Teste e Inspeção de Software
Verificação e Validação
Qualidade de Produtos de Software
Professor: Ygor Colen Morato
Engenharia de Software
Testes (verificação e validação)
Aula 02 de Eng. de Requisitos
Professora: Kelly de Paula Cunha
Gerenciamento da Qualidade
Estimativa, Teste e Inspeção de Software
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
Testes de Sistemas Professor: Ygor Colen Morato. Conceitos Básicos Processo de software - Processo de software, ou processo de engenharia de software,
Engenharia de Produtos
Conteúdo da última aula 1 Ref. Bibliográfica - PMBOK Cap 1.
Testes de Sistemas Professor: Ygor Colen Morato. Conceitos Básicos Processo de software - Processo de software, ou processo de engenharia de software,
TESTES DE SOFTWARE – AULA 1 Prof. Me. Ronnison Reges Vidal
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Transcrição da apresentação:

Engenharia de Software Aula09 – Validação de software

Roteiro Introduzir verificação e validação de software. Inspeção de programa Análise estática. Processo de desenvolvimento de software Cleanroom

Verificação X Validação O software cumpre com suas especificações ”Estamos construindo certo o produto?" Validação: O software deve estar de acordo com o que o usuário deseja. ”Estamos construindo o produto certo?"

Processo V & V É um processo que engloba todo o ciclo de vida V & V deve ser aplicado em cada estágio no processo de desenvolvimento. É um processo de revisão de documento, inspeção de código até chegar nos testes do software. Tem dois objetivos principais: A descoberta de defeitos no sistema Assegurar se o sistema é ou não utilizável em uma situação operacional.

Verificação Inspeções de software - preocupadas com a análise estática das representações do sistema para descobrir problemas (verificação estática)) Pode ser complementadas por alguma análise automática do texto de origem de um sistema ou dos documentos associados. Teste de software - preocupado com a execução e observação do comportamento do produto (verificação dinâmica). O sistema é executado com dados de teste e o seu comportamento operacional é observado. Inspeção não requer que o sistema seja executado, por isto é estática Testes valida o comportamento do sistema executável.

Verificação

Testes de programas Pode revelar a presença de erros e NÃO a ausência Um teste bem sucedido é um teste que descobre um ou mais erros. É a única técnica de validação para requisitos não funcionais (desempenho, confiabilidade) Deve ser usado em conjunto com a verificação estática para uma cobertura total das atividades de V&V

Tipos de Testes Os testes de defeito Testes estatísticos Testes projetados para descobrir inconsistências entre o programa e sua especificação. Um teste bem sucedido é aquele que revela a presença de defeitos em um sistema. Testes estatísticos Usado para testar o desempenho e a confiabilidade do programa. Confiabilidade: número de falhas no sistema, etc Desempenho: Tempo de execução, tempo de resposta, etc. Testes estáticos: Testes do comportamento do sistema sob condições operacionais

Metas de V & V Verificação e validação deve estabelecer a confiança de que o software é “adequado a seu propósito”. Isso NÃO significa que o programa tenha que ser livre de defeitos. Ao invés disso, significa que o sistema deve ser suficientemente bom para o uso pretendido. O tipo de uso irá determinar o grau de confiança que será necessário. Testes estáticos: Testes do comportamento do sistema sob condições operacionais

Confiança de V & V Depende do propósito do sistema, as expectativas do usuário e o ambiente de mercado. Função do software O nível de confiança depende do tipo de sistema e o quanto é importante para a organização. Expectativas do usuário Usuários tinham poucas expectativas de certos tipos de software. Hoje eles são mais exigentes. Ambiente de mercado Colocar um produto no mercado pode ser mais importante do que encontrar todos os defeitos no programa. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Testes e depuração Testar e depurar um programa são atividades distintas. Verificação e validação e teste estão preocupados em estabelecer a existência de defeitos em um programa. Depuração está preocupada com a localização e remoção desses defeitos. Depuração envolve a formulação de uma hipótese sobre o comportamento do programa e testar essa hipótese para encontrar o erro no sistema. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Processo de depuração O teste ocorre antes e descobre a ocorrência do erro Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Planejamento de V & V Planejamento cuidadoso é necessário para obter sucesso nos processos de inspeção e teste. O planejamento deve iniciar no começo do processo de desenvolvimento. O processo de planejamento deve decidir sobre o equilíbrio entre as abordagens estáticas e dinâmicas. O planejamento de testes se ocupa em estabelecer os padrões para o processo de testes. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Planejamento de V & V Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Estrutura de um Plano de Testes O processo de teste Facilidade de rastreamento dos requisitos Testar individualmente os requisitos Itens a serem testados O que vai ser testado Cronograma de testes Procedimentos de registros de testes Como o resultado dos testes vão ser documentados Requisitos de hardware e de software Restrições Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Inspeções x Testes Inspeções e testes são técnicas de verificação complementares. Ambas devem ser utilizadas no processo de V&V. Inspeções podem verificar a conformidade com uma especificação mas não a conformidade com os reais requisitos do usuário. Inspeções não podem verificar as características não funcionais tais como desempenho, usabilidade, etc. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Inspeções no programa Revisão cuidadosa, linha por linha, do código fonte do programa. Objetivo é a DETECÇÃO de defeitos (não correção) Defeitos podem ser erros lógicos, anomalias no código que podem indicar uma condição errônea (por ex. uma variável não inicializada) ou a não conformidade com padrões organizacionais. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Pré-condições para a inspeção de programa Uma especificação precisa deve estar disponível. Os membros da equipe de inspeção devem estar familiarizados com os padrões organizacionais. Código sintaticamente correto deve estar disponível. Uma lista de erros deve ser preparada Gerente deve aceitar que a inspeção aumentará os custos no começo do processo de software. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Processo de inspeção de programa Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado. Planejamento Introdução Preparação Reunião Retrabalho Acompanhamento Individual de inspeção

Checklist para inspeção de programas Lista de erros comuns deve ser usada para dirigir a inspeção. Lista de erros são dependentes da linguagem de programação Quanto mais “fraca” é a checagem de tipos pela linguagem, maior é a lista de erros mais comuns. Exemplos: inicialização, nomeação de constantes, término de laços, limites de vetores, etc. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Checklist Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Taxa de inspeção (IBM) Cerca de 500 declarações/hora durante revisão geral 125 declarações/hora durante preparação individual 90-125 declarações/hora podem ser inspecionadas durante a reunião Inspeção é portanto um processo caro Contudo, o esforço requerido para a inspeção é menor do que a metade o esforço de teste exigido para defeitos equivalentes. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Análise estática automatizada Analisadores estáticos são ferramentas de software para o processamento do código fonte. Percorrem o texto do programa e tentam descobrir potenciais condições erradas e chamar a atenção da equipe de v&v. São bastante eficaz como um auxílio às inspeções de programas. É um complemento, porém não substitui as inspeções. Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Checagem da análise estática Função do software: Ex: Software de segurança X software demo As vezes a concorrência dita o melhor tempo para liberar o software para o mercado.

Uso da análise estática Útil quando a linguagem não faz checagem adequada de tipos e, por isso, muitos erros não são detectados pelo compilador (C) Menos eficaz para linguagens que possui forte checagem de tipos e podem, portanto, detectar muitos erros durante a compilação (Java).

Desenvolvimento de software Cleanroom Filosofia de desenvolvimento que tem como base evitar defeitos pelo uso de um rigoroso processo de inspeção. Objetivo: Conseguir um software sem nenhum defeito. Processo de desenvolvimento baseado em: Especificação formal. Desenvolvimento incremental. Programação estruturada. Verificação estática usando rigorosas inspeções de software. Teste estatístico do sistema. Linguagem Fortemente Tipada: Toda linguagem de programação, trabalha com variáveis. Essas variáveis possuem tipos de dados, ou seja, variáveis para números, datas, textos, etc. Quando a linguagem não é fortemente tipada, o compilador consegue (ou tenta) fazer a conversão dos tipos das variáveis no momento da atribuição de valores. Por exemplo: se você tenta atribuir um valor numérico do tipo ponto flutuante (número real) a uma variável do tipo inteiro, o compilador converte para número inteiro. Ou até mesmo de texto para numérico e vice-versa. Quando a linguagem é fortemente tipada, o compilador não aceita que você faça qualquer atribuição entre tipos de dados diferentes a não ser que você utilize comandos ou funções específicas que façam a conversão dos dados antes da atribuição.

Processo Cleanroom Linguagem Fortemente Tipada: Toda linguagem de programação, trabalha com variáveis. Essas variáveis possuem tipos de dados, ou seja, variáveis para números, datas, textos, etc. Quando a linguagem não é fortemente tipada, o compilador consegue (ou tenta) fazer a conversão dos tipos das variáveis no momento da atribuição de valores. Por exemplo: se você tenta atribuir um valor numérico do tipo ponto flutuante (número real) a uma variável do tipo inteiro, o compilador converte para número inteiro. Ou até mesmo de texto para numérico e vice-versa. Quando a linguagem é fortemente tipada, o compilador não aceita que você faça qualquer atribuição entre tipos de dados diferentes a não ser que você utilize comandos ou funções específicas que façam a conversão dos dados antes da atribuição.

Desenvolvimento incremental Linguagem Fortemente Tipada: Toda linguagem de programação, trabalha com variáveis. Essas variáveis possuem tipos de dados, ou seja, variáveis para números, datas, textos, etc. Quando a linguagem não é fortemente tipada, o compilador consegue (ou tenta) fazer a conversão dos tipos das variáveis no momento da atribuição de valores. Por exemplo: se você tenta atribuir um valor numérico do tipo ponto flutuante (número real) a uma variável do tipo inteiro, o compilador converte para número inteiro. Ou até mesmo de texto para numérico e vice-versa. Quando a linguagem é fortemente tipada, o compilador não aceita que você faça qualquer atribuição entre tipos de dados diferentes a não ser que você utilize comandos ou funções específicas que façam a conversão dos dados antes da atribuição.

Especificação formal e Inspeções O modelo baseado em estados é a especificação e o processo de inspeção checa o programa com relação a esse modelo. A abordagem utilizada para o desenvolvimento tem como base transformações bem definidas, que tentam preservar a exatidão em cada transformação, para uma representação mais detalhada. Argumentos matemáticos (não provas) são usados para aumentar a confiança no processo de inspeção. Linguagem Fortemente Tipada: Toda linguagem de programação, trabalha com variáveis. Essas variáveis possuem tipos de dados, ou seja, variáveis para números, datas, textos, etc. Quando a linguagem não é fortemente tipada, o compilador consegue (ou tenta) fazer a conversão dos tipos das variáveis no momento da atribuição de valores. Por exemplo: se você tenta atribuir um valor numérico do tipo ponto flutuante (número real) a uma variável do tipo inteiro, o compilador converte para número inteiro. Ou até mesmo de texto para numérico e vice-versa. Quando a linguagem é fortemente tipada, o compilador não aceita que você faça qualquer atribuição entre tipos de dados diferentes a não ser que você utilize comandos ou funções específicas que façam a conversão dos dados antes da atribuição.

Equipes no processo Cleanroom Equipe de especificação. Responsável pelo desenvolvimento e pela manutenção da especificação do sistema. Equipe de desenvolvimento. Responsável por desenvolver e verificar o software. O software não é executado durante esse processo. Equipe de certificação. Responsável pelo desenvolvimento de um conjunto de testes estatísticos para exercitar o software após o seu desenvolvimento (certificação da confiabilidade do software). Linguagem Fortemente Tipada: Toda linguagem de programação, trabalha com variáveis. Essas variáveis possuem tipos de dados, ou seja, variáveis para números, datas, textos, etc. Quando a linguagem não é fortemente tipada, o compilador consegue (ou tenta) fazer a conversão dos tipos das variáveis no momento da atribuição de valores. Por exemplo: se você tenta atribuir um valor numérico do tipo ponto flutuante (número real) a uma variável do tipo inteiro, o compilador converte para número inteiro. Ou até mesmo de texto para numérico e vice-versa. Quando a linguagem é fortemente tipada, o compilador não aceita que você faça qualquer atribuição entre tipos de dados diferentes a não ser que você utilize comandos ou funções específicas que façam a conversão dos dados antes da atribuição.

Avaliação do processo Cleanroom Resultados na IBM tem mostrado que os softwares possuem bem menos erros (2,3 erros para mil linhas de código) Avaliação mostra que o processo não é mais caro do que outras abordagens. Menos erros do que em um processo de desenvolvimento tradicional. Uso do processo tem sido restrito a organizações tecnologicamente avançadas. Linguagem Fortemente Tipada: Toda linguagem de programação, trabalha com variáveis. Essas variáveis possuem tipos de dados, ou seja, variáveis para números, datas, textos, etc. Quando a linguagem não é fortemente tipada, o compilador consegue (ou tenta) fazer a conversão dos tipos das variáveis no momento da atribuição de valores. Por exemplo: se você tenta atribuir um valor numérico do tipo ponto flutuante (número real) a uma variável do tipo inteiro, o compilador converte para número inteiro. Ou até mesmo de texto para numérico e vice-versa. Quando a linguagem é fortemente tipada, o compilador não aceita que você faça qualquer atribuição entre tipos de dados diferentes a não ser que você utilize comandos ou funções específicas que façam a conversão dos dados antes da atribuição.

Referência Sommerville, Ian Cap 15