Defesa de Tese de Doutorado de Gustavo Soares 27/02 às 09hs

postado em 6 de fev de 2014 16:17 por Franklin de Souza Ramalho
Candidato: Gustavo Araújo Soare
Título do trabalho:
Uma Abordagem Automatizada para Testar Ferramentas de Refatoramento
Orientador(es):
Rohit Gheyi

Data: 27/02/2014
Horário: 09hs
Local: Auditório do CEEI

Banca examinadora: 
Paulo Henrique Monteiro Borba (UFPE), Alessandro Garcia (PUC Rio), Tiago Massoni (UFCG), Patrícia Machado (UFCG).

Resumo:
Refatoramento é uma transformação aplicada a um programa para melhorar suas qualidades internas sem alterar seu comportamento observável. Apesar de trazer benefícios, como facilitar a manutenção, refatorar também envolver riscos, como introduzir erros de compilação ou mudanças comportamentais. Para ajudar o desenvolvedor nesse processo, surgiram as ferramentas de refatoramento. Elas checam condições necessárias para garantir a preservação do comportamento, e quando essas condições são satisfeitas, aplicam a transformação. No entanto, é difícil identificar o conjunto mínimo de condições para cada refatoramento. Se uma condição não é implementada, a ferramenta pode alterar o comportamento do programa. Por outro lado, desenvolvedores podem implementar condições que não só previnem mudanças comportamentais, mas também impedem a aplicação de transformações que preservam comportamento, diminuindo a aplicabilidade da ferramenta. Essas condições são conhecidas como condições muito fortes. Nesse trabalho, propomos uma técnica para testar ferramentas de refatoramento para Java com o objetivo de identificar problemas relacionados a condições não implementadas, ou condições muito fortes. Primeiro, geramos automaticamente um conjunto de programas para serem refatorados. Para isso, propomos um gerador de programas Java, JDOLLY, que gera exaustivamente programas para um determinado escopo de elementos. Em seguida, para cada programa gerado, aplicamos o refatoramento utilizando a ferramenta em teste. Para detectar falhas nas transformações, utilizamos o SAFEREFACTOR, uma ferramenta que propomos para detectar mudanças comportamentais. Por outro lado, quando as transformações são rejeitadas pela ferramenta, propomos uma abordagem de teste de diferencial para detectar condições fortes. Ela compara o resultado da ferramenta em teste com os resultados de outras ferramentas. Por fim, as falhas detectadas são classificadas em tipos distintos de faltas. Nós avaliamos a eficiência da nossa técnica testando 3 ferramentas: Eclipse 3.7, NetBeans 7.0.1, e duas versões do JastAdd Refactoring Tools (JRRTv1 e JRRTv2). Foram testados até 10 implementações de refatoramento em cada ferramenta. No total, nossa técnica identificou 34 faltas relacionadas a condições não implementadas no Eclipse, 51 faltas no NetBeans, 24 faltas no JRRTv1, e 11 faltas no JRRTv2. Além disso, foram encontradas 17 e 7 condições muito fortes no Eclipse e JRRTv1, respectivamente.
Comments