métricas de código

46
Métricas de código Paulo Ortins [email protected] @pauloortins

Upload: paulo-cesar-ortins-brito

Post on 08-Jul-2015

174 views

Category:

Software


2 download

DESCRIPTION

Palestra falando sobre métricas de código, como linhas de código, complexidade ciclomática, coesão e acomplamento. Também fala dos tipos de visualizações existentes e das ferramentas que existem para extração e visualização de métricas.

TRANSCRIPT

Page 1: Métricas de Código

Métricas de códigoPaulo Ortins

[email protected]

@pauloortins

Page 2: Métricas de Código

Paulo Ortins

• Sócio e programador na OnceDev

• Atuo em comunidades desde 2011

• Frequentador assíduo de eventos, dojos, bate-papos e etc.

• Mestrando na UFBA (Engenharia de Software/Mineração de Repositórios de Software)

Page 3: Métricas de Código

Pra que serve o Google Analytics?

Page 4: Métricas de Código

Google Analytics

Page 5: Métricas de Código

Google Analytics

• Série de métricas

• Usuários

• Perfis de acesso

• Tempo de Permanência

• Fluxo de Navegação

• Empresas utilizam para auxiliar na tomada de decisões

Page 6: Métricas de Código

O caso do Walmart

Page 7: Métricas de Código

Business Intelligence

Page 8: Métricas de Código

E na Engenharia de Software?

• Onde coloco esse trecho de código?

• Devo criar uma classe nova?

• Quando devo refatorar o meu código?

• Quais as classes merecem a maior atenção?

Page 9: Métricas de Código

Desenvolvendo um software

Page 10: Métricas de Código

Início do desenvolvimento

Page 11: Métricas de Código

+ Decisões ruins

Page 12: Métricas de Código

+ Decisões ruins

Page 13: Métricas de Código

+ Decisões ruins

Page 14: Métricas de Código

Fim do Projeto

Page 15: Métricas de Código

Leis de Evolução do Software

• Mudança Contínua

• Complexidade Crescente

• Crescimento Contínuo

• Qualidade Decrescente

Page 16: Métricas de Código

Software Intelligence

• Business Intelligence para projetos de software

• Uso de dados gerados durante o processo de desenvolvimentopara auxiliar a tomada de decisões

Page 17: Métricas de Código

Fontes de Dados

• Bug trackers

• Listas de emails

• Repositórios de software

• Rastros de execução

Page 18: Métricas de Código

Métricas de Código

Page 19: Métricas de Código

Como medir a qualidade do código?• Quando um código é bom?

• Quando um código deve ser refatorado?

• Quando um código deve ser melhor testado?

Page 20: Métricas de Código

Linhas de Código

• Já foi/é utilizada de diversas formas

• Complexidade/Tamanho

• Produtividade

• Qual o número de linhas que uma classe deve ter ? E um método ?

• 10? 20? 50? 2000 ?

Page 21: Métricas de Código

Número de Mudanças

• Número de vezes que um determinado código é alterado aolongo do ciclo de vida do projeto

• O que isso pode nos dizer?

• Instabilidade?

• Importância?

• Uso?

Page 22: Métricas de Código

Complexidade Ciclomática

• Também conhecido como número ciclomático oucomplexidade de McCabe

• Número de possíveis caminhos de execução que um determinado trecho de código possui

Page 23: Métricas de Código

Exemplo – ComplexidadeCiclomática

Page 24: Métricas de Código

Exemplo – ComplexidadeCiclomática

Page 25: Métricas de Código

Exemplo – ComplexidadeCiclomática

Page 26: Métricas de Código

Complexidade Ciclomática

• Recomenda-se manter a CC de um código o menor possível

• Caso um código possua uma CC alta é desejável que essecódigo seja refatorado

Page 27: Métricas de Código

Coesão

• O que é coesão?

• LCOM (Lack of Cohesion of Methods)

• Calcula a ausência de similaridade entre métodos

• Número de pares de métodos que não compartilham variáveis –Número de pares de métodos que compartilham

• Quanto maior a LCOM, pior é a coesão de uma classe

Page 28: Métricas de Código

Acoplamento

• O que é Acoplamento?

• Acoplamento Aferente

• Acoplamento Eferente

• O acoplamento é sempre ruim?

Page 29: Métricas de Código

Linhas de Comentários

• Quantas linhas de comentários deve ter em um código?

• Comentar código é uma boa prática ou uma má prática?

Page 30: Métricas de Código

Cobertura de Código

• Qual o percentual do nosso código que está sendo cobertopor testes?

• Será que todo código deve estar 100% coberto por testes?

Page 31: Métricas de Código

Métricas devem sercombinadas• Complexidade Ciclomática + Linhas de Código

• Código grande e complexo

• CC + Linhas de Código + Poucas mudanças

• Código grande e complexo mas que está estável

Page 32: Métricas de Código

Métricas devem sercombinadas• Acoplamento Aferente + Muitas mudanças + Baixa cobertura

de testes

• Você vai ser caçado por outros desenvolvedores em breve.

• Complexidade Ciclomática + Linhas de Código + Muitasmudanças + Baixa Cobertura + Acoplamento Aferente

• O fim do mundo está próximo

Page 33: Métricas de Código

Visualização de Software

• A extração de métricas, por si só, não é suficiente

• Seres humanos não são bons em extrair informações a partirde dados brutos

Page 34: Métricas de Código

Visualização de Software

Page 35: Métricas de Código

Visualização de Software

Page 36: Métricas de Código

Code City

Page 37: Métricas de Código

Treemap

Page 38: Métricas de Código

Pack View

Page 39: Métricas de Código

Color Highlighting

Page 40: Métricas de Código

Ferramentas

• Visualizações: Web, Desktop ou Nenhuma

• Linguagens Suportadas

• Suporte a controles de versão

• Métricas por Desenvolvedor

Page 41: Métricas de Código

Sonar

Page 42: Métricas de Código

NDepend

Page 43: Métricas de Código

Code Climate

Page 44: Métricas de Código

Estado Atual

• Apesar das primeiras métricas de software tenham sidopropostas nos anos 70, seu uso ainda é pequeno

• A NASA, Motorola, HP e Boeing possuem casos de sucesso

Page 45: Métricas de Código

Estado Atual

• Diversas ferramentas são propostas na academia, porémpoucas acabam chegando a indústria

• Como provar o valor disso ?

Page 46: Métricas de Código

Obrigado

• Perguntas ?

• Meus contatos:

• @pauloortins

[email protected]

• Paulo César Ortins Brito