Diêgo Santiago, Leila Soriano e Patrícia Lustosa

Post on 06-Jan-2016

18 views 1 download

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 Presentation

Transcript of Diêgo Santiago, Leila Soriano e Patrícia Lustosa

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