parte 3 - resultados carlos eduardo pontual fernanda d’amorim leopoldo teixeira ferramentas para...
TRANSCRIPT
Parte 3 - Resultados
Carlos Eduardo PontualFernanda d’Amorim
Leopoldo Teixeira
Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP
Concerns tratados
• Exceções (FLiPG)• Duplicação de código (FLiPEx)– Extratores– Validadores• Código bastante clonado, com variações dentro de if-
elses aninhados
Refactorings OO utilizados
• ExtractMethod – Extrair variações de comportamento – 3 vezes para cada arquivo de validador
Leis utilizadas• Law 1 - Make Aspect Privileged – 16• Law 2 - Add Before-Execution – 2• Law 4 - Add After-Execution - 3• Law 5 - Add After-Execution Returning
Successfully - 1 • Law 7 - Add Around-Execution – 4• Law 9 - Merge Advices - 15• Law 13 - Soften Exception – 3
Leis utilizadas• Law 14 - Add Catch for Soften Exception – 2• Law 17 - Extract Named Pointcut - 15• Law 24 - Move Method to Aspect – 2• Law 25 - Move implements declaration to aspect
- 1• Law 26 – Add Around-Call - 3• Law 29 - Move method introduction up to
interface – 1
Aspect Oriented Idioms
• Abstract Pointcut – 9 • Composite Pointcut – 4• Container Introduction – 1• Template Advice – 6• Pointcut Method – 1
AO Refactorings
• Around call para substituir método - 2 •(problema no inter type)
• Pull up Advice – 9–Utilizado para subir os advices em comum para os aspectos abstratos.
Extractors: AfterCall/BeforeCall antes
Extractors: AfterCall/BeforeCall depois
Extractors: Interface/SuperClass depois
Obs.: Classe pequena e similar, apenas com as variações, ccfinder entende como clone
PureVariantsAdapter - antes
PureVariantsAdapter - depois
Clones de exceção - antes
Clones de exceção - depois
Validators: distribuição da taxa de duplicação - antes
Validators: distribuição da taxa de duplicação - depois
Validators (AfterCall/BeforeCall) – antes
clones
clone
Validators (AfterCall/BeforeCall) – depois
Análise e Conclusão
• Abordagem de mapeamento de concerns– Dificultou a modularização dos mesmos
• Arquitetura de componentes – Plugin Eclipse– Dificultou o uso de aspectos entre projetos
– Código duplicado foi reduzido, mas concerns não modularizados