Uma abordagem para adaptação da utilização do Java Collections Framework baseada em técnicas de migração de APIs.
Por Eder Andrade
(eder.rodrigues@ccc.ufcg.edu.br)
Modificar o código fonte ou o design de uma aplicação tem se tornado uma atividade cada vez mais necesaria para manter um software atualizado, e em muitos casos, torna-se necessário substituir o tipo de coleção usado. Esse mês, conheça um pouco mais sobre uma pesquisa que propõe a automatização de algumas dessas modificações.




Durante o ciclo de vida de desenvolvimento de produtos de software, as modificações no código fonte podem afetar a qualidade em relação ao projeto inicial. Essa perda de qualidade é geralmente causada por modificações com objetivos de curto prazo, como correções de defeitos, ou por alterações realizadas sem a clara compreensão da concepção do sistema. O problema pode ser também causado pela necessidade de mudanças no design da aplicação devido à inclusão de novos requisitos.

Considerando a evolução de um software desenvolvido em Java, dentre as mudanças, pode existir uma alteração do tipo de coleção que estava sendo utilizado em algum trecho de código. Na alteração, precisa-se substituir a coleção anterior por um tipo de coleção que seja mais apropriada para o novo contexto. Entretanto, não existe uma interface ou uma implementação de uma coleção que seja melhor aplicável para todas as situações. Sendo assim, é necessário que o desenvolvedor analise e escolha a melhor opção para cada caso em questão.

Apesar da diversidade da API que o Java Collections Framework fornece, definindo um comportamento específico e diferentes implementações para as coleções existentes, é possível que no ciclo de vida de uma aplicação uma estrutura inadequada, em termos de propósito ou eficiência, seja adotada. Isso ocorre por causa da documentação da API não ser suficiente para a decisão do desenvolvedor ou pelo fato do mesmo normalmente não analisar as características de cada coleção mais profundamente antes de selecioná-las. Uma solução sería a substituição manual da coleção, paralelamente a uma análise do contexto em que está inserida, para uma melhor aplicação. Porém, essa substituição manual é cansativa e suscetível a erros, uma melhor abordagem seria realizada com uma subtituição e análise do contexto da coleção de forma automatizada.

Existem atividades relacionadas que podem ser aplicadas como suporte na automação das transformações, como por exemplo, a migração de APIs com a utilização de adaptadores.

A migração de APIs visa, em sua maioria, resolver o problema das mudanças que envolvem a evolução de frameworks e bibliotecas de software que podem implicar em alterações na API. Os clientes que utilizam a API podem ser afetados por essas mudanças tendo que realizar alterações para se adaptar a nova versão. Dessa forma, a migração de API consiste na adaptação da aplicação cliente para a nova versão da API, mantendo o comportamento da aplicação. Porém, os trabalhos em migração de API têm focado em técnicas de transformação e adaptação de evolução de APIs, e, em menor grau, na migração de APIs desenvolvidas de forma independente, se comportando de forma muito genérica, o que limita as transformações de algumas APIs com comportamentos específicos

Considerando a motivação acima, tem sido desenvolvido um trabalho, no âmbito do mestrado, onde será considerado a migração de APIs nas coleções da aplicação cliente selecionadas utilizando adaptadores. A partir da adaptação, haverá a modificação da coleção anterior para uma mais apropriada para o contexto pós-modificação com alteração pontual do código do cliente. Todo o processo de modificação será feito com o auxílio de uma ferramenta cujo processo está descrito através dos diagramas a seguir:

De forma mais específica, esta pesquisa tem como objetivos:

1. Ajudar o usuário a aplicar a coleção corretamente, com um maior nível de abstração;

2. Definir uma árvore de decisão para as coleções do Java Collections Framework;

3. Criar adaptadores para um subconjunto do Java Collections Framework;

4. Criação de uma ferramenta que auxilie a transformação da coleção.

A pesquisa em questão envolve a mestranda Mikaela Maia, com orientação dos professores Tiago e Adalberto, e a colaboração dos alunos Fábio Silva e Priscilla Barros, sendo desenvolvida no Splab. Para mais informações, acesse:http://splab.computacao.ufcg.edu.br/

Jornal PETNews - Edição: Jessika Renally - Revisão: Tiaraju Smaneoto e Lívia Sampaio
Grupo PET Computação UFCG, 2013. All rights reserved.