Please use this identifier to cite or link to this item: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/3717
Full metadata record
DC FieldValueLanguage
dc.creator.IDSOARES, G. A.pt_BR
dc.creator.Latteshttp://lattes.cnpq.br/6215732726947926pt_BR
dc.contributor.advisor1GHEYI, Rohit.-
dc.contributor.advisor1IDGHEYI, R.pt_BR
dc.contributor.referee1GARCIA, Alessandro Fabricio.-
dc.contributor.referee2BORBA, Paulo Henrique Monteiro.-
dc.contributor.referee3MACHADO, Patrícia Duarte de Lima.-
dc.contributor.referee4MASSONI, Tiago Lima.-
dc.description.resumoRefatoramento é 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 estas condições são satisfeitas, aplicam a transformação. No entanto, c difícil identificar o conjunto mínimo e completo 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. Estas 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 avaliar se o conjunto de condições implementadas é mínimo e completo. 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. 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 diferencial para detectar condições fortes. A técnica compara o resultado da ferramenta em teste com os resultados dc 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 três ferramentas: Eclipse 3.7, NetBeans 7 . 0 . 1 , e duas versões do JastAdd Refactoring Tools (JRRTv I e JRRTv2). Foram testados até 1 0 implementações de refatoramento em cada ferramenta. No total, nossa técnica identificou 34 faltas relacionadas a condições não implementadas no Eclipse. 5 1 faltas no NetBeans, 24 faltas no JRRTv 1, e 11 faltas no JRRTv2. Além disso, foram encontradas 17 e 7 condições muito fortes no Eclipse e JRRTv 1, respectivamente.pt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentCentro de Engenharia Elétrica e Informática - CEEIpt_BR
dc.publisher.programPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOpt_BR
dc.publisher.initialsUFCGpt_BR
dc.titleUma abordagem automatizada para testar ferramentas de refatoramento.pt_BR
dc.date.issued2014-03-
dc.description.abstractRefactoring is a transformation applied to the program to improve its internal structure without changing its external behavior. Although it brings benefits, such as making it easier to maintain the code, it also involves risks, such as introducing compilation errors or behavioral changes. To help developers in this process, there are refactoring engines. They check conditions needed to guarantee behavioral preservation, and when these conditions are satisfied, they apply the desired transformation. However, identifying and implementing the complete and minimal set of conditions for each refactoring are non-trivial tasks. In practice, tool developers may not be aware of all conditions. When some condition is not implemented, the tool may change the program's behavior. On the other hand, they may also implement conditions that not only prevent behavioral changes, but also prevent behavior-preserving transformations, reducing the applicability of these tools. In this case, we say they implemented an overly strong condition. In this work, we propose a technique for automated testing of Java refactoring engines to identify problems related to missing conditions and overly strong ones. First, we automatically generate programs to be refactored, as test inputs. To do so, we propose a Java program generator, JDOLLY, that exhaustively generates programs for a given scope of Java elements. Then, for each generated program, the desired refactoring is applied by using the engine under tests. To detect failures in the applied transformations, we use SAFEREFACTOR, a tool that we proposed for detecting behavioral changes. On the other hand, when the transformations are rejected by the engine, we propose an differential testing technique to identify overly strong conditions. It compares the results of the engine under tests with results of other engines. The final step of the technique is to classify the detected failures into distinct faults. We evaluated the effectiveness of the technique by testing up to 10 refactorings implemented by three tools: Eclipse 3.7, NetBeans 7.0.1, and two versions of JastAdd Refactoring Tools (JRRTvl and JRRTv2). Our technique identified 34 faults related to missing conditions in Eclipse, 51 ones in NetBeans, 24 ones in JRRTvl, and 1 1 ones in JRRTv2. In addition, it detected 17 and 7 overly strong conditions in Eclipse and JRRTvl, respectively.pt_BR
dc.identifier.urihttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/3717-
dc.date.accessioned2019-05-08T15:35:59Z-
dc.date.available2019-05-08-
dc.date.available2019-05-08T15:35:59Z-
dc.typeDissertaçãopt_BR
dc.rightsAcesso Abertopt_BR
dc.creatorSOARES, Gustavo Araújo.-
dc.publisherUniversidade Federal de Campina Grandept_BR
dc.languageporpt_BR
dc.title.alternativeAn automated approach to testing refactoring tools.pt_BR
dc.identifier.citationSOARES, Gustavo Araújo. Uma abordagem automatizada para testar ferramentas de refatoramento. 2014. 148f. (Tese de Doutorado em Ciência da Computação) Programa de Pós-graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande - Paraíba - Brasil, 2014. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/3717pt_BR
Appears in Collections:Doutorado em Ciência da Computação.

Files in This Item:
File Description SizeFormat 
GUSTAVO ARAÚJO SOARES - TESE PPGCC 2014..pdfGustavo Araújo Soares - Tese de Doutorado PPGCC 2014. 26.63 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.