Dissertação

{en_GB=An Interactive Tool for Computer - Aided Refactorization of Java Source Code } {} EVALUATED

{pt=Refactorizações de código são aterações à estrutura do código se alterar o comportamento do programa. Elas são aplicadas com o objectivo de tornar o código mais fácil de compreender e modificar. Muitos IDEs (Integrated Development Environments) já fazem refactorizações. Alguns permitem até que o utilizador programe as suas próprias refactorizações, como é o caso do Eclipse. Contudo a framework the o Eclipse disponibiliza para implementar as refactorizações, é díficil de aprender e não permite um desenvolvimento interactivo. Para facilitar a tarefa de criar uma refactorização existem ferramentas de scripting que, ou são autónomas (Recoder e Inject/J), ou estão integradas num IDE (R2, R3, JTransformer e JunGL). As ferramentas actuais usam DSLs (Domain Specific Languages), a linguagem do código alvo da transformação (neste caso Java), ou liguaguens de uso geral como Prolog. As ferramentas que usam liguagens com o paradigma imperativo não permitem definir as pesquisas de formas tão expressivas como as linguagens que usam o paradigma declarativo. O nosso trabalho é uma ferramenta de scripting de transformações, que combina o paradigma declarativo para as pesquisas e o paradigma imperativo para as transformações. Em vez de uma DSL usamos JavaScript como linguagem de scripting. Avaliou-se a ferramenta, criando alguns scripts para transformações académicas e criando duas transformações ao código do projecto FenixEdu., en=Code refactorings are source code changes that do not change the behavior of a program, only its structure. They are applied to make the code easier to modify and understand. Many IDEs already have prebuilt refactorings. Some of them enable the user to program his own refactorings like the Eclipse LTK framework. However this framework has a steep learning curve and does not allow for interactive development. To ease the task of creating refactorings there are scripting tools that either are standalone (Recoder, Inject/J) or use the facilities of an IDE but hide their complex interface (JTransformer, JunGL). The current tools use DSLs (Domain Specific Languages), the language of the target program (in this case Java) or other general purpose languages like Prolog. Usually the tools that use imperative languages lack a more expressive querying, when the other more declarative languages such as Prolog or DSL's are less known languages with paradigms that are more expressive. We improve on that work by providing a transformation tool that combines both the expressiveness of logic for searching with imperative paradigm for transforming the AST. Instead of using a DSL we use JavaScript as scripting language. We evaluated our work by comparing other tools, by creating some academic transformations and by creating two transformations that were applied to the FenixEdu project's source code.}
{pt=Refactorização, Interactiva, JTransformer, Java, JavaScript, en=Refactoring, Interactive, JTransformer, Java, JavaScript}

Junho 7, 2017, 16:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Luís Jorge Brás Monteiro Guerra e Silva

Departamento de Engenharia Informática (DEI)

Professor Auxiliar

ORIENTADOR

Artur David Félix Ventura

DSI / IST

Especialista