51
Aluno: Edison Klafke Fillus Orientadora: Silvia S. Vergilio UFPR 2012

Apresentacao - Final

Embed Size (px)

Citation preview

Page 1: Apresentacao - Final

Aluno: Edison Klafke Fillus Orientadora: Silvia S. Vergilio

UFPR

2012

Page 2: Apresentacao - Final

1 Contexto ◦ 1.1 Comparações

2 Justificativa e Objetivos do Trabalho

3 CAAMPI ◦ 3.1 ARPIM

4 Avaliação

5 Conclusões

2

Page 3: Apresentacao - Final

Fundamentos e Trabalhos Relacionados

3

Page 4: Apresentacao - Final

OO é excelente para representar requisitos funcionais, chamados interesses base (IB).

Requisitos não funcionais introduzem interesses transversais (IT), que entrecortam várias camadas, gerando espalhamento e entrelaçamento de código.

4

Page 5: Apresentacao - Final

Encapsula os Interesses Transversais.

Classes implementam somente requisitos funcionais.

Aspectos entrecortam as classes para introdução de requisitos não funcionais.

Compostos por duas partes fundamentais:

•Identificam pontos de junção no programa.

•Chamadas, execução, acesso a atributos, etc. Ponto de Corte

•Ação que ocorrerá quando atingir o ponto de corte.

•Antes, depois e durante o ponto de corte. Adendo

5

Page 6: Apresentacao - Final

6

Processo de decomposição de forma manual exige: Esforço; Tempo; Inviável para software complexos.

Page 7: Apresentacao - Final

• Identifica IT automaticamente a partir da mineração

da documentação do Sistema.

Mineração de Aspectos Antecipada

• Ferramentas para exploração assistida do código

fonte.

Navegadores Dedicados

• Identifica IT automaticamente a partir da mineração

do código fonte de sistemas legados OO.

Mineração de Aspectos

7

Page 8: Apresentacao - Final

Análise do código fonte ou rastros de execução por sintomas de interesses transversais.

8

Page 9: Apresentacao - Final

Fan-In

Processamento de Linguagem Natural

Detecção de Clones

Detecção de Métodos Únicos

Grafos

Análise de Padrões

Análise de Conceito Formal

Análise de Ligações (Ranking Web)

Análise de Agrupamento (Clustering)

9

Page 10: Apresentacao - Final

Não é necessário conhecimento prévio do sistema.

Descoberta de grupos de métodos relacionados ao mesmo interesse.

Duas partes principais: ◦ Algoritmo de Agrupamento.

◦ Medida de Distância.

10

Page 11: Apresentacao - Final

11

Page 12: Apresentacao - Final

Análise

Análise dos grupos obtidos Descoberta de quais representam interesses

transversais

Agrupamento

Aplicação do Algoritmo de Agrupamento. Forma grupos de métodos com invocações em

comum.

Filtro

Filtra métodos e invocações que devem ser ignorados.

Computação

Extração da Árvore Sintática Abstrata. Computação da relação de invocações entre métodos.

12

Page 13: Apresentacao - Final

Espalhamento – Agrupa métodos que são freqüentemente invocados pelos mesmos módulos:

◦ Classes (kAM, GAM)

◦ Métodos (AMUCA)

◦ Classes e Métodos (PACO, HACO)

* Não tratam polimorfismo 13

Page 14: Apresentacao - Final

Entrelaçamento – Agrupa métodos que possuem contexto de invocação semelhante: ◦ Variáveis Locais

◦ Atributos acessados

◦ Classes instanciadas

◦ Parâmetros utilizados

14

Page 15: Apresentacao - Final

Nomes – Agrupa métodos que possuem nomes similares.

• Tamanho da maior sub cadeia de caracteres comum entre os nomes dos métodos. [Shepherd et al]

• d(incluiCliente, alteraCliente) = 6

• Quebra do nome do método em palavras, compara a quantidade de palavras idênticas. [Zhang et al]

• d(inclui|Cliente}, altera|Cliente) = 1

15

Page 16: Apresentacao - Final

16

Page 17: Apresentacao - Final

Índices de Avaliação e Resultados

17

Page 18: Apresentacao - Final

•Proporção de métodos no primeiro grupo onde

o IT foi descoberto. *Obsoleta

ACC - Accuracy of a clustering based aspect mining technique

•Porcentagem de métodos que precisam ser

analisados para identificar um IT. *Obsoleta

PAME - Percentage of Analyzed Methods for a partition

18

Page 19: Apresentacao - Final

Princípio de que cada interesse transversal deve ser representado por um único grupo, e, cada grupo deve representar um único interesse.

19

•Grau de dispersão de um IT em grupos.

DISP - DISPersion of crosscuting concerns

•Grau na qual cada grupo contém elementos de

interesses diferentes.

DIV - DIVersity of a partition

Page 20: Apresentacao - Final

Estudo Algoritmo Sistema DISP DIV ACC PAME

kAM k-means JHotDraw 0.4005 0.9972 - -

PACO k-medoids JHotDraw 0.4444 0.9753 - -

HACO Hierárquico JHotDraw 0.4570 1.0000 - -

kAM k-means Laffra - - 0.667 0.200

GAM AG Laffra - - 0.667 0.220

AMUCA Chameleon - - - - -

20

Page 21: Apresentacao - Final

21

Page 22: Apresentacao - Final

Abordagens focam a descoberta de um único sintoma de IT.

Sintoma de código duplicado não foi explorado.

Não possuem suporte a eliminação total ou parcial de IB.

Não fornecem suporte a uma rápida separação de grupos de potenciais IT de grupos de IB.

Descobrem adendos, porém, não identificam pontos de corte. *Exceção AMUCA, mas somente classifica.

Necessidade de mais estudos de caso e comparações.

22

Page 23: Apresentacao - Final

Criação de um processo integrado com: ◦ Filtro parcial de interesses base (com fan-in)

◦ Ordenação de grupos por potencial de serem IT. (por pontuação, medidas de ordenação)

◦ Identificação dos principais tipos de pontos de corte.

Introdução de uma medida de distância que combina os sintomas de Espalhamento, Código duplicado e Convenção de nomes.

Introdução de medidas para ordenação de grupos.

23

Page 24: Apresentacao - Final

Introdução e implementação de um Framework em Java como modelo de referência, utilizado nos experimentos.

Avaliação de diversas combinações de medidas e tipos de algoritmos de agrupamento.

Aplicação em três estudos de caso.

24

Page 25: Apresentacao - Final

Clustering based Approach for Aspect

Mining and Pointcut Identification.

25

Page 26: Apresentacao - Final

Introduz um processo integrado para mineração de aspectos e pontos de corte.

Entrada: Código Fonte do Sistema OO.

Saída: Grupos de candidatos a aspectos ordenados conforme o potencial de serem ou não um aspecto, e, respectivos candidatos a aspectos identificados.

26

Page 27: Apresentacao - Final

27

Page 28: Apresentacao - Final

DSOND (Combinada) – Agrega as características de identificação dos sintomas de espalhamento, código duplicado e convenção de nomes em uma única medida.

Combina as medidas através da definição de pesos para cada sintoma.

28

Page 29: Apresentacao - Final

DS (Espalhamento) – Agrupa métodos que são freqüentemente invocados pelos mesmos módulos, considerando classes e métodos.

Adaptação da medida proposta por Czibula et al de forma a limitar a saída no intervalo entre 0 e 1 e incluir o tratamento de polimorfismo.

Polimorfismo através de tratamento de todos os métodos polimórficos como um grupo, contabilizando todas as invocações a métodos que refinam e sobrescrevem.

29

Page 30: Apresentacao - Final

DO (Operações) – Agrupa métodos que possuem lógica de operações semelhante ou clonada.

Identifica código duplicado considerando as invocações efetuadas a métodos e classes (fan-out).

30

Page 31: Apresentacao - Final

DN (Nomes) – Agrupa métodos que possuem convenção de nomes semelhante.

Considera o nome de métodos, nome de classes, tipos de parâmetros e tipo de retorno.

Utiliza a distância de edição para contabilizar a similaridade de nomes, o que é mais eficaz: ◦ Maior sub cadeia: d(figureChanged, figureWillChange)=6/16=37,5%

◦ Quantidade de Palavras Idênticas:

d(figure|Changed, figure|Will|Change)=1/3=33,3% ◦ Distância de Edição de Levenstein: d(figureChanged, figureWillChange)=11/16 = 68,7%

31

Page 32: Apresentacao - Final

Espalhamento de Grupo (GSRank): Gera a pontuação a partir da quantidade de métodos distintos que invocaram os métodos pertencentes ao grupo.

Fan-In de Grupo (GFRank): Gera a pontuação a partir da soma do fan-in dos métodos pertencentes ao grupo.

32

m1() Fan-In: 2

m2() Fan-In: 2

GFRank = 4 GSRank = 3

Page 33: Apresentacao - Final

Interconectividade: Penaliza grupos com métodos pouco relacionados. Média das distâncias entre todos os métodos associados ao grupo.

GSIRank: Espalhamento de Grupo com redutor de interconectividade.

GFIRank: Fan-In de Grupo com redutor de interconectividade.

33

m1() Fan-In: 2

m2() Fan-In: 2

GFIRank = 2 GSIRank = 1,5

DS=0,5

Page 34: Apresentacao - Final

Association Rules based Pointcut Identification Method

34

Page 35: Apresentacao - Final

Identifica pontos de corte baseado em regras de associação obtidas a partir das transações efetuadas pelos métodos do sistema.

São extraídas regras adjuntas, com a informação da ordem de ocorrência.

SEGUIDO b c

T1 = {a,b,c,d} T2 = {a,p,b,c,q,d}

SEGUIDO FIM d

ANTECEDIDO INÍCIO a

35

ANTECEDIDO c b

Page 36: Apresentacao - Final

Antes da Execução

Após a Execução

Antes da chamada

Após a chamada

SEGUIDO b c

SEGUIDO FIM d

ANTECEDIDO INÍCIO a

36

ANTECEDIDO c b

T1 = {a,b,c,d} T2 = {a,p,b,c,q,d}

PC A Antes da Execução de [T1,T2]

T1 = {a,b,c,d} T2 = {a,p,b,c,q,d} PC D Depois da Execução de [T1,T2]

T1 = {a,b,c,d} T2 = {a,p,b,c,q,d} T3 = {q,w,b,e}

PC B Antes da Chamada C

PC C Após a Chamada B T1 = {a,b,c,d} T2 = {a,p,b,c,q,d} T3 = {q,w,c,e}

Page 37: Apresentacao - Final

37

T1 = {t,a,b,a,q} T2 = {x,a,b,a,w}

SEGUIDO b a

ANTECEDIDO b a

Durante a Execução

T1 = {t,a,b,a,q} T2 = {x,a,b,a,w} T3 = {e,a,y,a,o}

PC A Durante a Execução B

= =

Page 38: Apresentacao - Final

38

Page 39: Apresentacao - Final

Agrupamento ◦ Combinados os algoritmos de agrupamento k-

medoids, Hierárquico e Chameleon com as medidas DSOND, DS, DO, DN, DCCC e DHBZH.

◦ Efetuada a calibração de parâmetros para cada combinação entre algoritmo x medida x sistema.

Ordenação ◦ Avaliadas as medidas GSRank, GSIRank, GFRank e

GFIRank com a melhor instância obtida na fase de agrupamento.

Pontos de Corte ◦ Avaliado o método ARPIM com a melhor instância

obtida na fase de agrupamento

39

Page 40: Apresentacao - Final

40

JHotDraw v5.4b1

• Ferramenta de edição de gráficos vetoriais

HSQLDB v1.8.0.2

• Servidor de Banco de Dados

Tomcat v5.5.17

• Servidor de Aplicações WEB Java

Page 41: Apresentacao - Final

Princípio de que cada interesse transversal deve ser representado por um único grupo, e, cada grupo que possui IT deve representar um único IT.

41

•Grau de dispersão de um IT em grupos.

Dispersão

•Grau na qual grupos que possuem IT

contém elementos de IT diferentes.

Diversificação

Page 42: Apresentacao - Final

Princípio de que os n primeiros grupos com as maiores pontuações obtidas devem ser as n instâncias de IT.

42

•Grau de IT nas n primeiras posições.

Liderança

•Posição do último colocado em relação ao todo.

Economia

•Colocação dos grupos de IT em relação ao todo.

Colocação

Page 43: Apresentacao - Final

Princípio de que todo grupo de IT deve possuir ao menos um PC e que os PC identificados sejam úteis na refatoração do IT.

43

•Grau de cobertura dos grupos de IT por PC.

Cobertura

•Grau de PC que foram úteis na refatoração

do IT.

Aproveitamento

Page 44: Apresentacao - Final

44

Algoritmo Medida JHotDraw Tomcat HSQLDB

7 Hierárquico DCCC 1.1650 0.6367 0.2416

8 Hierárquico DHBZH 0.8947 0.4413 0.2719

9 Hierárquico DS 0.3428 0.1734 0.1835

10 Hierárquico DO 0.9892 0.4672 0.3095

11 Hierárquico DN 0.5833 0.5763 0.5272

12 Hierárquico DSOND 0.1071 0.1272 0.1690

13 Chameleon DCCC 1.1368 0.5304 0.4325

14 Chameleon DHBZH 1.0378 0.7860 0.3916

15 Chameleon DS 0.3585 0.2687 0.4054

16 Chameleon DO 1.1750 0.6226 0.5607

17 Chameleon DN 0.3091 0.3615 0.4305

18 Chameleon DSOND 0.2211 0.2233 0.1690

*Diferença

Page 45: Apresentacao - Final

45

Medida JHotDraw Tomcat HSQLDB

GSRank 1.0782 0.8200 2.0435

GSIRank 1.4833 0.5893 1.8195

GFRank 0.9784 1.4059 2.0520

GFIRank 1.0821 0.9494 1.9954

*Diferença

Page 46: Apresentacao - Final

46

Sistema Cobertura Aproveitamento

JHotDraw 0.7647 0.5263

Tomcat 0.4054 N/A

HSQLDB 0.4000 0.6666

Page 47: Apresentacao - Final

47

Page 48: Apresentacao - Final

CAAMPI contribui com um processo que integra agrupamento, ordenação de grupos e identificação de pontos de corte.

Agrupamento: A medida combinada DSOND foi a que obteve os melhores resultados na fase de agrupamento, alcançando uma eficácia maior que 91%.

Ordenação: As medidas propostas geram uma pontuação que permite ordenar os grupos por potencial de ser um IT, reduzindo esforço de análise e proporcionando maior eficiência.

48

Page 49: Apresentacao - Final

Pontos de Corte: O ARPIM viabilizou a identificação dos principais tipos de pontos de corte, com cobertura maior que 40% e aproveitamento maior que 52%.

CAAMPI4J demonstra a aplicabilidade prática da CAAMPI com a linguagem Java, servindo de modelo de referência para outras linguagens.

49

Page 50: Apresentacao - Final

DO não consegue comparar interfaces. ◦ Sugestão: Agrupar conforme polimorfismo.

DN agrupa métodos pelo simples fato de possuírem o mesmo nome. ◦ Sugestão: Quando método polimórfico, não agrupar

hierarquias diferentes.

DSOND exige calibração de pesos. ◦ Sugestão: Gatilhos ou Algoritmos Multiobjetivos.

50

Page 51: Apresentacao - Final

Aperfeiçoamento de filtro para eliminação de métodos de acesso fora do padrão get e set e métodos utilitários.

Processamento de linguagem natural ◦ Similaridade semântica entre métodos. ◦ Ex: persist, save, insert. ◦ Filtro e Categorização de IT descobertos.

Catálogo de padrões ◦ Identificar estruturas de implementação conhecidas. ◦ Filtro e Categorização de IT descobertos.

Critério de avaliação de eficácia prática, independente de técnica.

51