ContextLongMethod - CBSOFT 2016 - TOOLS

18
ContextLongMethod: Uma Ferramenta Sensível à Arquitetura para Detecção de Métodos Longos Cleverton Santos Marcos Barbosa Dósea Cláudio Nogueira Sant’Anna [email protected], [email protected], [email protected] Universidade Federal de Sergipe Universidade Federal da Bahia TOOLS 2016 Maringá, Setembro 2016

Transcript of ContextLongMethod - CBSOFT 2016 - TOOLS

Page 1: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod: Uma Ferramenta Sensível à Arquitetura para Detecção de

Métodos Longos

Cleverton Santos

Marcos Barbosa Dósea

Cláudio Nogueira Sant’Anna [email protected], [email protected], [email protected]

Universidade Federal de Sergipe Universidade Federal da Bahia

TOOLS 2016 Maringá, Setembro 2016

Page 2: ContextLongMethod - CBSOFT 2016 - TOOLS

Introdução

• A erosão do design é percebida pela surgimento progressivo de anomalias no código.

• Métodos longos estão entre as anomalias de código mais comuns independente do domínio da aplicação.

Page 3: ContextLongMethod - CBSOFT 2016 - TOOLS

Introdução

Page 4: ContextLongMethod - CBSOFT 2016 - TOOLS

Introdução

• Estratégias automáticas para revisão de código são baseadas em métricas coletadas do código.

– Valores limiares Genéricos;

– Executadas ao final da codificação;

Page 5: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod

É um sistema de recomendação que extrai conhecimento do design de um sistema referência e utiliza-o para recomendar candidatos a métodos longos para o

desenvolvedor.

Page 6: ContextLongMethod - CBSOFT 2016 - TOOLS

Interesse Arquitetural

1. Papel arquitetural da classe.

2. Design do código da aplicação

Page 7: ContextLongMethod - CBSOFT 2016 - TOOLS

Interesse Arquitetural

Page 8: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod

• Plug-in para o Eclipse

• Abordagens disponibilizadas:

a) Valor limiar genérico.

b) Valor limiar genérico extraído do design de um sistema de referência.

c) Valores limiares para cada interesse arquitetural extraídos do design de um sistema de referência

Page 9: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod

• Funcionamento

Page 10: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod

• Valores Limiares por Interesse Arquitetural

– O papel arquitetural da classe

– O design do código da aplicação

Page 11: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod

• Identificação dos Métodos Longos

Page 12: ContextLongMethod - CBSOFT 2016 - TOOLS

Exemplo de Uso

• Preferências do Plug-in

Page 13: ContextLongMethod - CBSOFT 2016 - TOOLS

Exemplo de Uso

• Métodos Longos Identificados

Page 14: ContextLongMethod - CBSOFT 2016 - TOOLS

Arquitetura Referência

• Arquitetura Cartoon

Page 15: ContextLongMethod - CBSOFT 2016 - TOOLS

Avaliação

• Nove versões do sistema MobileMedia

– Versão 01 como Sistema Referência

– Comparação com resultados de Paiva et al. (2015)

• inFusion, JDeodorant e PMD

• feature envy, god class e god method

– Precision, Recall e F-Score

Page 16: ContextLongMethod - CBSOFT 2016 - TOOLS

Avaliação

• Resultados

Precisão (%) Cobertura (%) % F-Score

Paiva et al. (2015)

inFusion 100 26 41,27

Jdeodorant 35 50 41,18

PMD 100 26 41,27

ContextLongMethod

45 LOC/Método 96 47 63,10

Percentil 75 27 100 42,52

Percentil 90 56 95 70,46

Percentil 75 + interesse 32 100 48,48

Percentil 90 + interesse 60 89 71,68

Page 17: ContextLongMethod - CBSOFT 2016 - TOOLS

Considerações Finais

• Estendendo a utilização das informações contextuais para detecção de outros code smells.

• Aprimorando o algoritmo que recupera informações do design do sistema referência.

• Plug-in open source – https://github.com/marcosdosea/ContextSmellDetector

Page 18: ContextLongMethod - CBSOFT 2016 - TOOLS

ContextLongMethod: Uma Ferramenta Sensível à Arquitetura para Detecção de

Métodos Longos

Cleverton Santos

Marcos Barbosa Dósea

Cláudio Nogueira Sant’Anna [email protected], [email protected], [email protected]

Universidade Federal de Sergipe Universidade Federal da Bahia

TOOLS 2016 Maringá, Setembro 2016