Apresentacao - Final

Post on 11-Apr-2017

73 views 2 download

Transcript of Apresentacao - Final

Aluno: Edison Klafke Fillus Orientadora: Silvia S. Vergilio

UFPR

2012

1 Contexto ◦ 1.1 Comparações

2 Justificativa e Objetivos do Trabalho

3 CAAMPI ◦ 3.1 ARPIM

4 Avaliação

5 Conclusões

2

Fundamentos e Trabalhos Relacionados

3

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

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

6

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

• 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

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

8

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

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

11

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

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

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

◦ Atributos acessados

◦ Classes instanciadas

◦ Parâmetros utilizados

14

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

16

Índices de Avaliação e Resultados

17

•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

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

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

21

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

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

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

Clustering based Approach for Aspect

Mining and Pointcut Identification.

25

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

27

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

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

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

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

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

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

Association Rules based Pointcut Identification Method

34

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

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}

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

= =

38

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

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

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

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

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

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

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

46

Sistema Cobertura Aproveitamento

JHotDraw 0.7647 0.5263

Tomcat 0.4054 N/A

HSQLDB 0.4000 0.6666

47

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

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

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

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