métricas de código

Post on 08-Jul-2015

174 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

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

Métricas de códigoPaulo Ortins

pauloortins@oncedev.com

@pauloortins

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)

Pra que serve o Google Analytics?

Google Analytics

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

O caso do Walmart

Business Intelligence

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?

Desenvolvendo um software

Início do desenvolvimento

+ Decisões ruins

+ Decisões ruins

+ Decisões ruins

Fim do Projeto

Leis de Evolução do Software

• Mudança Contínua

• Complexidade Crescente

• Crescimento Contínuo

• Qualidade Decrescente

Software Intelligence

• Business Intelligence para projetos de software

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

Fontes de Dados

• Bug trackers

• Listas de emails

• Repositórios de software

• Rastros de execução

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?

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 ?

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?

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

Exemplo – ComplexidadeCiclomática

Exemplo – ComplexidadeCiclomática

Exemplo – ComplexidadeCiclomática

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

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

Acoplamento

• O que é Acoplamento?

• Acoplamento Aferente

• Acoplamento Eferente

• O acoplamento é sempre ruim?

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?

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?

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

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

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

Visualização de Software

Visualização de Software

Code City

Treemap

Pack View

Color Highlighting

Ferramentas

• Visualizações: Web, Desktop ou Nenhuma

• Linguagens Suportadas

• Suporte a controles de versão

• Métricas por Desenvolvedor

Sonar

NDepend

Code Climate

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

Estado Atual

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

• Como provar o valor disso ?

Obrigado

• Perguntas ?

• Meus contatos:

• @pauloortins

• pauloortins@oncedev.com

• Paulo César Ortins Brito

top related