ContextLongMethod - CBSOFT 2016 - TOOLS
-
Upload
federal-university-of-sergipe -
Category
Software
-
view
116 -
download
3
Transcript of 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
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.
Introdução
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;
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.
Interesse Arquitetural
1. Papel arquitetural da classe.
2. Design do código da aplicação
Interesse Arquitetural
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
ContextLongMethod
• Funcionamento
ContextLongMethod
• Valores Limiares por Interesse Arquitetural
– O papel arquitetural da classe
– O design do código da aplicação
ContextLongMethod
• Identificação dos Métodos Longos
Exemplo de Uso
• Preferências do Plug-in
Exemplo de Uso
• Métodos Longos Identificados
Arquitetura Referência
• Arquitetura Cartoon
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
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
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
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