Uma linguagem específica de domínio para consulta em código orientado a aspectos
Abstract
Assegurar a qualidade de código é um ponto crucial durante o desenvolvimento de software.
Frequentemente, os desenvolvedores recorrem às ferramentas de análise estática para
auxiliá-los tanto na compreensão de código, quanto na identificação de defeitos ou de oportunidades
de refatoração durante o ciclo de desenvolvimento de aplicações. Um dos pontos
críticos na definição de tais ferramentas está na sua capacidade de obter informações a respeito
de código. As ferramentas de análise estática dependem, em geral, de uma representação intermediária
de um programa para identificar situações que atendam às condições necessárias
descritas em seus algoritmos. Esse panorama se amplia com o uso de técnicas de modularização
de interesses transversais, tais como a programação orientada a aspectos (POA), na qual um
código pode ser afetado de forma sistêmica, por meio de combinações estáticas e dinâmicas.
O principal objetivo desta dissertação é a especificação e implementação de AQL, uma DSL
(linguagem específica de domínio) para a realização de busca em código orientado a aspectos.
A AQL é uma linguagem declarativa, baseada em linguagem de busca em objetos (OQL) e
que permite consultar elementos, relações, derivações e métricas de um programa orientado a
aspectos (OA), a fim de apoiar a construção de ferramentas de análise estática e de pesquisa
em código. O projeto de implementação da linguagem foi realizado em duas etapas. Primeiro,
foi criado um framework (AOPJungle) para a extração de dados de programas OA. O AOPJungle
além de extrair dados de programas OA, realiza a computação de métricas, inferências e
ligações entre os elementos de um programa. Na segunda etapa, um compilador de referência
para AQL foi construído. A abordagem adotada foi a transformação fonte a fonte, sendo uma
consulta AQL transformada em uma consulta HQL (Hibernate Query Language) antes de sua
execução. A fim de avaliar a implementação proposta, uma ferramenta de análise estática para
identificação de oportunidades de refatoração em programas AO foi elaborada, usando a AQL
para a busca de dados sobre esses programas.