A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Engenharia de Software

Apresentações semelhantes


Apresentação em tema: "Engenharia de Software"— Transcrição da apresentação:

1 Engenharia de Software
Aula09 – Validação de software

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

3 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?"

4 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.

5 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.

6 Verificação

7 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

8 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

9 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

10 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.

11 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.

12 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.

13 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.

14 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.

15 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.

16 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.

17 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.

18 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.

19 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

20 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.

21 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.

22 Taxa de inspeção (IBM) Cerca de 500 declarações/hora durante revisão geral 125 declarações/hora durante preparação individual 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.

23 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.

24 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.

25 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).

26 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.

27 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.

28 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.

29 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.

30 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.

31 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.

32 Referência Sommerville, Ian Cap 15


Carregar ppt "Engenharia de Software"

Apresentações semelhantes


Anúncios Google