Prévia do material em texto
Engenharia de Software Aula 4 Profa. Maristela Weinfurter Teixeira Organização da Aula Qualidade de Software • Conceitos • Garantia da Qualidade • Testes • Métricas Qualidade de Software – Conceitos • Quais são as características genéricas de um software com alta qualidade? • Como revisar a qualidade e como são realizadas revisões eficazes? � O que significa garantia da qualidade de software? � Quais são as estratégias para testes de software? � Quais são os métodos usados para projetar casos de testes eficazes? � Como gerenciar e controlar mudanças sempre que ocorrem quando um software já foi criado? � Quais medidas e métricas podem ser usadas para avaliar a qualidade dos modelos de requisitos, projeto, código-fonte e casos de testes? Respondemos a todas as questões? � Então estamos aptos a desenvolver software com um bom padrão de qualidade � Quando pensamos em qualidade de software? • Década de 90 � Qual o motivo? • Orçamentos desperdiçados com software que não apresentava as características e as funcionalidades prometidas � Apesar de tudo, código mal feito continua a ser um fantasma no mercado de software � David Garvin, da Harvard Business School, diz que: “qualidade é um conceito complexo e multifacetado” � E pode ser descrito segundo cinco pontos de vista diferentes 1. Visão transcendental: algo que se reconhece imediatamente, sem definições 2. Visão do usuário: metas específicas 3. Visão do produto: características como funções e recursos 4. Visão baseada em valor: quanto o cliente está disposto a pagar pelo produto 5. Visão do fabricante: especificação original � No desenvolvimento de software, a qualidade de um projeto engloba o grau de atendimento às funções e características especificadas no modelo de requisitos � Para Tom DeMarco (98), a qualidade de um produto deve transformá-lo num lugar melhor � E como pensar em qualidade de software então? � Gestão da qualidade � Produto útil � Valor agregado para fabricante e usuário � Dimensões da QS • Qualidade do desempenho • Qualidade dos recursos • Confiabilidade • Conformidade • Durabilidade • Facilidade de manutenção • Estética • Percepção � Fatores de Qualidade • Correção • Confiabilidade • Eficiência • Integridade • Usabilidade • Facilidade de manutenção • Flexibilidade • Testabilidade • Portabilidade • Reusabilidade • Interoperabilidade Facilidade de manutenção, flexibilidade e testabilidade Portabilidade, reusabilidade e interope- rabilidade Revisão do produto -------------- Transição do produto Correção, confiabilidade, usabilidade, integridade e eficiência Qualidade de Software – Garantia da Qualidade Fatores de Qualidade • ISO 9126 – padrão desenvolvido para identificação de atributos fundamentais para qualidade de software � ISO 9126 1. Funcionalidade 2. Confiabilidade 3. Usabilidade 4. Eficiência 5. Facilidade de manutenção 6. Portabilidade � Software “bom o suficiente” • Funções e características de alta qualidade • Usuários desejam o software • Funções especializadas � Custo da qualidade • Custo de prevenção • Custo de avaliação • Custo de falhas � Custo médio • US$ 977 por erro – na fase de codificação • US$ 7.136 por erro – na fase de testes � Custo X Erros e defeitos � Riscos • Aumentam para desenvolvedor e usuários quando a qualidade do software é baixa � Negligência e Responsabilidade Civil • Sistema lento • Erros • Sem aprovação do usuário • Litígio • Usuários X desenvolvedor � Qualidade e Segurança • Pirataria • Riscos de segurança • Software inseguro • Muitas falhas � Ações Administrativas • Estimativa • Cronograma • Riscos � Métodos de Engenharia de Software • Técnicas de gerenciamento de software • Controle de qualidade • Garantia da qualidade � Elementos GQ • Padrões (IEEE e ISO) • Revisões e auditorias • Testes • Coleta e análise de erros/ defeitos • Gerenciamento de mudanças • Educação • Gerência de fornecedores • Administração da segurança • Proteção • Administração de riscos Meta Atributo Métrica Qualidade das necessidades Ambiguidade Número de modificadores ambíguos (por exemplo, muitos, grande, amigável) Completude Número de TBA, TBD Compreen- sibilidade Número de seções/subseções Volatilidade Número de mudanças por requisito Tempo (por atividade) quando é solicitada a mudança Facilidade de atribuição Número de requisitos não atribuíveis ao projeto/código Clareza do modelo Número de modelos UML Número de páginas descritivas por modelo Número de erros UML Qualidade do projeto Integridade da arquitetura Existência do modelo de arquitetura Número dos componentes Número de componentes que se atribui ao modelo da arquitetura Complexidade do projeto procedural Complexidade da interface Número médio de cliques para chegar a uma função ou conteúdo típico Apropriabilidade do layout Qualidade do código Padrões Número de padrões usados Complexidade Complexidade ciclométrica Facilidade de manutenção Fatores do projeto (capítulo 8) Compreensibilidade Porcentagem de comentários internos Convenções de atribuição de variáveis Eficiência do controle de qualidade Reusabilidade Porcentagem de componentes reutilizados Documentação Índice de legibilidade Alocação de recursos Porcentagem de horas de pessoal por atividade Taxa de completude Tempo de finalização real X previsto Eficácia da revisão Ver métricas de revisão (capítulo 14) Eficácia dos testes Número de erros encontrados e criticalidade Esforço exigido para corrigir um erro Origem do erro � Ferramentas de GQ • Estatísticas para GQ • Seis Sigma para ES • Medidas de Confiabilidade • Proteção de Software • Padrões de Qualidade ISO 9000 Qualidade de Software –Testes • Teste é um conjunto de atividades que podem ser planejadas com antecedência e executadas sistematicamente • Definição de um modelo (template) para testes � Estratégias de testes • Verificação e validação (V&V) � Organização � Estratégias de teste � Estratégias de testes de software convencional • Teste de unidade • Teste de integração � Estratégias de testes de software OO • Teste de unidade • Teste de integração � Estratégias de testes de software WebApps • Testado por usuários finais controlados e monitorados • Teste de validação • Teste alfa • Revisão da configuração • Teste de sistema • Teste de recuperação • Teste de segurança • Teste de esforço • Teste de desempenho • Teste de disponibilização � Visões interna e externa • Teste Caixa-branca • Teste do caminho básico • Teste de estrutura de controle • Teste Caixa-preta • Teste baseado em modelos • Teste para ambientes, arquitetura e apps especializados • Padrões de teste • Testes de OOA e OOD • Teste de conteúdo • Teste de interface • Teste de usabilidade • Teste de nível de componente • Teste de navegação • Teste de configuração • Teste de segurança • Teste de desempenho Qualidade de Software – Métricas • Estrutura de métricas • Medidas • Métricas • Indicadores � Princípios de medição • Formulação • Coleção • Análise • Feedback � Uma métrica deve ter as propriedades matemáticas desejadas. O valor damétrica deverá estar em um intervalo significativo � Cada métrica deverá ser validada empiricamente em uma ampla variedade de contextos antes de ser publicada ou usada para tomada de decisões � As métricas e medições devem ser: • simples e computáveis • empiricamente e intuitivamente persuasivas • consistentes e objetivas • consistentes no seu uso das unidades e dimensões • independente da linguagem de programação • um mecanismo efetivo para feedback de alta qualidade � Function Point ou métricas baseadas em função • Medida da funcionalidade fornecida pelo software • Ponto de função mede as funcionalidades fornecidas por um sistema • Estima custo ou trabalho para projetar, codificar e testar software • Prevê número de erros que serão encontrados durante o teste • Prevê o número de componentes ou número de linhas projetadas • Avaliação qualitativa da complexidade do software � Medição OO � Métricas para modelo de requisitos � Métricas para qualidade de especificação � Métricas para modelo de projeto � Métricas orientadas a classe � Métricas de projeto em nível de componente � Métricas orientadas a operação � Métricas de projeto de interface de usuário � Métricas de projeto para WebApps � Métricas para teste � Métricas para manutenção Referências de Apoio •PAGE-JONES, Meilir. Fundamentos do desenho orientado a objeto com UML. São Paulo, Pearson, 2001. •PFLEEGER, Shari L. Engenharia de software: teoria e prática. 2. ed. São Paulo, Prentice Hall, 2004. � PRESMAN, Roger. Engenharia de software. 7. ed. Porto Alegre: Bookman, 2011. � SOMMERVILLE, Ian. Engenharia de software. 9. ed. São Paulo: Pearson, 2011.