View
73
Download
2
Embed Size (px)
Citation preview
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