ContextLongMethod - CBSOFT 2016 - TOOLS
-
Upload
federal-university-of-sergipe -
Category
Software
-
view
117 -
download
3
Transcript of ContextLongMethod - CBSOFT 2016 - TOOLS
![Page 1: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/1.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/2.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/3.jpg)
Introdução
![Page 4: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/4.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/5.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/6.jpg)
Interesse Arquitetural
1. Papel arquitetural da classe.
2. Design do código da aplicação
![Page 7: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/7.jpg)
Interesse Arquitetural
![Page 8: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/8.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/9.jpg)
ContextLongMethod
• Funcionamento
![Page 10: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/10.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/11.jpg)
ContextLongMethod
• Identificação dos Métodos Longos
![Page 12: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/12.jpg)
Exemplo de Uso
• Preferências do Plug-in
![Page 13: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/13.jpg)
Exemplo de Uso
• Métodos Longos Identificados
![Page 14: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/14.jpg)
Arquitetura Referência
• Arquitetura Cartoon
![Page 15: ContextLongMethod - CBSOFT 2016 - TOOLS](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/15.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/16.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/17.jpg)
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](https://reader033.fdocumentos.com/reader033/viewer/2022042511/587baee81a28ab81758b78e1/html5/thumbnails/18.jpg)
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