Capítulo 4 - Fundamentos do Desenvolvimento de Software (parte 4)
Autor: Alexandre de Miranda | Publicado: 2011-07-22T19:00:00-03:00

Controle de Qualidade
Um aspecto que me chamou muito a atenção foi a observação de que projetos que começam a atrasar tentam ganhar tempo cortando tarefas como design, revisão de código e teste (eu já vi isto acontecer!!).&nbsp; O autor afirma que isto seria um grande engano uma vez que são exatamente estas tarefas que reduzem a ocorrência de erros e, consequentemente, evitam a dilatação dos prazos. Projetos atrasados costumam enfatizar o trabalho duro (horas extras, mais pessoas) quando deveriam buscar trabalhar melhor!!

Ele observa também que os projetos mais rápidos são os que eliminam cerca de 95% dos erros antes da entrega. Menos do que isto, indica um processo de desenvolvimento muito imaturo e instável, por outro lado, buscar corrigir mais do que 95% dos erros exige muito esforço e consome tempo ("o ótimo é inimigo do bom") e só deve ser aplicado em alguns sistemas críticos (sistemas de suporte a vida, controle de processos industriais, sistemas de controle de aeronaves).

Em outras palavras, se mais do que 5% do erros são encontrados após a entrega, você pode melhorar seu processo de controle de qualidade e desenvolver sistemas mais rapidamente, com menos esforço e menos custos.

Outra sugestão interessante é a de buscar identificar os módulos com maior incidência de erros e reprojetar estes módulos. Uma pesquisa da IBM aponta que 57% do erros ocorrem em 7% do módulos.

O autor apresenta duas famílias de técnicas para efetuar o controle de qualidade:
teste
revisões técnicas
A efetividade dos testes varia muito, dependendo do tipo - testes unitários identificam entre 10% e 50% dos erros; testes sistêmicos identificam entre 20% e 60%. Entretanto, o maior problema com os testes é que geralmente eles apenas apontam que o produto não possui o nível de qualidade adequado pouco antes do momento da entrega. Esta característica faz parecer que os testes sejam&nbsp; responsáveis pelas más notícias que causam atrasos.

As revisões técnicas variam bastante em formalidade e efetividade e podem ser aplicadas em todos os artefatos produzidos durante o projeto (casos de uso, diagramas, código). Embora sejam aplicadas menos frequentemente que os testes, elas provocam um impacto maior no projeto.

Dentre as técnicas de revisão temos:
percorrimento (walkthroughs) - é a menos formal das técnicas, consistindo geralmente de uma reunião na qual dois ou mais desenvolvedores revêem algum artefato buscando melhorá-lo. Identifica entre 30 e 70% dos problemas de codificação, mas quando encontra problemas no levantamento de requisitos é provoca os maiores ganhos.
revisão de código - é um processo um pouco mais formal que o percorrimento e consiste na entrega de listagens de programa para outros programadores que ficam encarregados de buscar erros no programa e informar ao seu autor. Um estudo da NASA identificou que a revisão de código encontra duas vezes mais erros por hora do que os testes.
inspeção - é um processo formal que implica na capacitação especial de alguns técnicos e que demonstrou ser extremamente efetiva na identificação tempestiva de problemas nos projetos. Inspeções identificam de 60% a 90% dos defeitos de um programa, consideravelmente mais que o percorrimento e o teste.

Vale lembrar ainda que as revisões técnicas são mais efetivas e mais baratas por-erro-encontrado do que os testes porque as revisões técnicas detectam os sintomas e as causas dos problemas enquanto os testes apontam apenas os sintomas.

Como benefício adicional, as revisões técnicas promovem a disseminação do conhecimento e contribuem para melhorar o nível técnico da equipe.