diêgo santiago, leila soriano e patrícia lustosa
DESCRIPTION
JaTS Java Transformation System Parte 1. 27/03/2008. Diêgo Santiago, Leila Soriano e Patrícia Lustosa. 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/3.jpg)
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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/5.jpg)
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
![Page 6: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/6.jpg)
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
![Page 7: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/8.jpg)
Sistema - JaTS8
![Page 9: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/9.jpg)
Concerns
Parse Transformation
Match Process Replacement
Pretty Print Syntactic Tree ThrowsException
9
![Page 10: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/10.jpg)
Exemplo - Match 10
![Page 11: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/11.jpg)
Exemplo - Replacement11
![Page 12: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/12.jpg)
Exemplo – Syntactic Tree12
![Page 13: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/13.jpg)
Exemplos – Código relacionado a mais de um
Concern13
![Page 14: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/15.jpg)
Métricas15
![Page 16: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/20.jpg)
20
Gráfico de Clones
![Page 21: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/21.jpg)
Exemplo – Classes Diferentes
21
![Page 22: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/22.jpg)
Exemplo – Classes Diferentes
22
![Page 23: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/23.jpg)
Exemplo – Classes Diferentes
23
![Page 24: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/24.jpg)
Exemplo – Mesma Classe24
![Page 25: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/25.jpg)
Parâmetros de Configuração25
![Page 26: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/26.jpg)
Quantidade de Clones26
![Page 27: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/27.jpg)
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: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/28.jpg)
Diêgo Santiago, Leila Soriano e Patrícia Lustosa19/05/2008
JaTSJaTS
Java Transformation Java Transformation SystemSystem
Parte 3Parte 3
![Page 29: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/29.jpg)
ThrowsAspect
Aspecto criado para modularizar o lançamento de exceções.
Foram criados pointcuts e utilizados advices para verificação da nulidade dos parâmetros passados nos métodos.
29
![Page 30: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/30.jpg)
![Page 31: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/31.jpg)
MatchAspect
Aspecto criado para modularizar o crosscutting concern Match.
Em cada nó da árvore sintática existe um método match.
O MatchAspect reúne todos os métodos match dos nós.
31
![Page 32: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/32.jpg)
![Page 33: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/33.jpg)
ProcessAspect
Aspecto criado para modularizar o crosscutting concern Process.
Em cada nó da árvore sintática existe um método process.
O ProcessAspect reúne todos os métodos process dos nós.
Possui um pointcut process() e o advice around, que verifica a condição de um nó ser executavel
33
![Page 34: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/34.jpg)
![Page 35: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/35.jpg)
AcceptAspect
Aspecto que modulariza as chamadas ao método accept.
Cada nó possui um método accept. O Accept é usado pelos visitors, fazendo
assim parte desse concern.
35
![Page 36: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/36.jpg)
![Page 37: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/37.jpg)
Refactorings
Law 3 Add before-execution Usando esta lei podemos mover o inicio do
corpo do método para a um advice que roda antes da execução do método.
ThrowsAspect 96 before 554 advises
37
![Page 38: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/38.jpg)
Refactorings
Law 7 Add after-execution returning successfully Usando esta lei podemos mover o final do
corpo do método para a um advice que roda depois da execução do método, executado com sucesso.
ThrowsAspect 1 after returning 11 advises
38
![Page 39: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/39.jpg)
Refactorings
Law 11 Add around-execution Esta lei é usada quando a execução do núcleo
lógico método é condicional, ou seja, o núcleo lógico do método pode ou não ser executado.
ProcessAspect 1 around 50 advises
39
![Page 40: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/40.jpg)
Refactorings
Law 18 Soften exception Esta lei é responsável por tornar uma exceção
levantada por um join point numa exceção soft. ThrowsAspect
21 declare soft
Law 20 Remove exception from throws clause Esta lei remove a exceção da cláusula throws do
método que não a levanta mais. Law 21 Move exception handling to aspect
Esta lei move o tratamento de uma exceção para um aspecto.
40
![Page 41: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/41.jpg)
Refactorings
Law 23 Move method to aspect Esta lei tem o propósito de mover a
implementação de um método num aspecto usando uma inter-type declaration.
ProcessAspect 13 method inter-type declaration
MatchAspect 16 method inter-type declaration
AcceptAspect 13 method inter-type declaration
41
![Page 42: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/42.jpg)
42
Gráfico de Clones
![Page 43: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/43.jpg)
Exemplo – Classes Diferentes
43
![Page 44: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/44.jpg)
Parâmetros de Configuração44
![Page 45: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/45.jpg)
Quantidade de Clones45
419 pares de clones
![Page 46: Diêgo Santiago, Leila Soriano e Patrícia Lustosa](https://reader036.vdocuments.com.br/reader036/viewer/2022062802/56814641550346895db34a91/html5/thumbnails/46.jpg)
Dúvidas?46