Deriving refactorings for aspect J

AUTOR(ES)
DATA DE PUBLICAÇÃO

2005

RESUMO

Refactoring tem sido muito Ãtil na reestruturaÃÃo de programas orientados a objetos. Esta tÃcnica pode proporcionar benefÃcios similares aos programas orientados a aspectos. AlÃm disso, refactoring pode ser uma tÃcnica interessante para introduzir aspectos em uma aplicaÃÃo existente, orientada a objetos. No intuito de explorar os benefÃcios proporcionados pelos refactorings, desenvolvedores de aplicaÃÃes orientadas a aspectos estÃo identificando transformaÃÃes comuns para tais aplicaÃÃes, em sua maioria, para a linguagem AspectJ, uma linguagem orientada a aspectos de propÃsito geral que estende Java. No entanto, estas transformaÃÃes nÃo possuem suporte para garantir que preservam o comportamento externo da aplicaÃÃo. Tal propriedade garante que as transformaÃÃes sÃo de fato refactorings. Este trabalho foca neste problema e introduz leis de programaÃÃo para AspectJ que podem ser usadas para derivar transformaÃÃes que preservam comportamento (refactorings) para um subconjunto desta linguagem. Leis de programaÃÃo definem equivalÃncia entre dois programas, desde que algumas restriÃÃes sejam respeitadas. Nosso conjunto de leis nÃo somente define como introduzir ou remover construÃÃes de AspectJ, como tambÃm como reestruturar aplicaÃÃes nesta linguagem. Aplicando e compondo as leis, pode-se mostrar que uma transformaÃÃo qualquer, envolvendo AspectJ, Âe de fato um refactoring. Leis sÃo apropriadas para isso pois sÃo bem mais simples do que a maioria dos refactorings. Comparando com refactorings, as leis envolvem transformaÃÃes localizadas e somente uma construÃÃo da linguagem por vez, de seram bi-direcionais. As leis formam uma base para a definiÃÃo de refactorings com uma certa confianÃa de que estes preservam comportamento. Avaliamos-nos as leis de duas formas. A primeira utiliza as leis para derivar refactorings jà existentes na literatura. Isto ajuda a definir com mais precisÃo as precondiÃÃes associadas a estes refactorings, alem de verificar se eles preservam comportamento. A segunda forma de avaliaÃÃo utiliza as leis e alguns refactorings derivados destas para reestruturar duas aplicaÃÃes Java. A implementaÃÃo de interesses transversais nestas aplicaÃÃes reestruturada utilizando construÃÃes de AspectJ para tornar tal comportamento modular. Isto ilustra que as leis podem tambÃm ser Ãteis para transformar aplicaÃÃes orientadas a objetos em aplicaÃÃes orientadas a aspectos

ASSUNTO(S)

ciencia da computacao refactoring refactoring separation of concerns aspect-oriented software development programming laws desenvolvimento de software orientado a aspectos separaÃÃo de interesses transversais leis de programaÃÃo

Documentos Relacionados