A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Diêgo Santiago, Leila Soriano e Patrícia Lustosa"— Transcrição da apresentação:

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

2 Sistema - JaTS Ferramenta e linguagem de transformação de código Java
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 Para isso, foi desenvolvido o JaTS, Java Transformation System, que é uma ferramenta e linguagem de transformação de código Java. O JaTS permite geração e transformação de código Java e a linguagem JaTS é baseada em templates e variáveis. Os arquivos fonte e destino são escritos em Java, enquanto as transformações fonte e destino são escritas em JaTS.

3 Sistema - JaTS Código Fonte Transformação Fonte Transformação Destino
3 public class Livro { private String autor private String editora; } ModifierList:#MODIFICADOR class #NOME_CLASSE { FieldDeclarationSet:#ATRIBUTOS; } Código Fonte Transformação Fonte public class Livro { private String autor private String editora; private String isbn; } ModifierList:#MODIFICADOR class #NOME_CLASSE { FieldDeclarationSet:#ATRIBUTOS; private String isbn; } Aqui está um exemplo de uma transformação JaTS. O código fonte é casado com o template fonte. Ou seja, public é mapeado à variável #MODIFICADOR. Livro é mapeado à variável #NOME_CLASSE. E as duas declarações de atributo são mapeadas à variável #ATRIBUTOS. Numa segunda etapa, as variáveis do template destino são substituídas pelos valores a elas mapeados na etapa de casamento, gerando o código destino. identificadores Java precedidos pelo caractere ‘#’ Podem ser declaradas como sendo de um tipo específico Transformação Destino Código Destino 3

4 Arquitetura JaTS Parser Saída Saída Saída Saída Entrada Transformation
4 Parser Saída Saída Saída Saída Entrada Transformation PrettyPrinting Código Fonte Template Fonte Template Destino Código Destino Essa é a arquitetura do JaTS e do AJaTS. Como entrada para o sistema, estão o código fonte, o template fonte e o template destino. O processamento é dividido em três fases: parser, transformation e prettyprinting. Ao final dessas três fases, o código destino é gerado. 4

5 Parser Analisador Léxico e Sintático
5 Analisador Léxico e Sintático Identifica se o código Java/JaTS está bem formado Cria a Árvore Sintática de nós Java/JaTS Parser Transformation PrettyPrinting O parser funciona como um analisador léxico e sintático. Ele identifica se os códigos AspectJ e AJaTS estão bem formados e cria uma árvore sintática dos nós. 5

6 Transformation Matcher
6 Matcher Faz o casamento entre o código fonte e o template fonte Replacer Casa os valores das variáveis no template destino que dará origem ao código destino Processor Processa declarações executáveis e iterativas Parser Transformation PrettyPrinting A fase transformation é dividida em três etapas: matcher, replacer e processor. O matcher é responsável pelo casamento entre o código fonte e o template fonte, mapeando as variáveis do template a valores encontrados no código fonte. O replacer substitui as variáveis no template destino pelos valores a elas mapeados. O processor é responsável pelo processamento de declarações executáveis e interativas. 6

7 Pretty Printing “Imprime” o código destino da transformação Parser
7 Parser Transformation PrettyPrinting “Imprime” o código destino da transformação O pretty printing transforma a árvore sintática em programa texto. 7

8 Sistema - JaTS 8

9 Concerns Parse Transformation Pretty Print Syntactic Tree
9 Parse Transformation Match Process Replacement Pretty Print Syntactic Tree ThrowsException justificativa da escolha do que foi considerado concern Como foi visto na arquitetura do JaTS, o processamento é dividido em etapas. Então, naturalmente cada uma dessas etapas foi escolhida como um concern. Além desses, foram também escolhidos os concerns árvore sintática e lancamento de excecoes. Árvore sintática diz respeito aos nós que formam a árvore sintática do código Java e JaTS. Lançamento de excecoes .... Nao houve nenhum outro concern que consideramos colocar e tiramos. Comecamos naturalmente considerando os 5 primeiros concerns relacionados as etapas do processamento. Em seguida, vimos que tinha muito codigo de lancamento de excecoes que nao necessariamente tinham a ver com esses outros concerns. Finalmente, consideramos o concern árvore sintática, que é importante pois ela é montada no parser e é usada por todas as outras etapas, que manipulam essa árvore de alguma forma. outras escolhas cogitadas mas não seguidas hierarquia de concerns

10 Exemplo - Match 10

11 Exemplo - Replacement 11

12 Exemplo – Syntactic Tree
12

13 Exemplos – Código relacionado a mais de um Concern
13 Faz a aplicação de uma transformação, ou seja, realiza o casamento entre ladoEsquerdo e fonteJava e depois realiza a substituicao em ladoDireito com o ResultSet resultado do casamento entre os dois primeiros. Exemplo de código que está relacionado a mais de um concern: Match, Replacement, Process.

14 Atividade de Atribuição dos Concerns
14 Número de linhas de código marcadas: Tempo total para marcar: 24 horas Dúvidas Classes do pacote util Interface e classes abstratas Classes geradas automaticamente Main Cloning Problemas ConcernTagger número de linhas de código marcadas, tempo total levado para marcar, dúvidas e problemas surgidos durante a atribuição

15 Métricas 15

16 Conclusão 16 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 que concerns vocês acham que são crosscutting, em relação a que outro concern? as métricas foram úteis? estão corretas? por que?

17 Conclusão Foram analisados o CDC e o DOSC
17 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.

18 Referências Eaddy, M et al. Do Crosscutting Concerns Cause Defects?
18 Eaddy, M et al. Do Crosscutting Concerns Cause Defects? Eaddy, M et al. Identifying, Assigning, and Quantifying Crosscutting Concerns Site do JaTS

19 Dúvidas? 19


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

Apresentações semelhantes


Anúncios Google