O documento discute a ferramenta ConcernMetrics para mapear interesses transversais em códigos orientados a objetos e estimar métricas de separação de interesses antes e depois da refatoração para orientação a aspectos. A ferramenta calcula as métricas CDO e CDC no caso de estudo do robô JSpider para analisar a viabilidade da refatoração.
2. INTRODUÇÃO
Orientado a Objetos:
• Espalhamento de Código
• Mesma implementação em várias classes
• Localização de todos os Concerns a serem alterados
• Difícil manutenibilidade
• Código entrelaçado
• Mistura de código
• Dificuldade em entender a implementação
• Alterar sem afetar outros interesses
Orientado a Aspectos:
• Modularização de interesses
• Escalabilidade
• Manutenibilidade
• Reutilização de código
• Maior produtividade
3. INTRODUÇÃO
Dúvida:
Vale a pena migrar?
Aplicação OO Aplicação OA
4. MAPEAMENTO, MÉTRICAS E IMPLEMENTAÇÃO
Ferramenta:
ConcernMapper
ConcernMetrics
Funcionalidades
Mapeamento lógico de interesses transversais
Estimativa de métricas de separação de interesses
Mapeamento do interesse logging usando o ConcernMetrics
5. MAPEAMENTO, MÉTRICAS E IMPLEMENTAÇÃO
Funcionalidades:
• Mapeamento lógico de interesses transversais
• Permite uma visão modularizada dos interesses transversais
• Métodos e Atributos de interesses transversais
• Estimativa de métricas de separação de interesses
• Calculo das métricas clássicas de separação de interesses
1. Concern Diffusion over Operations (CDO)
• MC onde ‘M’ representa os métodos e ‘c’ os interesses
concerns. Conta o número de métodos e ou adendos que
chamam os métodos em MC.
2. Concern Diffusion over Components (CDC)
• CC onde ‘C’ representa os componentes e ‘c’ os interesses
concerns. Conta o número de componentes que acessam os
componentes em CC. Componentes são classes (Sistema
OO) e classes e aspectos (Sistema OA).
6. MAPEAMENTO, MÉTRICAS E IMPLEMENTAÇÃO
Implementação:
Calculo de CDO e CDC:
• Framework ASM2 Manipulação, analise e reengenharia de bytecodes.
Sistemas OO é direto:
Chamadas estão incluídas fisicamente no bytecode.
Sistemas OA exige analise:
Identificar as chamadas que podem ser incluídas no mesmo adendo.
7. MAPEAMENTO, MÉTRICAS E IMPLEMENTAÇÃO
Implementação:
Calculo de CDO e CDC:
Algoritmo
t1.m(arg1) and t2.m(arg2), onde ti denota o alvo da chamada
e argi denota seu argumento (i = 1 ou i = 2).
As duas chamadas podem ser agrupadas em um mesmo adendo, usando
os recursos de quantificação de AspectJ, quando as seguintes condições
são simultaneamente válidas:
1. t1 e t2 são variáveis da mesma classe (ou mesma classe, no caso de métodos estáticos).
2. arg1 e arg2 representam o mesmo valor constante (seja ele, um inteiro, real, string, etc).
8. MAPEAMENTO, MÉTRICAS E IMPLEMENTAÇÃO
Implementação:
Calculo de CDO e CDC:
Chamadas a start
• Mesmo tipo (Transaction)
• Mesmos Argumentos, valor constante (1)
ㄨ Chamada a log
• Diferentes argumentos (“panic” e “finished”)
9. ESTUDO DE CASO JSPIDER
JSpider: (http://j-spider.sourceforge.net)
JSpider é um robô que permite recuperar e validar páginas Web.
Versão OO e OA (Binkley et al).
Interesse Logging
• Calculo de CDO.
Métrica CDO para o interesse logging nas versões OO e OA
10. ESTUDO DE CASO JSPIDER
JSpider:(http://j-spider.sourceforge.net)
Interesse Logging
• Calculo de CDC.
Métrica CDC para o interesse logging nas versões OO e OA
11. ESTUDO DE CASO JSPIDER
JSpider:(http://j-spider.sourceforge.net)
Análise dos Resultados
• Calculo de CDO: Diferenças de valores, por adição ou remoção de código.
• Calculo de CDC: Sem diferenças.
12. Trabalhos Relacionados
ConcernMetrics (CM) x ConcernTagger (CT):
ConcernTagger
• Extensão que também permite o mapeamento lógico de interesses
transversais e elementos sintáticos. Calculando métricas como
CDC e CDO.
Diferenças – CM e CT
• Identificação manual de interesses transversais. (Métodos e
chamadas a esses métodos)
• Calculo semi-automático
• Não realiza estimativas de novos valores de CDO e CDC para
“aspectização” do código OO.
13. Conclusão
Conclusão:
A ferramenta ConcernMetrics, utilizada para mapeamento de interesses
transversais em códigos de sistemas OO, se mostrou eficiente atendendo
a seu propósito de calcular métricas para uma possível modularização de
interesses a ser realizada.
Diante de analise dessas métricas, os mantenedores de software estudam
a viabilidade de se utilizar aspectos em seus sistemas ou não.