Defesa de Dissertação de Mestrado de Gustavo Wagner 13/03, às 14hs

postado em 20 de fev de 2014 08:44 por Franklin de Souza Ramalho
Candidato: Gustavo Wagner
Título do trabalho: Uma Abordagem para Testar Implementações de Refatoramentos Estruturais e Comportamentais de Programas C
Orientador: Rohit Gheyi

Data: 13/03/2013
Horário: 14h00
Local: auditório do CEEI

Banca examinadora: Rohit Gheyi (orientador), Márcio Ribeiro (Universidade Federal de Alagoas) e Tiago Lima Massoni (UFCG)

Resumo: Refatorar um programa é o ato de mudar sua estrutura visando melhorar algum aspecto arquitetural, sem que se mude seu comportamento observável. Desenvolvedores utilizam ferramentas como Eclipse e NetBeans para auxiliá-los no refatoramento de seus programas. Essas ferramentas implementam um conjunto de condições para garantir que as transformações realizadas não mudem o comportamento observável do programa. Porém, não é trivial identificar todas as condições necessárias para que um refatoramento seja correto devido a complexidade da semântica das linguagens. Na prática, desenvolvedores costumam utilizar coleções de testes para avaliar a corretude de suas implementações. Entretanto, não existem evidências de se ter processo sistemático na definição dessa coleção. Neste trabalho, propomos uma técnica para testar implementações de refatoramentos de programas C. Ela consiste de cinco fases. Primeiramente, geramos automaticamente diversos programas C para serem refatorados a partir do CDolly, que foi proposto baseado em uma especificação em Alloy. Depois, geramos automaticamente uma coleção de testes de unidade dos programas via o CATester. Em seguida, aplicamos o refatoramento pelo CARefactor nos programas gerados utilizando a ferramenta a ser testada. Após isso, executamos a coleção de testes nos programas refatorados e, por fim, classificamos os erros de compilação e mudanças comportamentais identificados em bugs. Avaliamos a nossa técnica na implementação de oito refatoramentos do Eclipse CDT. Estes refatoramentos não só modificam a estrutura do programa, como também o corpo das funções, como o refatoramento Extract Function. Encontramos 41 bugs, que introduzem erros de compilação no programa resultante, e 6 bugs relacionados a mudanças comportamentais. Replicamos manualmente os bugs encontrados em implementações de refatoramentos do NetBeans e XRefactory e identificamos mais de 15 bugs nessas ferramentas.
Comments