Não tenho certeza se você o consideraria elegante, mas Watts Humphrey escreveu um livro inteiro chamado Personal Software Process que tratava de medir sua própria produtividade. Ele descreveu métricas para entradas como tempo em sua mesa versus interrupções, tempo gasto trabalhando em vários tipos de atividades do ciclo de vida de software, defeitos por quantidade de código. Há um relatório técnico que fornece a versão curta em:
http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm
Se você quiser ver algo como a qualidade de um código de desenvolvedor, a Chidamber & Kemerer propôs várias métricas para o código orientado a objetos.
Métricas para código orientado a objetos
- profundidade da árvore de herança,
- número ponderado de métodos,
- número de funções membro,
- número de filhos e
- acoplamento entre objetos.
Usando uma base de código, eles tentaram correlacionar essas métricas com a densidade de defeitos e o esforço de manutenção usando análise covariante. Estudos posteriores fizeram análises semelhantes em centenas de projetos Java do Source Forge para determinar suas características em relação às CK Metrics e algumas métricas adicionais propostas posteriormente.
Métricas surgidas no contexto das Revisões de Código
Os defeitos podem ser classificados por vários critérios:
- gravidade: (maior, menor, cosmética, investigar / desconhecido),
- tipo (lógica, erro de digitação, ortografia, violação padrão de codificação etc.),
- origem / contenção de fase (requisitos, design, código etc.).
Também existem taxas de preparação e inspeção (tempo por revisor, tempo por linha de código) e densidades de defeitos (por KLOC (mil linhas de código), por minuto de tempo do inspetor / revisor).
A plotagem desses valores nos gráficos de controle pode nos mostrar se estamos dentro dos limites do processo (por exemplo, uma equipe que inspeciona 200 linhas de código que não encontra defeitos em um grupo com média de vinte e cinco defeitos por KLOC pode não funcionar corretamente).
Outras métricas
Outras métricas que podem ajudar a incluir aquelas para
Limitações da análise
Existem enormes limites no valor das métricas. Bugs corrigidos por desenvolvedor podem significar quase tudo, e quando você começar a punir ou recompensar essa medição, aposto que os bugs ficarão mais numerosos e granulares, e a mistura de bugs difíceis de fáceis corrigidos também mudará conforme a cereja do time escolhe. correr para ter o máximo.
Há também uma certa distração e, potencialmente, uma perda de foco e prazer que pode ocorrer com medidas intrusivas. Você não pode ficar muito mais elegante (e emocionalmente sobrecarregado) do que um poeta do lago como Wordsworth, que disse:
Sweet is the lore which Nature brings;
Our meddling intellect
Mis-shapes the beauteous forms of things:--
We murder to dissect.
Embora o software não seja exatamente a natureza, me dê um pouco de latitude, porque pensei que nunca usaria nada da aula de literatura inglesa do ensino médio.
O Agile pode ser considerado uma reação ao grande processo centralizado. Às vezes, esse modo de trabalho pode exigir tanto esforço analítico que a capacidade de atingir o fluxo enquanto cria software desaparece.