SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
Métricas de código:
Pra que te quero?
Mauricio Aniche
mauricio.aniche@caelum.com.br
@mauricioaniche
Wednesday, June 26, 13
Wednesday, June 26, 13
Por que a Caelum
abriu 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 Web
Métricas de projeto
Wednesday, June 26, 13
Commiters
Wednesday, June 26, 13
Commiters achei 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 podem
ser ú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ório
com 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

Contenu connexe

En vedette

Presentatie
PresentatiePresentatie
Presentatietonksol
 
Métodos Ágeis de Desenvolvimento de Software: Uma introdução
Métodos Ágeis de Desenvolvimento de Software: Uma introduçãoMétodos Ágeis de Desenvolvimento de Software: Uma introdução
Métodos Ágeis de Desenvolvimento de Software: Uma introduçãoMaurício Aniche
 
Частное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбора
Частное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбораЧастное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбора
Частное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбораMichael Kozloff
 
Lautaro (My Experiences)
Lautaro (My Experiences)Lautaro (My Experiences)
Lautaro (My Experiences)rominacheme
 
Niezamówiona informacja handlowa w Internecie
Niezamówiona informacja handlowa w InternecieNiezamówiona informacja handlowa w Internecie
Niezamówiona informacja handlowa w Interneciekja1
 
ActiveCloud vs. облачные мифы
ActiveCloud vs. облачные мифыActiveCloud vs. облачные мифы
ActiveCloud vs. облачные мифыMichael Kozloff
 
Introduction to Optimization Group
Introduction to Optimization GroupIntroduction to Optimization Group
Introduction to Optimization GroupTom_Thompson
 
Indian Premier League - Overall Perspective
Indian Premier League - Overall PerspectiveIndian Premier League - Overall Perspective
Indian Premier League - Overall PerspectiveAdesh Nahar
 
Forever flowing 2.7
Forever flowing 2.7Forever flowing 2.7
Forever flowing 2.7Geminiasp
 
Vakdag fondsenwerving 2010 harm olde
Vakdag fondsenwerving 2010   harm oldeVakdag fondsenwerving 2010   harm olde
Vakdag fondsenwerving 2010 harm oldeHarm Olde
 

En vedette (16)

Sokken
SokkenSokken
Sokken
 
Presentatie
PresentatiePresentatie
Presentatie
 
Métodos Ágeis de Desenvolvimento de Software: Uma introdução
Métodos Ágeis de Desenvolvimento de Software: Uma introduçãoMétodos Ágeis de Desenvolvimento de Software: Uma introdução
Métodos Ágeis de Desenvolvimento de Software: Uma introdução
 
Частное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбора
Частное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбораЧастное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбора
Частное облако/IaaS для корпоративных ландшафтов: прикладные аспекты выбора
 
Roadshow
RoadshowRoadshow
Roadshow
 
Netstyle VoIP Solutions
Netstyle VoIP SolutionsNetstyle VoIP Solutions
Netstyle VoIP Solutions
 
Lautaro (My Experiences)
Lautaro (My Experiences)Lautaro (My Experiences)
Lautaro (My Experiences)
 
Niezamówiona informacja handlowa w Internecie
Niezamówiona informacja handlowa w InternecieNiezamówiona informacja handlowa w Internecie
Niezamówiona informacja handlowa w Internecie
 
ActiveCloud vs. облачные мифы
ActiveCloud vs. облачные мифыActiveCloud vs. облачные мифы
ActiveCloud vs. облачные мифы
 
Viaggi d’istruzione
Viaggi d’istruzioneViaggi d’istruzione
Viaggi d’istruzione
 
Lorne mckean
Lorne mckeanLorne mckean
Lorne mckean
 
Introduction to Optimization Group
Introduction to Optimization GroupIntroduction to Optimization Group
Introduction to Optimization Group
 
Indian Premier League - Overall Perspective
Indian Premier League - Overall PerspectiveIndian Premier League - Overall Perspective
Indian Premier League - Overall Perspective
 
RAFTT Technology Examples
RAFTT Technology ExamplesRAFTT Technology Examples
RAFTT Technology Examples
 
Forever flowing 2.7
Forever flowing 2.7Forever flowing 2.7
Forever flowing 2.7
 
Vakdag fondsenwerving 2010 harm olde
Vakdag fondsenwerving 2010   harm oldeVakdag fondsenwerving 2010   harm olde
Vakdag fondsenwerving 2010 harm olde
 

Similaire à Métricas de código, pra que te quero?

Um pouco sobre agilidade
Um pouco sobre agilidadeUm pouco sobre agilidade
Um pouco sobre agilidadeVitor Castro
 
Conheça um time de desenvolvimento ágil em seu dna
Conheça um time de desenvolvimento ágil em seu dnaConheça um time de desenvolvimento ágil em seu dna
Conheça um time de desenvolvimento ágil em seu dnaEduardo Fiorezi
 
Desenvolvimento Ágil com Drupal
Desenvolvimento Ágil com DrupalDesenvolvimento Ágil com Drupal
Desenvolvimento Ágil com DrupalRafael Caceres
 
Eu meço, tu medes, ele mede.. Mas medimos o quê?
Eu meço, tu medes, ele mede.. Mas medimos o quê?Eu meço, tu medes, ele mede.. Mas medimos o quê?
Eu meço, tu medes, ele mede.. Mas medimos o quê?Maurício Aniche
 
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebProposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebMaurício Aniche
 

Similaire à Métricas de código, pra que te quero? (6)

Um pouco sobre agilidade
Um pouco sobre agilidadeUm pouco sobre agilidade
Um pouco sobre agilidade
 
Conheça um time de desenvolvimento ágil em seu dna
Conheça um time de desenvolvimento ágil em seu dnaConheça um time de desenvolvimento ágil em seu dna
Conheça um time de desenvolvimento ágil em seu dna
 
Desenvolvimento Ágil com Drupal
Desenvolvimento Ágil com DrupalDesenvolvimento Ágil com Drupal
Desenvolvimento Ágil com Drupal
 
Desenvolvimento Ágil com Drupal
Desenvolvimento Ágil com DrupalDesenvolvimento Ágil com Drupal
Desenvolvimento Ágil com Drupal
 
Eu meço, tu medes, ele mede.. Mas medimos o quê?
Eu meço, tu medes, ele mede.. Mas medimos o quê?Eu meço, tu medes, ele mede.. Mas medimos o quê?
Eu meço, tu medes, ele mede.. Mas medimos o quê?
 
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações WebProposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
Proposta: Métricas e Heurísticas para Detecção de Problemas em Aplicações Web
 

Plus de Maurício Aniche

Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)Maurício Aniche
 
Tracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to PracticeTracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to PracticeMaurício Aniche
 
Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019Maurício Aniche
 
Software Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and StroopwafelsSoftware Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and StroopwafelsMaurício Aniche
 
Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)Maurício Aniche
 
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017Maurício Aniche
 
Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016Maurício Aniche
 
A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016Maurício Aniche
 
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...Maurício Aniche
 
DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?Maurício Aniche
 
Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Maurício Aniche
 
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...Maurício Aniche
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Maurício Aniche
 
O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?Maurício Aniche
 
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013Maurício Aniche
 
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...Maurício Aniche
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Maurício Aniche
 
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary StudyMTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary StudyMaurício Aniche
 
[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?Maurício Aniche
 

Plus de Maurício Aniche (20)

Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)Can ML help software developers? (TEQnation 2022)
Can ML help software developers? (TEQnation 2022)
 
Tracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to PracticeTracing Back Log Data to its Log Statement: From Research to Practice
Tracing Back Log Data to its Log Statement: From Research to Practice
 
Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019Pragmatic software testing education - SIGCSE 2019
Pragmatic software testing education - SIGCSE 2019
 
Test Automation Day 2018
Test Automation Day 2018Test Automation Day 2018
Test Automation Day 2018
 
Software Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and StroopwafelsSoftware Testing with Caipirinhas and Stroopwafels
Software Testing with Caipirinhas and Stroopwafels
 
Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)Code smells in MVC applications (Dutch Spring meetup)
Code smells in MVC applications (Dutch Spring meetup)
 
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
A Collaborative Approach to Teach Software Architecture - SIGCSE 2017
 
Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016Code quality in MVC systems - BENEVOL 2016
Code quality in MVC systems - BENEVOL 2016
 
A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016A Validated Set of Smells for MVC Architectures - ICSME 2016
A Validated Set of Smells for MVC Architectures - ICSME 2016
 
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
SATT: Tailoring Code Metric Thresholds for Different Software Architectures (...
 
DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?DNAD 2015 - Métricas de código, pra que te quero?
DNAD 2015 - Métricas de código, pra que te quero?
 
Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?Como eu aprendi que testar software é importante?
Como eu aprendi que testar software é importante?
 
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
Efeitos da Prática de Revisão de Código na Caelum: Um Estudo Preliminar em Du...
 
Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?Test-Driven Development serve pra mim?
Test-Driven Development serve pra mim?
 
O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?O que estamos temos feito com mineração de repositório de código no IME?
O que estamos temos feito com mineração de repositório de código no IME?
 
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
MetricMiner: Supporting Researchers in Mining Software Repositories - SCAM 2013
 
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study - W...
 
Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011Minicurso sobre Evolução de Software no CBSoft 2011
Minicurso sobre Evolução de Software no CBSoft 2011
 
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary StudyMTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
MTD2014 - Are The Methods In Your DAOs in the Right Place? A Preliminary Study
 
[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?[TDC 2014] Métricas de código, pra que te quero?
[TDC 2014] Métricas de código, pra que te quero?
 

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