Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java...
Transcript of Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java...
Diêgo Santiago, Leila Soriano e Patrícia Lustosa27/03/2008
JaTSJaTS
Java Transformation SystemJava Transformation System
Parte 1Parte 1
Sistema - JaTS
�� Ferramenta e linguagem de transformaFerramenta e linguagem de transformaçção de ão de ccóódigo Javadigo Java
�� Permite geraPermite geraçção e transformaão e transformaçção de cão de cóódigodigo
�� Baseada em templates e variBaseada em templates e variááveisveis
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
SaSaíídada
CCóódigo Fontedigo Fonte
Template FonteTemplate Fonte
Template DestinoTemplate Destino
CCóódigo Destinodigo Destino
SaídaSaída
EntradaEntrada
4
ParserParser
�� Analisador LAnalisador Lééxico e Sintxico e Sintááticotico
�� Identifica se o cIdentifica se o cóódigo Java/JaTS digo Java/JaTS estestáá bem formadobem formado
�� Cria a Cria a ÁÁrvore Sintrvore Sintáática de ntica de nóós s Java/JaTSJava/JaTS
ParserParser
TransformationTransformation
PrettyPrintingPrettyPrinting
5
TransformationTransformation
�� MatcherMatcher
�� Faz o casamento entre o cFaz o casamento entre o cóódigo digo fonte e o template fontefonte e o template fonte
�� ReplacerReplacer
�� Casa os valores das variCasa os valores das variááveis veis no template destino que darno template destino que darááorigem ao corigem ao cóódigo destinodigo destino
�� ProcessorProcessor
�� Processa declaraProcessa declaraçções ões executexecutááveis e iterativasveis e iterativas
ParserParser
TransformationTransformation
PrettyPrintingPrettyPrinting
6
Pretty PrintingPretty Printing
�� ““ImprimeImprime”” o co cóódigo destino da digo destino da transformatransformaççãoã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 Concern
13
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
Diêgo Santiago, Leila Soriano e Patrícia Lustosa07/04/2008
JaTSJaTS
Java Transformation SystemJava Transformation System
Parte 2Parte 2
20
Gráfico de Clones
Exemplo – Classes Diferentes21
Exemplo – Classes Diferentes22
Exemplo – Classes Diferentes23
Exemplo – Mesma Classe24
Parâmetros de Configuração25
Quantidade de Clones26
Quantidade de Classes
591 pares de clones
� Parser 24 pares de clones� Match 80 pares de clones� Replacement 330 pares de clones� Process 75 pares de clones� Pretty Print 82 pares de clones
27
Dúvidas?28