jueves, 22 de septiembre de 2011

Aspect Recommendation for Evolving Software

Cross-cutting concerns are unavoidable and create difficulties in the development and maintenance of large-scale systems. In this paper, we present a novel approach that identifies certain groups of code units that potentially share some cross-cutting concerns and recommends them for creating and updating aspects. Those code units, called concern peers, are detected based on their similar interactions (similar calling relations in similar contexts, either internally or externally). The recommendation is applicable to both the aspectization of non-aspect-oriented programs (i.e. for aspect creation), and the evolution of aspect-oriented programs (i.e. for aspect updating). The empirical evaluation on several real-world software systems shows that our approach is scalable and provides useful recommendations.



By Tung Thanh Nguyen, Hung Viet Nguyen, Hoan Anh Nguyen, Tien N. Nguyen.



Resumo do Artigo: Aspect Recommendation for Evolving Software – Daniel San Martín Santibañez

O artigo apresenta uma inovadora proposta para identificar unidades de código que provavelmente compartilham interesses transversais e suas recomendações para a criação ou atualizacão de aspectos. Essas unidades de código são chamadas concern peers e são detectadas por meio das interações similares que possam ter. Essas interações podem ser internas (dentro do corpo do método) ou externas (chamadas para métodos de outras classes) que estejam relacionadas em contextos similares.
A proposta está sustentada em definições matematicas baseadas na teoría de conjuntos.
A solução algoritmica para a detecção dos interesses transversais é a siguinte (ver o código nos slides):

  1. Busca dos candidatos.
    1. XScan procura e adiciona todos os pares de métodos com porções de código similares na lista de candidatos C (MethodsHaveSimilarCode).
    2. XScan adiciona os métodos que tenham o nomes similares na lista de candidatos C (MethodsHaveSimilarName).
    3. XScan adiciona métodos que sobrecarregam ou implementam um mesmo método pai na lista de candidatos C (RelativeMethods).
  2. Busca de peers.
    1. Os pares de métodos candidatos na lista C estão ordenados descendentemente por o valor de suas interações similares (função sim).
    2. Se dois métodos candidatos tem , XScan elimina o par de métodos da lista C e é adicionado na lista L.
    3. Com os peer pairs da lista L, procura novos candidatos de métodos com nomes similares (MethodsHaveSimilarName) e que estejam dentro das classes dos métodos selecionados.
    4. Repetir até que não sejam identificados mais peers.

  1. Detectar e classificar por rango os peer groups.
    1. Todos os peer pairs da lista L são usados para formar um grafo onde um nodo representa um método peer, e cada aresta representa um peer pair em L.
    2. XScan percorre o grafo e reporta a cada conjunto de nodos conectados como um grupo de peers. O ranking é feito por a maior quantidade de interações externas que possa ter esse grupo de peers.

A solução algoritmica para a recomendação de uma criação ou atualização de um aspecto é a siguinte (ver o código nas slides).
  1. Criação de aspectos em programas OO.
    1. Uso de Eclipse para obter as interações internas e externas.
    2. Eliminar as bibliotecas padrões de Java e os métodos get, set e util para distinguir interesses transversais.
    3. Utilizar o algoritmo para ranking de peers.

  1. Criação ou atualização de aspectos em programas AO.
    1. Detectar as mudanças nos métodos dos programas P1 com P2.
    2. Detectar novos aspectos eliminados ou adicionados A1 com A2.
    3. Detectar peer groups em P2.
    4. Para cada shadow group S nos aspectos de P2 ie. em A2, fazer um matching com os peer groups detectados. Se S corresponde com um novo aspecto adicionado, todos os métodos que fazem matching são recomendados. De outra manera, só os métodos modificado ou adicionados são tomados em conta.
    5. Todos os métodos que não fizeram matching, XScan recomenda a criação de novos aspectos.

A avaliação empírica demostra um alto grau de escalabilidade e a exatidão da mineração de aspectos. A exatidão foi definida em termos de precição e cobertura onde os resultados obtidos comparados com os resultados de outra ferramenta de mineração de aspectos são, na maioria dos casos, melhores.

No hay comentarios:

Publicar un comentario