Refinamento de Dados e Código: um estudo formal e prático baseado em adaptadores entre coleções Java.
Por Lucas Albuquerque
(lucas.ufcg@gmail.com)
Conheça o projeto que está sendo desenvolvido na UFCG, pela Unidade Acadêmica de Sistemas e Computação (também denominada Departamento de Sistemas da Computação, DSC), que busca facilitar o dia-a-dia dos desenvolvedores de software. Trata-se de uma investigação e possível confecção de um framework que tem por objetivo facilitar a refatoração de programas para a substituição de estruturas de dados, uma verdadeira “mão na roda” para os programadores.

O desenvolvimento de software pode ser um trabalho difícil e árduo. O processo de construção de um software envolve diversas etapas, como: análise de requisitos, definição de quais tecnologias serão usadas, planejamento, codificação, testes e, claro, manutenção. Durante o desenvolvimento do software, essas etapas são repetidas diversas vezes. Lembrando que o cliente, a qualquer momento, pode querer modificar, adicionar e/ou retirar funcionalidades. Desse modo, o software mesmo depois de pronto deve poder ser modificado.

Quando construímos um software, novas aplicações, funcionalidades e estruturas de dados usadas podem ser adicionadas e/ou modificadas, seja na fase de codificação ou até mesmo quando o software já está sendo usado pelo cliente. Em computação, existe um termo que qualifica bem esse aspecto de mutabilidade de um software, “Um sistema que não precisa de mudanças é um sistema que ninguém usa.”. Porém, essas mudanças não são feitas facilmente, pois provocam, normalmente, mudanças no código e isso pode deixá-lo mais complicado de entender, menos flexível e, até mesmo, com uma arquitetura mal elaborada.

O refatoramento trata exatamente desse aspecto. A sua função é deixar o código o mais simples possível, sem que haja perdas de qualidade e, até mesmo, sem que o software deixe de funcionar. O ponto crucial é na verdade: quando se deve fazer o refatoramento? Existe alguma ferramenta que possa ajudar nesse processo?

Pensando nisso, o Departamento de Sistemas de Computação (DSC) vem desenvolvendo uma pesquisa nessa área, que tem por objetivo facilitar a refatoração de programas para a substituição de estruturas de dados. O projeto é importante, dado que, atualmente, essa atividade é feita de forma manual, já que não há uma ferramenta que sirva de apoio para tal fim. Vale salientar, também, que tais mudanças no software podem ser muito trabalhosas, o que ressalta ainda mais a necessidade de uma ferramenta de apoio.

Em uma conversa com um dos membros do projeto, o graduando em Ciência da Computação Rigel Bezerra de Melo, ele nos explicou como está sendo desenvolvido o projeto: “Serão tentadas duas abordagens.

  1. A primeira, por meio de adaptadores. Um adaptador é um objeto que possui a interface de uma classe, mas internamente funciona como outra classe. A analogia é a de um adaptador de plug de tomadas. Nesse caso, ao invés de trocar a estrutura de dados e, possivelmente, as chamadas de métodos da estrutura de dados antiga, apenas troca-se-ia a estrutura de dados por um adaptador, que teria os mesmos métodos da estrutura anterior, não precisando assim de outras modificações.
  2. Na segunda abordagem, pretendemos fazer algo como um plugin para o Eclipse, que faça o refatoramento automaticamente, como os que o eclipse já faz. Para isso, poderíamos fazer um plugin que fizesse isso “na mão”, mudando todas as ocorrências, ou podemos fazer um que use os adaptores que desenvolveremos na abordagem anterior, pelas vantagens já mencionadas.”

O projeto está sendo desenvolvido no Laboratório de Praticas de Software (SPLab), e conta com a participação de um bolsista PIBIC (Rigel Bezerra de Melo), de uma aluna de mestrado (Mikaela Maia), orientados pelo Prof. Dr. Adalberto Cajueiro, com a colaboração do Prof. Dr. Tiago Massoni.

Caso tenha se interessado pelo projeto e queira obter mais informações, acesse a página do Prof. Dr. Adalberto Cajueiro.

Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Iago Araújo e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved.