diêgo santiago, leila soriano e patrícia lustosa 27/03/2008 jats java transformation system parte...

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

Upload: marcelo-pinto

Post on 07-Apr-2016

218 views

Category:

Documents


2 download

TRANSCRIPT

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

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

JaTSJaTS

Java Transformation Java Transformation SystemSystem

Parte 1Parte 1

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

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

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

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 Fonte Transformação Fonte

Transformação Destino

Código Destino

3

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

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

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

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/JaTSParserParser

TransformationTransformation

PrettyPrintingPrettyPrinting

5

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

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 variáveis Casa os valores das variáveis

no template destino que dará no template destino que dará origem ao código destinoorigem ao código destino

ProcessorProcessor Processa declarações Processa declarações

executáveis e iterativasexecutáveis e iterativas

ParserParser

TransformationTransformation

PrettyPrintingPrettyPrinting

6

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

Pretty PrintingPretty Printing

““Imprime” o código destino Imprime” o código destino da transformaçãoda transformação

ParserParser

TransformationTransformation

PrettyPrintingPrettyPrinting

7

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

Sistema - JaTS8

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

Concerns Parse Transformation

Match Process Replacement

Pretty Print Syntactic Tree ThrowsException

9

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

Exemplo - Match 10

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

Exemplo - Replacement11

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

Exemplo – Syntactic Tree12

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

Exemplos – Código relacionado a mais de um

Concern13

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

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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1

Métricas15

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

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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1

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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1

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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1

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

JaTSJaTS

Java Transformation Java Transformation SystemSystem

Parte 2Parte 2

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

20

Gráfico de Clones

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

Exemplo – Classes Diferentes

21

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

Exemplo – Classes Diferentes

22

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

Exemplo – Classes Diferentes

23

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

Exemplo – Mesma Classe24

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

Parâmetros de Configuração25

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

Quantidade de Clones26

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

Quantidade de Classes591 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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1

Dúvidas?28