diêgo santiago, leila soriano e patrícia lustosa
DESCRIPTION
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 { - PowerPoint PPT PresentationTRANSCRIPT
Diêgo Santiago, Leila Soriano e Patrícia Lustosa27/03/2008
JaTSJaTS
Java Transformation Java Transformation SystemSystem
Sistema - JaTS
Ferramenta e linguagem de Ferramenta e linguagem de transformação de código Javatransformação de código Java
Permite geração e transformação de Permite geração e transformação de códigocódigo
Baseada em templates e variáveisBaseada em templates e variáveis
2
Sistema - JaTSJaTS
public class Livro {
private String autor
private String editora;
}
ModifierList:#MODIFICADOR class #NOME_CLASSE {
FieldDeclarationSet:#ATRIBUTOS;
}
ModifierList:#MODIFICADOR class #NOME_CLASSE {
FieldDeclarationSet:#ATRIBUTOS; private String isbn;
}
public class Livro {
private String autor
private String editora;
private String isbn;
}
Código FonteTransformação Fonte
Transformação Destino
Código Destino
3
Arquitetura JaTSArquitetura JaTS
Saída
ParserParser
TransformationTransformation
PrettyPrintingPrettyPrinting
SaídaSaída
Código FonteCódigo FonteTemplate FonteTemplate FonteTemplate DestinoTemplate Destino
Código DestinoCódigo Destino
SaídaSaída
EntradaEntrada
4
ParserParser
Analisador Léxico e SintáticoAnalisador Léxico e Sintático Identifica se o código Identifica se o código
Java/JaTS está bem formadoJava/JaTS está bem formado Cria a Árvore Sintática de Cria a Árvore Sintática de
nós Java/JaTSnós Java/JaTS
ParserParser
TransformationTransformation
PrettyPrintingPrettyPrinting
5
TransformationTransformation
MatcherMatcher Faz o casamento entre o Faz o casamento entre o
código fonte e o template código fonte e o template fontefonte
ReplacerReplacer Casa os valores das Casa os valores das
variáveis no template variáveis no template destino que dará origem ao destino que dará origem ao código destinocódigo destino
ProcessorProcessor Processa declarações Processa declarações
executáveis e iterativasexecutáveis e iterativas
ParserParser
TransformationTransformation
PrettyPrintingPrettyPrinting
6
Pretty PrintingPretty Printing
““Imprime” o código destino Imprime” o código destino da transformaçãoda transformação
ParserParser
TransformationTransformation
PrettyPrintingPrettyPrinting
7
Sistema - JaTS8
Concerns
Parse Transformation
Match Process Replacement
Pretty Print Syntactic Tree ThrowsException
9
Exemplo - Match 10
Exemplo - Replacement11
Exemplo – Syntactic Tree12
Exemplos – Código relacionado a mais de um
Concern13
Atividade de Atribuição dos Concerns
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
14
Métricas15
Conclusão
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
16
Conclusão
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.
17
Referências
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/
18
Dúvidas?19