d etecting bad smells in source code using change history information fabio palomba, gabriele...

Post on 22-Apr-2015

103 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DETECTING BAD SMELLS IN SOURCE CODE USING CHANGE HISTORY INFORMATION

Fabio Palomba, Gabriele Bavota, Massimiliano Di Penta,

Rocco Oliveto, Andrea De Lucia, Denys Poshyvanyk

Johnatan Oliveira

ASE A1

Estrutura

• Introdução• Detecção Smell por Histórico de informações • Design de estudo (RQ)• Análise dos Resultados • Ameaças à Validade• Trabalhos relacionados• Conclusões e trabalhos futuros

Introdução

Evolução do Software

Bad Smell (pressa ou desinformados)

Manter software pode se tornar mais caro

AbordagemAbordagens com base em métricas que analisam a estrutura do código fonte.EX: LongMethod (LOC)

Falta precision and Recall para verificação ao decorrer do tempo.

Identificar 5 tipos de Bad Smell através do Histórico de Versão:

Divergent ChangeShotgun Surgery

Parallel inheritance

BlobFeature Envy

Hist

Exploração das informações em histórico deSistemas de controle de versão .

Projetos analisadosForam analisados projetos em Java , sendo eles :

Apache Ant TomCat JEdit + 5 API’s Android

Experimento para levantar oráculo

Construção manual do Oráculo Compara os resultados da HIST com análise estrutural

Precision entre 61 % e 80%

Recall está entre 61% e 100%

Sistemas Utilizados no Estudo

Snapshots dos Sistemas

PropostaIdeia Chave

Identificar Bad Smell através de informações de histórico de sistemas de controle de Versão

Processo de Detecção/Extração

Extração

Checkout de revisão i

Checkout de revisão i +1

Versão do Sistema

Mudanças Refinadas

Compara e retorna o conjunto resultante diferente

Extração SCV

Conjunto de Mudanças

Classes: adicionadas/removidas/movidas e renomeadas

Atributo: (...)

Método: (...)

Mudança de assinatura: visibilidade , tipo de retorno e parâmetros

Heurística

Divergent Change: regras de associação e análise de Committed. Mleft => Mright

Exemplo

Shotgun Surgery: mudança em um método, resulta em Mudança de métodos em outras classes.

Parallel Inheritance : os pares de classes das quais a adição de uma subclasse implica a adição de uma subclasse para a outra classe

Blob: classes modificadas requerem commit dePelo menos uma outra classe

Feature Envy: métodos de commit com métodos de outra classe

Questões de Pesquisa

RQ1: Qual é o desempenho do HIST na detecção de Bad Smell?

RQ2: Como comparar as técnicas existentes com a Hist?

Resultados

Resultados RQRQ1: Avaliaram o HIST com o oráculo criado. Através de precision e recall identificaram que HIST fiou entre 61% e 89% de identificação.

RQ2: ?????

OBS: uma técnica complementa a outra

R2Implementação de 3 algoritmos de detecção

Divergent Change : DCCA com base em conectividade (coesão)

Shotgun Surgery: SSCA chamadas de método entre classes

Parallel Inheritance: PICA classes afetadas pela herança Paralela como pares das classes

Blob e Feature Envy

Comparação DV

14 casos em 5 sistemas

Hist 76%( 79% recall e 73% precision)vs

AC 10%( 7% recall e 20% precision)

DCCA

Comparação SS

4 sistemas afetados com 4 ocorrências Hist 100% com 100% precisão

SCCA

Comparação PI

31 casos 19 foram identificados pelo HistHist recall 61% com 12 falso positivo

VSAlgoritmo PICA detectou 14 corretas e 45% recall , falso positivo 4%

PICA

Comparação Blob

Hist precission 76% recall de 61% (média 68%)

Decor

Comparação FE

Oráculo identificou em 5 dos 8 sistemas, totalizando 42.

Hist identificou 34 deles , contra 25 do JDeodorant

JDeodorant

AbordagensDiferenças detectadas pelas abordagens

% code smell correto em ambos

% Identificação correta pelo HIST

% Identificação correta pela análise estática , que não foi Identificada pelo HIST.

Ameaças a Validade

Ameaça de construção: criação do oráculo manual

Comparação: Comparação da Hist com ferramentas

Ameaça Externa: generalização dos resultados . Apenas 5 badsmells

ReplicaçãoPacote de Replicação

Repositório dos dados históricos extraídos Histórico de alterações das ferramentasOráculo manual Código Hist

Trabalhos Relacionados

Usam apenas métricas como: CBO, LOC, WMC e Redes Bayesianas

Conclusão

Levantou pontos de analise de contexto para evitar Perdas de informações e qualidade .

Proposta de definição de híbrido

top related