Olá pessoal, continuando no embalo do Agile Brazil 2013, irei falar hoje sobre métricas de código. Esse post foi baseado na palestra "Métricas de código, para que te quero" de Mauricio Aniche no Agile Brazil 2013.
Inicialmente, vale lembrar que esse tema não é novo em nosso blog. Em Maio de 2012 escrevi um post que fala sobre o assunto, entretanto, na época, não abordei métricas de código, apenas métricas relacionadas ao projeto.
Ainda, segundo Pressman, se não realizamos medições sobre alguma coisa, não sabemos nada sobre isso. Logo, se buscamos a melhoria contínua, precisamos medir não apenas nosso processo, mas também encontrar métricas que indiquem a qualidade de nosso código, que é um dos principais artefatos gerados durante o desenvolvimento.
Assim como temos o Business Intelligence, que analisa métricas do négócio, devemos criar o Software Intelligence, com o objetivo de encontrar, através dos números, potenciais problemas em nosso código. Dessa forma, podemos prever a ocorrência de um problema ou até mesmo evitar a ocorrência do mesmo. Por exemplo, podemos descobrir que X% das classes que importam o pacote xyz devem ser corrigidas posteriormente, dessa forma, sabemos que, ao utilizar determinados pacotes, devemos ter atenção, pois normalmente erros são gerados.
Em sua palestra, Mauricio Aniche indicou algumas métricas para avaliar o andamento do desenvolvimento do software:
- Linhas de código por método
- Quantidade de métodos por classe
- Cobertura de código
- Artefatos modificados
- Bugs por dia de semana
- etc…
Ainda, vale lembrar que, apesar de existirem boas práticas para algumas métricas citadas (linhas de código por método, por exemplo) a medição é importante para sabermos quando, em nossa organização, esse número passa a ser crítico e a ser um grande indício de bugs. Além disso, podemos cruzar essas informações, de forma a termos novas interpretações sobre nosso código.
Como realizar essas medições não é uma tarefa simples, existem diversas ferramentas para apoio nesse momento, como o Eclipse Metrics, JaCoCO – Java Code Coverage dentre outros.
Finalizando, fica cada vez mais claro para mim a importância de medirmos nosso trabalho, sem um número não temos como saber se estamos melhorando ou piorando o mesmo. E vocês, praticam medições no código? Quais métricas utilizam? Vamos continuar esse bate papo…