1 / 50

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

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.

maisie
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. Sistema - JaTS 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; } Transformação Destino Código Destino

  4. Arquitetura JaTS 4 Parser Saída Saída Saída Saída Entrada Transformation PrettyPrinting Código FonteTemplate FonteTemplate Destino Código Destino

  5. Parser 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 5 Parser Transformation PrettyPrinting

  6. Transformation 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 6 Parser Transformation PrettyPrinting

  7. Pretty Printing “Imprime” o código destino da transformação 7 Parser Transformation PrettyPrinting

  8. Sistema - JaTS 8

  9. Parse Transformation Match Process Replacement Pretty Print Syntactic Tree ThrowsException Concerns 9

  10. Exemplo - Match 10

  11. Exemplo - Replacement 11

  12. Exemplo – Syntactic Tree 12

  13. Exemplos – Código relacionado a mais de um Concern 13

  14. Atividade de Atribuição dos Concerns 14 • 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

  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

  17. Conclusão 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 18 • 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/

  19. JaTS Java Transformation System Parte 2 07/04/2008 Diêgo Santiago, Leila Soriano e Patrícia Lustosa

  20. Gráfico de Clones 20

  21. Exemplo – Classes Diferentes 21

  22. Exemplo – Classes Diferentes 22

  23. Exemplo – Classes Diferentes 23

  24. Exemplo – Mesma Classe 24

  25. Parâmetros de Configuração 25

  26. Quantidade de Clones 26

  27. Quantidade de Classes 27 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

  28. JaTS Java Transformation System Parte 3 19/05/2008 Diêgo Santiago, Leila Soriano e Patrícia Lustosa

  29. ThrowsAspect 29 • 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.

  30. MatchAspect 31 • 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. ProcessAspect 33 • 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

  32. AcceptAspect 35 • 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.

  33. Refactorings 37 • 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

  34. 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

  35. 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

  36. Refactorings 40 • 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.

  37. Refactorings 41 • 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

  38. Gráfico de Clones 42

  39. Exemplo – Classes Diferentes 43

  40. Parâmetros de Configuração 44

  41. Quantidade de Clones 45 419 pares de clones

  42. Diêgo Santiago, Leila Soriano e Patrícia Lustosa JaTS Java Transformation System Parte 4 09/06/2008

  43. Design Rules 47 dr ExecucaoProcessNodes{ class SimpleNode{ Object process(Object o); } aspect{ pointcut process(SimpleNode node, Object data): execution(Object SimpleNode+.process(Object)) } }

  44. Design Rules 48 dr ExecucaoVisit { class JaTSVisitor{ Object visit(JaTSNode node, Object o); } aspect{ pointcut visit(JaTSNode node, Object o): execution(Object JaTSVisitor+.visit(JaTSNode+, Object)) } }

  45. Design Rules 49 dr ExecucaoMatchNodes{ class JaTSNode{ void match(JaTSNode node, ResultSet result); } aspect{ pointcut nodesMatch(JaTSNode nodeParameter, ResultSet rs, JaTSNode node): execution(void JaTSNode+.match(JaTSNode, ResultSet)) } }

  46. Dúvidas? 50

More Related