métricas de código, pra que te quero?

56
Métricas de código: Pra que te quero? Mauricio Aniche [email protected] @mauricioaniche Wednesday, June 26, 13

Upload: mauricio-aniche

Post on 17-Dec-2014

1.428 views

Category:

Technology


0 download

DESCRIPTION

Palestra sobre métricas, dada na Agile Brazil 2013.

TRANSCRIPT

Page 1: Métricas de código, pra que te quero?

Métricas de código:Pra que te quero?

Mauricio [email protected]

@mauricioaniche

Wednesday, June 26, 13

Page 2: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 3: Métricas de código, pra que te quero?

Por que a Caelumabriu em Brasília?

pq tem coreanas lá!

irmão + novo é fogo...

Wednesday, June 26, 13

Page 4: Métricas de código, pra que te quero?

Business Intelligence

Wednesday, June 26, 13

Page 5: Métricas de código, pra que te quero?

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

Page 6: Métricas de código, pra que te quero?

?????

Wednesday, June 26, 13

Page 7: Métricas de código, pra que te quero?

Software Intelligence(Prof. Ahmed Hassan)

Wednesday, June 26, 13

Page 8: Métricas de código, pra que te quero?

Minere os dados!

Wednesday, June 26, 13

Page 9: Métricas de código, pra que te quero?

MSR (Mining Software

Repositories)

• usa o(s) repositório(s) de forma ativa

• descobre padrões, tendências escondidas

Wednesday, June 26, 13

Page 10: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 11: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 12: Métricas de código, pra que te quero?

Leis da Evolução de Software

• Muda continuamente

• Tende a tornar-se mais complexo

• Tende a crescer

Wednesday, June 26, 13

Page 13: Métricas de código, pra que te quero?

Métricas de código

Wednesday, June 26, 13

Page 14: Métricas de código, pra que te quero?

Como medir qualidade de código?

Pra você, quando um código está ruim?

Wednesday, June 26, 13

Page 15: Métricas de código, pra que te quero?

Linhas de código

• Quantas linhas um método deve ter?

• 5? 10? 20? 50? 200?

Wednesday, June 26, 13

Page 16: Métricas de código, pra que te quero?

Quantidade de métodos

• Quantos métodos uma classe deve ter?

• Métodos públicos apenas.

Wednesday, June 26, 13

Page 17: Métricas de código, pra que te quero?

Complexidade Ciclomática

• “Quantidade de ifs”.

• Diferentes caminhos que seu método pode percorrer.

• Métrica de McCabe.

Wednesday, June 26, 13

Page 18: Métricas de código, pra que te quero?

Coesão

• Como medir coesão de uma classe?

• LCOM (Lack of Cohesion of Methods)

Wednesday, June 26, 13

Page 19: Métricas de código, pra que te quero?

Acoplamento

• Acoplamento Aferente.

• Acoplamento Eferente.

• Tamanho da Árvore de Herança.

Wednesday, June 26, 13

Page 20: Métricas de código, pra que te quero?

Estabilidade

• Todo acoplamento é ruim?

• Tem como fugir deles?

• Estabilidade.

Wednesday, June 26, 13

Page 21: Métricas de código, pra que te quero?

Co-changes

• Acoplamento lógico.

• Como medir?

• Todos eles fazem sentido?

Wednesday, June 26, 13

Page 22: Métricas de código, pra que te quero?

Quantidade de comentários

• O que isso significa?

• Você comenta código?

Wednesday, June 26, 13

Page 23: Métricas de código, pra que te quero?

Cobertura de Código

• 100% significa o quê?

Wednesday, June 26, 13

Page 24: Métricas de código, pra que te quero?

Métricas podem ser

combinadas!(Lanza e Marinescu)

Wednesday, June 26, 13

Page 25: Métricas de código, pra que te quero?

Caelum WebMétricas de projeto

Wednesday, June 26, 13

Page 26: Métricas de código, pra que te quero?

Commiters

Wednesday, June 26, 13

Page 27: Métricas de código, pra que te quero?

Commitersachei o

problema!

Wednesday, June 26, 13

Page 28: Métricas de código, pra que te quero?

artefatos modificados

Wednesday, June 26, 13

Page 29: Métricas de código, pra que te quero?

Bugs por dia de semana

Wednesday, June 26, 13

Page 30: Métricas de código, pra que te quero?

Bugs por dia de semana

Wednesday, June 26, 13

Page 31: Métricas de código, pra que te quero?

Bugs por dia de semana

Wednesday, June 26, 13

Page 32: Métricas de código, pra que te quero?

Bugs por hora

Wednesday, June 26, 13

Page 33: Métricas de código, pra que te quero?

Bugs por hora

Wednesday, June 26, 13

Page 34: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 35: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 36: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 37: Métricas de código, pra que te quero?

Wednesday, June 26, 13

Page 38: Métricas de código, pra que te quero?

Número de testes

Wednesday, June 26, 13

Page 39: Métricas de código, pra que te quero?

Linhas adicionadas por commit

Wednesday, June 26, 13

Page 40: Métricas de código, pra que te quero?

Linhas adicionadas por commit

Wednesday, June 26, 13

Page 41: Métricas de código, pra que te quero?

Arquivos adicionados por commit

Wednesday, June 26, 13

Page 42: Métricas de código, pra que te quero?

Arquivos adicionados por commit

Wednesday, June 26, 13

Page 43: Métricas de código, pra que te quero?

Visualizações podemser úteis também!

Wednesday, June 26, 13

Page 44: Métricas de código, pra que te quero?

CodeCity

Wednesday, June 26, 13

Page 45: Métricas de código, pra que te quero?

Structure 101

Wednesday, June 26, 13

Page 46: Métricas de código, pra que te quero?

DSM

Wednesday, June 26, 13

Page 47: Métricas de código, pra que te quero?

Matrix Pyramid

Wednesday, June 26, 13

Page 48: Métricas de código, pra que te quero?

Diagrama de Kiviat

Wednesday, June 26, 13

Page 49: Métricas de código, pra que te quero?

Ferramentas

• JDepend/NDepend

• JavaNCSS

• Eclipse Metrics

• Kalibro Metrics

• Byecycle

Wednesday, June 26, 13

Page 50: Métricas de código, pra que te quero?

Nem tudo éperfeito... ;(

Wednesday, June 26, 13

Page 51: Métricas de código, pra que te quero?

somos péssimos pra organizar nossa

informação

Wednesday, June 26, 13

Page 52: Métricas de código, pra que te quero?

Links mal feitos

Wednesday, June 26, 13

Page 53: Métricas de código, pra que te quero?

Cada repositóriocom estrutura diferente

Wednesday, June 26, 13

Page 54: Métricas de código, pra que te quero?

Como provar o valor dessas coisas?

Wednesday, June 26, 13

Page 55: Métricas de código, pra que te quero?

TDDNoMundoReal.com.br

Wednesday, June 26, 13

Page 56: Métricas de código, pra que te quero?

[email protected]

@mauricioaniche

Wednesday, June 26, 13