Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Rafael Targino rtargino@unicarioca.edu.br @rafatargino QUALIDADE DE SOFTWARE Unidade I - Garantia e Controle da Qualidade 2 • GARANTIA • Padrões que garantam a qualidade do software • CONTROLE • Assegurar que o desenvolvimento tenha seguido os procedimentos e padrões de qualidade do projeto • Verificação • Validação Gerenciamento da Qualidade (Sommerville) Garantia da Qualidade – QA (Quality Assurance) • Qualidade de Software: – Produtos precisam respeitar um conjunto mínimo de requisitos. – Conformidade com especificações e padrões de desenvolvimento documentados. – Atendimento das necessidades dos usuários. • Que necessidades? Que usuários? 3 Garantia da Qualidade – QA (Quality Assurance) • Mecanismo planejado e sistemático para assegurar que padrões definidos, práticas, procedimentos e métodos do processo são efetivamente utilizados. • Conjunto de atividades técnicas aplicadas durante todo o processo de desenvolvimento. • O objetivo é garantir que tanto o processo de desenvolvimento quanto o produto de software atinjam níveis de qualidade especificados. • Natureza proativa • Exemplo – Definição das normas que serão seguidas e dos controles que serão adotados para garantir a qualidade – Checklist para confirmação do processo de qualidade Garantia de Qualidade Norma 1 ISSO/IEC Norma 2 ISSO/IEC Norma 3 NBR Modelo de Qualidade da Organização 1. Entender as Normas e Padrões Existentes 2. Diagnosticar os principais problemas da organização 3. Definir o Modelo de Referência da Organização Define o Processo de Qualidade da Organização Define Atributos de Qualidade que serão utilizados e métricas Define e Monitora os Controles que irão Garantir se o Processo de Qualidade está sendo seguido 4 Garantia da Qualidade – QA (Quality Assurance) • A Garantia da Qualidade envolve: – Avaliar a conformidade dos processos e dos produtos. – Registrar os problemas encontrados. – Comunicar e acompanhar a resolução desses problemas – Relatar os resultados destas atividades à alta gerência. – Apoiar a equipe no seguimento ao processo e aos padrões de qualidade da organização. – Identificar tendências de qualidade nos processos e nos produtos. – Reajustar o processo de qualidade • Instrumento: Checklist Exemplo 5 Controle da Qualidade – QC (Quality Control) • É o processo de monitoramento e registro de resultados da execução das atividades de qualidade para avaliar o desempenho e recomendar as mudanças necessárias. • Evita que produtos defeituosos sejam entregues aos clientes • Natureza reativa • Exemplos – Efetuar os controles definidos no Processo de Garantia de Qualidade, como por exemplo: – Testes e Inspeções Controle de Qualidade • Seguimento dos procedimentos e padrões de qualidade do projeto • Normas – Qualidade de Produto – ISO/IEC 25010 (antiga ISO 9126) – NBR ISO/IER 12119 • Normas – Qualidade de Processo – Norma ISO/IEC 12207 – 15504 (SPICE) – CMMI – MPS.br 6 Garantia (QA) x Controle da Qualidade (QC) • Exemplo: Fabricação iPhone – Você insere QA em todos os processos em andamento para garantir que cada iPhone seja fabricado sem defeitos. – Isto incluiria os tipos de equipamentos de fabricação utilizados, a formação das pessoas e a documentação de todos os processos de produção. – QC entra em jogo após o fato ou após a produção, por meio de testes do produto acabado. Por exemplo, você pode fazer um teste por amostragem, para ver se um iPhone, aleatoriamente escolhido a partir de sua linha de produção, passa ou falha em relação aos padrões estabelecidos. Garantia de Qualidade Garantia (QA) x Controle da Qualidade (QC) Controle de Qualidade 7 Controle de Qualidade Verificação X Validação • Verificação – É o processo de se avaliar um software ou produto de trabalho relacionado a cada fase para determinar se o produto dessa fase satisfaz ao que foi requerido no início da fase – Os artefatos construídos devem estar de acordo com a especificação do software. – Estamos desenvolvendo o produto corretamente? • Validação – É o processo de se avaliar um software ou produto de trabalho relacionado, durante ou após o desenvolvimento, para determinar se o produto satisfaz aos requisitos – O software deve atender às necessidades dos usuários. – Estamos desenvolvendo o produto correto? Verificação 8 Validação Comparativo Garantia da Qualidade Verificação Validação • Garantia da qualidade • Controle da qualidade • Controle da qualidade • Avalia se os processos estão sendo seguidos. • Avalia o formato dos planos e demais produtos. • Avalia o conteúdo dos produtos com relação aos requisitos especificados. • Avalia o entendimento/ funcionamento do produto com relação ao ambiente para o qual foi desenvolvido. • Avaliação de conformidade • Teste • Inspeção • Walkthrough • Revisão por par • Aprovação • Homologação • Grupo de garantia da qualidade • Especialista com conhecimento específico • Membro da equipe do projeto com perfil semelhante • Cliente • Equipe independente do projeto • Hierarquia adequada • Equipe do projeto - 9 Verificação e Validação • Principais Métodos para Validação e Verificação: – Análise Estática: • Revisões de Software. – Análise Dinâmica: • Testes de Software. Verificação e Validação • Análise Estática – Não envolve a execução do produto – Visa determinar propriedades do produto válidas para qualquer execução do produto final • Exemplos: – análise de modelos (model checking) – análise de segurança (safety analysis) – revisões técnicas – prova de correção 10 Análise Estática • Ferramentas que varrem o código fonte à procura de falhas e anomalias • Fornecem milhares de regras de análise que são checadas no código-fonte – Como são muitas regras, é possível começar com apenas algumas de cada vez. – É possível desabilitar regras que não façam sentido para os programadores. – Como trabalha com heurísticas, podem existir falsos positivos, ou seja, indicam situações que não são sejam um problema. • São um complemento muito útil para a inspeção • Tipos de checagem: – falhas de dados – falhas de controle – falhas de E/S – falhas de interface – falhas de armazenamento 19 • Falha de dados – Como são usadas as variáveis do programa? • variáveis usadas antes de serem inicializadas • variáveis declaradas mas que nunca são utilizadas • variáveis definidas duas vezes mas não utilizadas nenhuma vez entre as duas definições • possibilidade de índice fora de limites para arrays • variáveis não declaradas Análise Estática 11 Análise Estática • Falhas de controle • trechos de código não alcançáveis • desvio para interior de laços • Falhas de entradas/saída: • variáveis são usadas em comandos de saída duas vezes sem que seu valor seja alterado entre uma e outra Análise Estática • Falhas de interface – Uso de rotinas é consistente com sua declaração? • tipos de parâmetros incompatíveis • número de parâmetros incompatível • valor de retorno de funções não é utilizado • funções ou procedimentos não são chamados • Falhas de armazenamento – apontadores não inicializados – aritmética de apontadores 12 Análise Estática – Ferramenta SONAR • O sonar é um projeto open source que visa avaliar a qualidade do código. • Para isso ele avalia a arquitetura e design, número de comentários, regras do java, alto nível de complexidade, código duplicado, cobertura de testes no código, etc. • Além de possuir um número bastante extenso de plugins. Ele armazena todas as informações de seu código em um bancode dados de sua preferência, assim você pode também acompanhar a evolução da qualidade do seu projeto. Exemplo SONAR 13 Verificação e Validação • Análise Dinâmica – Envolve a execução do produto (código ou modelo executável) – Visa encontrar falhas ou erros no produto • Exemplos: – Simulação – Execução simbólica – Testes Verificação e Validação • Benefícios: – Resultados de estudos experimentais evidenciam benefícios da utilização destes métodos no desenvolvimento de software. – A utilização destes métodos na indústria têm mostrado resultados positivos considerando tanto produtividade quanto qualidade. 14 Revisões de Software • Processo ou atividade para leitura de um artefato de software visando assegurar que ele cumpre sua especificação e atende às necessidades de seus usuários. • Objetivo: – Realizar validação e verificação estática de artefatos de software. • Pode ser aplicada a qualquer artefato produzido ao longo do processo de desenvolvimento de software. Revisões de Software • Revisões por pares (peer-reviews) aumentam a probabilidade de defeitos serem encontrados. • Comumente utilizam: – Anônimidade; • Relacionamentos pessoais não afetam a revisão. – Independência dos revisores em relação ao artefato a ser revisado. • Permite uma avaliação objetiva sem conflitos de interesse. 15 Revisões de Software • Quando e em que tipos de artefato aplicar revisões de software? Revisões de Software • Muitas organizações realizam revisões de software. • Realização pouco sistematizada e potencial raramente é explorado. • Tipos de Revisão de Software: – 4.1 – Inspeções de Software. – 4.2 – Walkthroughs. 16 Inspeções • Em uma Inspeção, os inspetores examinam o produto para identificar defeitos e desvios, com o objetivo de: – Verificar se um produto de trabalho satisfaz as especiações do produto de trabalho antecessor, tal como documento de requisitos e de projeto – Identificar quaisquer desvios de padrões – Sugerir oportunidades de melhoria para o autor – Promover a troca de experiência entre os participantes • O objetivo não é corrigir problemas e sim encontra-los para que o desenvolvedor corrija depois Engenharia de Software Inspeções • Tipo particular de revisão. • Tem sido o tipo de revisão de software mais estudado e utilizado • Processo rigoroso e bem definido. • Podem utilizar checklists para guiar o processo de revisão • Evidências Experimentais: – Redução do Esforço – Aumento da Produtividade – Redução do Tempo – Redução dos Custos – Capturam em média 60% dos defeitos 17 Listas de Verificação (Checklists) • É uma ferramenta estruturada, geralmente específica do artefato que está sendo verificado. • Contém uma série de itens que deverão ser pontos de análise por parte do inspetor. • Também conhecidas como Checklist • Muitas organizações têm listas de verificação padronizadas disponíveis para garantir a consistência em tarefas realizadas com frequência. – Exemplo: Checklist de especificação de casos de uso Engenharia de Software Exemplo de uma Checklist usada para Inspeção As entidades que representam o domínio estão representadas no modelo e explicadas no glossário?* Foi definido o relacionamento entre as entidades, ou seja, foram dados nomes aos relacionamentos?* A semântica do relacionamento entre as entidades está coerente com o domínio?* A cardinalidade foi descrita e está coerente com o domínio? É possível entender a responsabilidade de cada entidade? Para elementos do domínio que tenham uma dinâmica de estados representativa (máquina de estados) foi elaborado um diagrama de estados?* Todos os estados foram representados? Algum termo do negócio foi mencionado no documento e não está descrito no glossário?* Se mais de um termo no documento têm o mesmo significado, estes sinonimos estão definidos no Glossário?* O documento possui erros de ortografia/gramática?* 18 Walkthrough • Alternativa com um processo menos rigoroso do que o de inspeções de software. • Papéis sugeridos: – Líder, Autor, Escrivão e Revisores • Procedimento: – Os participantes são guiados através dos artefatos pelo líder (que eventualmente é o próprio autor) em uma reunião. Durante esta reunião devem interromper a apresentação caso encontrem defeitos. – Muitas vezes condições de entrada e saída e decisões são pressupostos pelo líder que segue sua linha de raciocínio durante a apresentação. Walkthrough • Possuem custo aproximadamente igual ao de inspeções mas seus resultados são inferiores: – Não providenciam resultados mensuráveis; – Não fornecem base para a aplicação de controle estatístico de processos, necessário para evoluir na maturidade de processos de software. • Podem ser utilizados para atividades de brainstorming, para explorar alternativas de projeto e resolução de problemas. – Inspeções são mais focadas em encontrar defeitos. 19 Exercício: Inspeções • Faça a inspeção dos casos de uso “Manter Alunos” e “Gerenciar Inscrições de Disciplinas” utilizando a checklist de especificação de casos de uso. – Faça um relatório indicando todos os pontos que você encontrou discrepâncias – Use a checklist como orientação para o processo de inspeção, mas fique atento por qualquer outra discrepância que possa ocorrer no texto e que não necessariamente está apontada na checklist. Engenharia de Requisitos U t i l i z a n d o M e d i ç õ e s 20 Controle de Qualidade Medição de Qualidade de Software • Medir a qualidade de software tem como objetivo obter dados caracterizando um produto com relação à um modelo proposto. • Para isso, é preciso identificar os atributos que evidenciam a presença, no software, das características de qualidade. • Atributos de Qualidade – Evidenciam a característica definida no processo ou na norma. Os valores dos atributos serão medidos durante o processo de avaliação. Medida X Medição X Métrica • Medida – Variável à qual se atribui um valor como resultado de uma medição. – Exemplos • Qual a altura dos clientes que entram na loja? • Quantos clientes entraram na loja? • Medição – Conjunto de operações com o objetivo de determinar o valor de uma medida – Ato de medir • Métricas – é o conjunto de medidas tomadas ao longo de um período utilizando a mesma metodologia de mediação – Exemplo • Ao longo de um dia inteiro, qual a altura e quantos clientes entraram na loja? – 1 medida pode gerar mais de uma métrica • Quantas pessoas tiveram a altura medida • Qual foi a média de altura das pessoas que entraram na loja • Qual a altura da menor pessoa que entrou na loja no dia de hoje • Qual a média das pessoas com menores alturas no último mês. 21 Medidas • Exemplos de Medidas em Desenvolvimento de Software – Número total de tarefas – Tempo para completar tarefas – Funções solicitadas pelo usuário – Mensagens de erro mal compreendidas – Mensagens analisadas pelo usuário – Número total de mensagens de erro • Medidas Derivadas – Medidas construídas a partir de outras duas ou mais medidas Medidas Qualitativas x Quantitativas • A palavra métrica leva naturalmente a pensar em medida e em número, mas nem toda informação de avaliação é desta maneira. • Características Quantitativas – Podem ser expressas a partir de um número • Características Qualitativas – Estão associadas a uma noção de intensidade, como “muito” ou “pouco”, ou como um adjetivo, como “agradável”. – Alguns exemplos deste tipo de características referem-se a usabilidade do produto, como por exemplo atratividade de um jogo, ou se um sistema operacional é agradável de usar. • Exemplo: Windows 8 – É um conceitomuito mais abstrato e por isso difícil de expressar com um número. 22 Resultados Estatísticos para Medidas Quantitativas • Em alguns casos, não iremos trabalhar apenas com o somatório de determinadas medidas, mas sim, usar ou complementar com algumas funções estatísticas – Médias – Variância e desvio-padrão – Histogramas – Análise de Regressão Exemplo Medidas Qualitativas x Quantitativas • Quem é melhor, Cristiano Ronaldo ou Messi? • Quem possui mais gols, mais taças e mais títulos da champions? 23 Medidas Qualitativas x Quantitativas • Trabalhar com números em vez de avaliações qualitativas reduz a possibilidade de erros na avaliação – O software apresentou resultados muito bons nos testes – O software obteve um valor de 5,3 para a medida número 3 da avaliação de qualidade • Para dados quantitativos é possível estabelecer intervalos e domínios para avaliar se o número obtido é bom? – 5,3 é bom nesta avaliação? Se a escala for de 0 a 6, é um número bom! – Interpretação da medida: 0 a 2,0 - Ruim 2,1 a 4 - Razoável 4,1 a 6 - Bom Escolhendo medidas de produto de software • Significância • Custo e Complexidade • Repetibilidade • Reproducibilidade • Validade • Objetividade • Imparcialidade 24 Exemplos de medidas funcionalidade adequação Medida Externa Nome da medida: completitude das funções Propósito: determinar a taxa de implementação das funções definidas na especificação de requisitos Fórmula: 1 - (# funções faltantes / # funções especificadas) Interpretação: 0 x 1; quanto mais próximo de 1, melhor Entradas: relatórios de avaliação, esp. requisitos confiabilidade tolerância a falhas Medida Externa Nome da medida: capacidade de evitar falhas Propósito: determinar controle de ocorrência de falhas Fórmula: (# falhas evitadas / # casos de teste) Interpretação: 0 x 1; quanto mais próximo de 1, melhor Entradas: relatórios de teste e de operação Exemplos de medidas 25 usabilidade apreensibilidade (learnability) Medida Interna Nome da medida: completitude de sistema de ajuda e documentação Propósito: determinar proporção de funções documentadas ao usuário Fórmula: (# funções documentadas / # funções) Interpretação: 0 x 1; quanto mais próximo de 1, melhor Entradas: Especificação requisitos, projeto, relatório revisão Exemplos de medidas eficácia Medida Qualidade em uso Nome da medida: tarefas completadas Propósito: determinar proporção de tarefas completadas Fórmula: (# tarefas completadas / # tarefas tentadas Interpretação: 0 x 1; quanto mais próximo de 1, melhor Entradas: relatório de operação, registro de histórico de uso. Exemplos de medidas 26 Referências Bibliográficas • KOSCIANSKI, A. e SOARES, M. S. Qualidade de Software. NOVATEC. • PRESSMAN, R. S. Engenharia de Software. McGraw Hill, • Notas de Aula do Prof. David Zanetti, Qualidade de Software - Unicarioca
Compartilhar