Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para...

Post on 07-Apr-2016

212 views 0 download

Transcript of Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para...

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