parte 3 - resultados carlos eduardo pontual fernanda d’amorim leopoldo teixeira ferramentas para...

20
Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Upload: hugo-coito

Post on 07-Apr-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Parte 3 - Resultados

Carlos Eduardo PontualFernanda d’Amorim

Leopoldo Teixeira

Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Page 2: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda 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

Page 3: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Refactorings OO utilizados

• ExtractMethod – Extrair variações de comportamento – 3 vezes para cada arquivo de validador

Page 4: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

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

Page 5: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

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

Page 6: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Aspect Oriented Idioms

• Abstract Pointcut – 9 • Composite Pointcut – 4• Container Introduction – 1• Template Advice – 6• Pointcut Method – 1

Page 7: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

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.

Page 8: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Extractors: AfterCall/BeforeCall antes

Page 9: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Extractors: AfterCall/BeforeCall depois

Page 10: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Extractors: Interface/SuperClass depois

Obs.: Classe pequena e similar, apenas com as variações, ccfinder entende como clone

Page 11: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

PureVariantsAdapter - antes

Page 12: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

PureVariantsAdapter - depois

Page 13: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Clones de exceção - antes

Page 14: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Clones de exceção - depois

Page 15: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Validators: distribuição da taxa de duplicação - antes

Page 16: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Validators: distribuição da taxa de duplicação - depois

Page 17: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Validators (AfterCall/BeforeCall) – antes

clones

Page 18: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

clone

Validators (AfterCall/BeforeCall) – depois

Page 19: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP
Page 20: Parte 3 - Resultados Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

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