java transformation system parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · java...

28
Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS JaTS Java Transformation System Java Transformation System Parte 1 Parte 1

Upload: others

Post on 21-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Diêgo Santiago, Leila Soriano e Patrícia Lustosa27/03/2008

JaTSJaTS

Java Transformation SystemJava Transformation System

Parte 1Parte 1

Page 2: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 3: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 4: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 5: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 6: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 7: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Pretty PrintingPretty Printing

�� ““ImprimeImprime”” o co cóódigo destino da digo destino da transformatransformaççãoão

ParserParser

TransformationTransformation

PrettyPrintingPrettyPrinting

7

Page 8: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Sistema - JaTS8

Page 9: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Concerns

� Parse

� Transformation� Match

� Process

� Replacement

� Pretty Print

� Syntactic Tree

� ThrowsException

9

Page 10: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo - Match 10

Page 11: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo - Replacement11

Page 12: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo – Syntactic Tree12

Page 13: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplos – Código relacionado a mais de um Concern

13

Page 14: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 15: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Métricas15

Page 16: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 17: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 18: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 19: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Diêgo Santiago, Leila Soriano e Patrícia Lustosa07/04/2008

JaTSJaTS

Java Transformation SystemJava Transformation System

Parte 2Parte 2

Page 20: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

20

Gráfico de Clones

Page 21: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo – Classes Diferentes21

Page 22: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo – Classes Diferentes22

Page 23: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo – Classes Diferentes23

Page 24: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Exemplo – Mesma Classe24

Page 25: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Parâmetros de Configuração25

Page 26: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Quantidade de Clones26

Page 27: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

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

Page 28: Java Transformation System Parte 1djcs/jats/downloads/djcs-lssta-plvr-parte2.pdf · Java Transformation System Parte 1. Sistema -JaTS Ferramenta e linguagem de transforma ção de

Dúvidas?28