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

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

Embed Size (px)

DESCRIPTION

Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP. Carlos Eduardo Pontual Fernanda d’Amorim Leopoldo Teixeira. Objetivo: automatizar linhas de produtos. reuso estratégico de artefatos comuns e variações. FLiP. Base. FLIPg. Produto 1. FLIPex. FLIPc. Produto 1. Produto 2. - PowerPoint PPT Presentation

Citation preview

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

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

Carlos Eduardo PontualFernanda d’AmorimLeopoldo Teixeira

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

Objetivo: automatizar linhas de produtos

A

CB'

DA

CB

A

CB

D

A

B

C

D B'

reuso estratégico de artefatos

comuns e variações

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

Produto 1

Base

Produto 1 Produto 2

FLIPex

FLIPcQuality Assurance Packaging

FLIPg

ReceptionReception

FLiP

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

Módulos• Extração de variações (FLIPex)

– Refactoring, análise estática de código• Composição de variações e base (FLIPc)

– Orientação a aspectos, transformação de programas, prog. generativa, frameworks

• Gerenciamento de variações (FLIPg)– Visualização, análise de interferências, meta-

linguagem de configuração

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

Métricas

• 45 projetos compõem o FLiP– Unidos em um único para cálculo de métricas

• Total de Linhas de Código– 15.664

• Total de Classes– 186

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

Concerns• 37 concerns identificados (7564 LOC)

– FLiPEx – 26 concerns (4234 LOC)– FLiPC – 2 concerns (215 LOC)– FLiPG – 8 concerns (3448 LOC)– Iniciar FLiP – 1 concern (260 LOC)

• Documentação de requisitos– Requisitos não funcionais não mapeados– Concerns cogitados

• Suportar extrair tag pré-processada• Tratamento de Exceções• Persistência

• Entendimento e marcação– 5 dias 4h/dia – 3 pessoas

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

FLiPEx

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

FLiPC e FLiPG

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

Exemplo FLiPEx

Page 10: Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP
Page 11: Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Exemplo FLiPC

Page 12: Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP
Page 13: Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Exemplo FLiPG

Page 14: Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP
Page 15: Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP

Tabela Métricas

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

Tabela Métricas

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

Croscutting concerns

• Concerns de extração de códigos são croscutting entre si– Extração para Aspectos e para código Pré-

processado também se entrelaçam• Inicialização de FLiPEx, FLiPC, FLiPG e FLiP são

croscutting• Como esperado, encontramos na Facade

muitos concerns entrelaçados.

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

Crosscutting concerns: Extração de código para aspectos

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

Dificuldades• Projeto desenvolvido por terceiros

– Entendimento do código

• Adaptação dos requisitos– Interpretação dos documentos de requisitos– Criar hierarquia de concerns

• ConcernTagger– Incompatibilidade com VMs– Não calcula métrica em projetos diferentes

• Unir todos os projetos em um só

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

Conclusão

• Números não dizem tudo– Baixa granularidade (classes)– Espalhamento ≠ Acoplamento– Código espalhado devido ao alto grau de

modularidade

• Análise a nível de pacotes– Projetos diferentes