métricas de código, pra que te quero?
DESCRIPTION
Palestra sobre métricas, dada na Agile Brazil 2013.TRANSCRIPT
Métricas de código:Pra que te quero?
Mauricio [email protected]
@mauricioaniche
Wednesday, June 26, 13
Wednesday, June 26, 13
Por que a Caelumabriu em Brasília?
pq tem coreanas lá!
irmão + novo é fogo...
Wednesday, June 26, 13
Business Intelligence
Wednesday, June 26, 13
E em software, como fazemos?
• O que devo testar no meu código?
• Meu time é distribuído. Isso é ruim?
• Tenho classes com código feio. Preciso mesmo refatorar?
• ...
Wednesday, June 26, 13
?????
Wednesday, June 26, 13
Software Intelligence(Prof. Ahmed Hassan)
Wednesday, June 26, 13
Minere os dados!
Wednesday, June 26, 13
MSR (Mining Software
Repositories)
• usa o(s) repositório(s) de forma ativa
• descobre padrões, tendências escondidas
Wednesday, June 26, 13
Wednesday, June 26, 13
Wednesday, June 26, 13
Leis da Evolução de Software
• Muda continuamente
• Tende a tornar-se mais complexo
• Tende a crescer
Wednesday, June 26, 13
Métricas de código
Wednesday, June 26, 13
Como medir qualidade de código?
Pra você, quando um código está ruim?
Wednesday, June 26, 13
Linhas de código
• Quantas linhas um método deve ter?
• 5? 10? 20? 50? 200?
Wednesday, June 26, 13
Quantidade de métodos
• Quantos métodos uma classe deve ter?
• Métodos públicos apenas.
Wednesday, June 26, 13
Complexidade Ciclomática
• “Quantidade de ifs”.
• Diferentes caminhos que seu método pode percorrer.
• Métrica de McCabe.
Wednesday, June 26, 13
Coesão
• Como medir coesão de uma classe?
• LCOM (Lack of Cohesion of Methods)
Wednesday, June 26, 13
Acoplamento
• Acoplamento Aferente.
• Acoplamento Eferente.
• Tamanho da Árvore de Herança.
Wednesday, June 26, 13
Estabilidade
• Todo acoplamento é ruim?
• Tem como fugir deles?
• Estabilidade.
Wednesday, June 26, 13
Co-changes
• Acoplamento lógico.
• Como medir?
• Todos eles fazem sentido?
Wednesday, June 26, 13
Quantidade de comentários
• O que isso significa?
• Você comenta código?
Wednesday, June 26, 13
Cobertura de Código
• 100% significa o quê?
Wednesday, June 26, 13
Métricas podem ser
combinadas!(Lanza e Marinescu)
Wednesday, June 26, 13
Caelum WebMétricas de projeto
Wednesday, June 26, 13
Commiters
Wednesday, June 26, 13
Commitersachei o
problema!
Wednesday, June 26, 13
artefatos modificados
Wednesday, June 26, 13
Bugs por dia de semana
Wednesday, June 26, 13
Bugs por dia de semana
Wednesday, June 26, 13
Bugs por dia de semana
Wednesday, June 26, 13
Bugs por hora
Wednesday, June 26, 13
Bugs por hora
Wednesday, June 26, 13
Wednesday, June 26, 13
Wednesday, June 26, 13
Wednesday, June 26, 13
Wednesday, June 26, 13
Número de testes
Wednesday, June 26, 13
Linhas adicionadas por commit
Wednesday, June 26, 13
Linhas adicionadas por commit
Wednesday, June 26, 13
Arquivos adicionados por commit
Wednesday, June 26, 13
Arquivos adicionados por commit
Wednesday, June 26, 13
Visualizações podemser úteis também!
Wednesday, June 26, 13
CodeCity
Wednesday, June 26, 13
Structure 101
Wednesday, June 26, 13
DSM
Wednesday, June 26, 13
Matrix Pyramid
Wednesday, June 26, 13
Diagrama de Kiviat
Wednesday, June 26, 13
Ferramentas
• JDepend/NDepend
• JavaNCSS
• Eclipse Metrics
• Kalibro Metrics
• Byecycle
Wednesday, June 26, 13
Nem tudo éperfeito... ;(
Wednesday, June 26, 13
somos péssimos pra organizar nossa
informação
Wednesday, June 26, 13
Links mal feitos
Wednesday, June 26, 13
Cada repositóriocom estrutura diferente
Wednesday, June 26, 13
Como provar o valor dessas coisas?
Wednesday, June 26, 13
TDDNoMundoReal.com.br
Wednesday, June 26, 13
@mauricioaniche
Wednesday, June 26, 13