Gerência e Qualidade de Software - Aula 06 - Técnica de revisão
Técnicas de Revisão em Gerência de Qualidade de Software
O que é Revisão?
- A revisão é uma técnica utilizada para avaliar produtos e artefatos de software, buscando identificar defeitos.
- Pode ser aplicada tanto para garantir a qualidade quanto para verificação e validação dos padrões definidos.
- As revisões são tradicionalmente estáticas, onde o produto é analisado sem execução, mas também podem ser dinâmicas.
Tipos de Revisão
- Exemplos de revisões dinâmicas incluem inspeções de usabilidade, onde a execução do produto é necessária para avaliação.
- A revisão pode ser aplicada a diversos artefatos além do software, como modelos e manuais criados durante o desenvolvimento.
Processo Normal de Desenvolvimento Sem Revisão
- Durante cada atividade no desenvolvimento, defeitos podem surgir. Por exemplo, falhas na definição dos requisitos podem gerar novos defeitos.
- Defeitos amplificados ocorrem quando um erro em um requisito afeta várias partes do software durante as fases subsequentes.
Amplificação de Defeitos
- Um fator amplificador pode aumentar o número total de defeitos identificados; por exemplo, se 50% dos defeitos são amplificados, isso resulta em mais problemas ao longo do processo.
- Mesmo sem revisão, alguns defeitos podem ser descobertos naturalmente ao trabalhar com documentos.
Impacto da Revisão no Desenvolvimento
- Com a implementação da revisão, a taxa de correção dos defeitos aumenta significativamente antes das próximas atividades.
Inspeção e Revisão no Desenvolvimento de Software
O Conceito de Inspeção
- A inspeção é um processo de revisão proposto em 1986, que visa melhorar o desenvolvimento de software. Inicialmente, há um custo maior devido à necessidade de revisões adicionais nas atividades iniciais.
Vantagens da Revisão
- Apesar do custo inicial elevado, a revisão permite entregar o produto final mais rapidamente. A ideia é que os esforços na fase inicial se pagam ao longo do processo.
- Durante uma revisão, múltiplos defeitos podem ser identificados simultaneamente. Isso contrasta com compiladores que geralmente detectam apenas o primeiro erro encontrado.
- A revisão pode revelar problemas ocultos em testes, onde um defeito pode mascarar outro. Esse efeito compensatório não ocorre durante a execução normal dos testes.
Características da Revisão
- A revisão é aplicável mesmo para artefatos incompletos; não é necessário ter todo o código funcionando para realizar uma inspeção eficaz.
- Além disso, a revisão permite avaliar características subjetivas de qualidade que são difíceis de medir por outros meios.
Treinamento e Aprendizado
- As revisões também servem como uma oportunidade de treinamento para a equipe. Membros menos experientes podem aprender ao revisar códigos ou modelos desenvolvidos por colegas.
Limitações e Desvantagens da Revisão
- Embora as revisões sejam eficazes na detecção de defeitos (60% dos erros), elas não substituem os testes unitários (30% dos erros). Problemas específicos como temporização são mais difíceis de identificar apenas através da revisão.
- O custo adicional das atividades de revisão deve ser considerado, pois envolve tempo e recursos para treinar a equipe adequadamente.
Dificuldades na Avaliação da Eficácia
- Medir as vantagens das revisões pode ser desafiador sem um histórico claro sobre os problemas existentes antes do processo.
Dinâmica das Reuniões de Revisão
- As reuniões de revisão devem ser conduzidas com cuidado para evitar defensividade entre os participantes. O foco deve estar no produto e não nas pessoas envolvidas no desenvolvimento.
Tipos de Revisão
- Existem diferentes tipos de revisões: informais (como conversas casuais ou programação em duplas) e formais (com estrutura definida envolvendo grupos maiores).
Revisões Informais
- Exemplos incluem discussões informais ou reuniões diárias onde o progresso é avaliado coletivamente.
Revisões Formais
- As revisões formais têm etapas bem definidas: preparação prévia, condução da reunião e atividades pós-revisão.
Revisão Técnica e Inspeção em Desenvolvimento de Software
Processo de Revisão
- O processo de revisão envolve a leitura e análise de artefatos, com a necessidade de marcar uma data e preparar o ambiente para a reunião.
- Após a revisão, é importante acompanhar se os defeitos identificados foram corrigidos. A gravidade dos defeitos pode determinar a necessidade de novas reuniões.
Tipos de Revisões Formais
- Existem diferentes tipos de revisões formais definidas por normas, como revisão gerencial, técnica e auditoria.
- O foco principal da discussão é na revisão técnica e inspeção.
Inspeção: Definição e Características
- A inspeção é um tipo específico de revisão formal, proposta por Fagan em 1986, que visa encontrar defeitos através da análise detalhada.
- Originalmente aplicada à análise de código, a inspeção pode ser utilizada em outros artefatos também.
Elementos da Inspeção
- Uma característica fundamental da inspeção é o uso de uma checklist para identificar defeitos comuns durante a análise.
- Outra característica importante é a classificação dos defeitos encontrados, permitindo um histórico das falhas identificadas.
Preparação para Inspeções
- Durante as inspeções, os participantes devem se preparar previamente lendo os artefatos com atenção usando a checklist.
- Na reunião, não é o autor do artefato que lê; isso garante uma visão imparcial sobre o material inspecionado.
Outros Tipos de Revisão Técnica
Execução Passo-a-Passo
- Outro método discutido envolve executar passo-a-passo o produto do software durante as revisões técnicas.
- Esse método pode ser realizado coletivamente (teste em mesa), onde várias pessoas analisam o código enquanto anotam observações.
Sugestões e Treinamento
- Ao contrário da inspeção que não sugere soluções, esse método permite discutir melhorias no código encontrado durante as análises.
- Além disso, essa abordagem serve como treinamento para equipes sobre funcionamento interno dos algoritmos.
Conclusão sobre Revisões em Software