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 27/03/2008 JaTS Java Transformation System Parte 1.

Apresentações semelhantes


Apresentação em tema: "Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1."— Transcrição da apresentação:

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

2 Sistema - JaTS  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 2

3 JaTS Sistema - JaTS 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

4 Arquitetura JaTS Saída Parser Transformation PrettyPrinting Saída Código Fonte Template Fonte Template Destino Código Destino Saída Entrada 4

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

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

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

8 Sistema - JaTS 8

9 Concerns  Parse  Transformation  Match  Process  Replacement  Pretty Print  Syntactic Tree  ThrowsException 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  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

15 Métricas 15

16 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

17 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

18 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

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

20 20 Gráfico de Clones

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 591 pares de clones  Parser 24 pares de clones  Match 80 pares de clones  Replacement330 pares de clones  Process 75 pares de clones  Pretty Print 82 pares de clones 27

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

29 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

30

31 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

32

33 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

34

35 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

36

37 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

38 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

39 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

40 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

41 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

42 42 Gráfico de Clones

43 Exemplo – Classes Diferentes 43

44 Par â metros de Configuração 44

45 Quantidade de Clones 45 419 pares de clones

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

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

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

49 Design Rules 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)) } 49

50 Dúvidas? 50


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

Apresentações semelhantes


Anúncios Google