Este documento apresenta o PolymorphicView, uma ferramenta que auxilia na visualização e análise do uso de polimorfismo em projetos de software. A ferramenta extrai dados sobre classes abstratas e interfaces de projetos, filtra aquelas com determinadas métricas e constrói uma visualização que permite analisar estruturas polimórficas. A abordagem fornece perspectivas estrutural e comportamental para compreensão de padrões arquiteturais.
PolymorphicView: Visualizando o uso do Polimorfismo em Projetos de Software
1. PolymorphicView:
Visualizando o uso do Polimorfismo
em Projetos de Software
Fábio Petrillo, Guilherme Lacerda, Marcelo Pimenta, Carla Freitas
{fspetrillo,gslacerda,mpimenta,carla}@inf.ufrgs.br
INF-UFRGS/FacIn-UniRitter
6. Experimento: Processo
1. Extrair os dados dos projetos
2. Pesquisar todas as classes abstratas e interfaces
3. Filtrar
DIT >= 1, NOC >= 1, NAM >= 1, pelo menos um cliente
4. Construir o PolymorphicView
5. Analisar o polimorfismo através da visualização
6. Complementar a análise com o código fonte
11. Discussão
Apoio na localização de estruturas polimórficas
Forma de encontrar e detectar patterns
PolymorphicView
Perspectiva Estrutural + Perspectiva Comportamental
Compreensão de padrões arquiteturais
12. Conclusões e Trabalhos Futuros
Limitações
Dificuldade em analisar todos os níveis de
hierarquia
Em alguns casos, precisou-se recorrer ao
código
13. Conclusões e Trabalhos Futuros
Perspectivas
como os tipos polimórficos se relacionam com seus clientes?
quais padrões de projeto que adotam polimorfismo são
encontrados?
quais anti-padrões são encontrados?
há diferenças entre o uso de polimorfismo em Java e em outras
linguagens?
uso do polimorfismo é uma opção deste as primeiras versões de
um tipo ou é o resultado de um processo de evolução do
software, através de refatorações, por exemplo?