Se eu tivesse que dar uma palestra sobre qualidade de codigo e pudesse escolher apenas um tema, escolheria inspecao de codigo. Esta e uma das melhores tecnicas para reduzir a quantidade de bugs no software, mas infelizmente e muito pouco utilizada pelas empresas. Isso porque parar um desenvolvedor por algumas horas para simplesmente olhar o codigo de outro parece uma perda de tempo muito grande para a maioria das empresas.Se voce tambem pensa assim, espero que tenha paciencia de ler este post ate o fim. Provavelmente mudara de ideia.Para comecar, vou colocar aqui dados de algumas empresas de porte razoavel sobre o assunto:Um defeito e encontrado a cada 4h de teste, contra 4,4 defeitos que sao encontrados durante 1h de revisao (Hewlett-Packard);Inspecoes sao 20x mais rapidas que testes (Russell);82% dos problemas sao resolvidos antes de testar (IBM);1 defeito e encontrado a cada 3 minutos de inspecao (Shell);Custo de manutencao dos codigos inspecionados e 1/10 do custo dos codigos nao-inspecionados (Imperial Chemical).Interessante, nao?A seguinte tabela foi extraida com base nos livros Software Defect-Removal Efficiency (Jones, 1996) e What we have learned about Fighting Defects (Shull 2002). Ela indica qual e, em media, a porcentagem de defeitos removidos utilizando cada uma das seguintes tecnicas comuns de qualidade: Tecnica para encontrar defeitos Qtde de Defeitos Inspecoes de design informais 35,00% Inspecoes de design formais 55,00% Inspecoes de codigo informais 25,00% Inspecoes de codigo formais 60,00% Prototipacao 65,00% Unit-tests 30,00% Testes de integracao 35,00% Testes de Regressao 25,00% Testes do sistema 40,00% Testes Beta (com menos de 10 usuarios) 35,00% Testes Beta (mais de mil usuarios) 75,00% Note que apenas a prototipacao e os testes beta de alto volume encontram mais problemas do que a revisao de codigo.Muitas empresas tentam aumentar a qualidade dos produtos aumentando a quantidade de testes do sistema. Isso e a mesma coisa que se pesar com mais frequencia para ver se diminui o peso.Nao estou dizendo que os testes devem ser substituidos pelas revisoes de codigo, mas sim que as duas tecnicas devem ser utilizadas em conjunto.Muito bonito na teoria, mas a minha equipe e pequena e nao temos condicoes de parar desenvolvedores para fazer revisao de codigo!Sera?Uma pesquisa mostra que a media de linhas de codigo desenvolvida por cada programador em um projeto de software e de 10 a 50 LOCs por dia. Isso parece absurdo em um primeiro momento, considerando que e possivel escrever esta quantidade de linhas em poucos minutos, mas e preciso considerar tambem o tempo que os desenvolvedores perdem debugando, testando, tentando entender o codigo e corrigindo defeitos. Quantas vezes voce ja nao passou um dia inteiro e nao escreveu uma linha sequer?O fato de voce realizar uma inspecao de codigo ira diminuir a quantidade de defeitos no produto, aumentando a qualidade e diminuindo o tempo de manutencao. Assim, com esta pratica, e possivel entregar um produto de maior qualidade em um tempo igual ou menor de desenvolvimento.Isso se prova com dados de campo: um estudo realizado pelo Laboratorio de Engenharia de Software da NASA sobre 50 projetos indicou que, na media, os projetos com menos