Ferramentas para Linhas de Produtos de Aplicações Móveis - FLIP
Carlos Eduardo PontualFernanda d’AmorimLeopoldo Teixeira
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
Produto 1
Base
Produto 1 Produto 2
FLIPex
FLIPcQuality Assurance Packaging
FLIPg
ReceptionReception
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
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
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
FLiPEx
FLiPC e FLiPG
Exemplo FLiPEx
Exemplo FLiPC
Exemplo FLiPG
Tabela Métricas
Tabela Métricas
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.
Crosscutting concerns: Extração de código para aspectos
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ó
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