190 likes | 279 Views
Diêgo Santiago, Leila Soriano e Patrícia Lustosa. JaTS Java Transformation System. 27/03/2008. Sistema - JaTS. 2. Ferramenta e linguagem de transformação de código Java Permite geração e transformação de código Baseada em templates e variáveis. Sistema - JaTS. 3. public class Livro {
E N D
Diêgo Santiago, Leila Soriano e Patrícia Lustosa JaTS Java Transformation System 27/03/2008
Sistema - JaTS 2 Ferramenta e linguagem de transformação de código Java Permite geração e transformação de código Baseada em templates e variáveis
Sistema - JaTS 3 public class Livro { private String autor private String editora; } ModifierList:#MODIFICADOR class #NOME_CLASSE { FieldDeclarationSet:#ATRIBUTOS; } Código Fonte Transformação Fonte public class Livro { private String autor private String editora; private String isbn; } ModifierList:#MODIFICADOR class #NOME_CLASSE { FieldDeclarationSet:#ATRIBUTOS; private String isbn; } Transformação Destino Código Destino
Arquitetura JaTS 4 Parser Saída Saída Saída Saída Entrada Transformation PrettyPrinting Código FonteTemplate FonteTemplate Destino Código Destino
Parser Analisador Léxico e Sintático Identifica se o código Java/JaTS está bem formado Cria a Árvore Sintática de nós Java/JaTS 5 Parser Transformation PrettyPrinting
Transformation Matcher Faz o casamento entre o código fonte e o template fonte Replacer Casa os valores das variáveis no template destino que dará origem ao código destino Processor Processa declarações executáveis e iterativas 6 Parser Transformation PrettyPrinting
Pretty Printing “Imprime” o código destino da transformação 7 Parser Transformation PrettyPrinting
Parse Transformation Match Process Replacement Pretty Print Syntactic Tree ThrowsException Concerns 9
Atividade de Atribuição dos Concerns 14 • Número de linhas de código marcadas: 30.477 • Tempo total para marcar: 24 horas • Dúvidas • Classes do pacote util • Interface e classes abstratas • Classes geradas automaticamente • Main • Cloning • Problemas • ConcernTagger
Métricas 15
Conclusão 16 • Parser, Replacement e Pretty Printing não são crosscutting concerns • Transformation, Match, Process e Syntatic Tree são crosscutting concerns entre si • ThrowsException é crosscutting concern em relação a todos os outros concerns
Conclusão 17 • Foram analisados o CDC e o DOSC • As métricas foram úteis para avaliar os possíveis crosscutting concerns, mas não para avaliar a relação entre eles • Avaliamos os crosscutting pelo que era conhecido do projeto. A métrica que mais se aproximou do analisado foi DOSC.
Referências 18 • Eaddy, M et al. Do Crosscutting Concerns Cause Defects? • Eaddy, M et al. Identifying, Assigning, and Quantifying Crosscutting Concerns • Site do JaTS • http://www.cin.ufpe.br/~jats/
Dúvidas? 19