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

Post on 17-Dec-2014

1.428 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Mauricio Anichemauricio.aniche@caelum.com.br

@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

Obrigado!mauricio.aniche@caelum.com.br

@mauricioaniche

Wednesday, June 26, 13

top related