200 likes | 302 Views
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.
E N D
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
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
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.
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