Uma abordagem para aumentar a segurança em refatoramentos de programas.
Autor(a) principal: | |
---|---|
Data de Publicação: | 2010 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFCG |
Texto Completo: | http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041 |
Resumo: | Refatoramentos são transformações de programas que preservam o comportamento observável e melhoram a qualidade do código. Cada transformação pode possuir um conjunto de pre-condições que devem ser satisfeitas para que o comportamento seja preservado. Muitas ferramentas como Eclipse e NetBeans automatizam vários desses refatoramentos. Entretanto, essas ferramentas podem realizar transformações errôneas, gerando programas que não compilam (mais simples de serem detectadas) ou com comportamentos diferentes dos originais (mais difíceis de serem detectadas). Isso ocorre porque cada ferramenta implementa os refatoramentos com base em um conhecimento informal do conjunto de precondições que precisam ser checadas. Não existe nenhuma teoria formal estabelecendo todas as pre-condições para cada refatoramento em linguagens como Java. Nesse trabalho, nós propomos uma abordagem e sua implementação (SAFEREFACTOR) para aumentar a segurança em refatoramentos de programas seqüenciais em Java. Nossa técnica pode detectar mudanças comportamentais na aplicação de quaisquer refatoramentos em programas seqüenciais. Avaliamos nossa técnica de três formas. Primeiramente aplicamos nossa técnica em um conjunto de 16 transformações aplicadas por ferramentas de refatoramento, já sabia-se, que elas não preservavam o comportamento. Nossa técnica detectou todas as mudanças comportamentais. Além disso, avaliamos em refatoramentos aplicados a sete sistemas reais em Java (3-100 KLOC). Eles foram realizados por desenvolvedores que asseguraram a corretude dos refatoramentos por meio de ferramentas e testes de unidades. Nossa técnica detectou uma mudança comportamental em um refatoramento aplicado ao JHotDraw (23 KLOC). Por fim, propomos o JDolly, um gerador de programas Java, com o objetivo de gerar entradas para testar implementações de refatoramentos. Utilizamos o SAFEREFACTOR e o JDolly para testar automaticamente 11 refatoramentos implementados pelo Eclipse. O JDolly gerou automaticamente um número de entradas que foram refatoradas utilizando cada implementação. O SAFEREFACTOR identificou 50 bugs (35 mudanças comportamentais e 15 erros de compilação) no Eclipse 3.4.2. Manualmente, identificamos que alguns destes bugs ocorrem também no NetBeans 6.7. |
id |
UFCG_37541f9bd419598d961d4e2bf71f81ed |
---|---|
oai_identifier_str |
oai:localhost:riufcg/12041 |
network_acronym_str |
UFCG |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository_id_str |
4851 |
spelling |
Uma abordagem para aumentar a segurança em refatoramentos de programas.An approach to increase security in program refactoring.Testes de ProgramasManutenção de ProgramasRefatoramentoProgram TestsMaintenance of ProgramsRefactoringCiência da ComputaçãoRefatoramentos são transformações de programas que preservam o comportamento observável e melhoram a qualidade do código. Cada transformação pode possuir um conjunto de pre-condições que devem ser satisfeitas para que o comportamento seja preservado. Muitas ferramentas como Eclipse e NetBeans automatizam vários desses refatoramentos. Entretanto, essas ferramentas podem realizar transformações errôneas, gerando programas que não compilam (mais simples de serem detectadas) ou com comportamentos diferentes dos originais (mais difíceis de serem detectadas). Isso ocorre porque cada ferramenta implementa os refatoramentos com base em um conhecimento informal do conjunto de precondições que precisam ser checadas. Não existe nenhuma teoria formal estabelecendo todas as pre-condições para cada refatoramento em linguagens como Java. Nesse trabalho, nós propomos uma abordagem e sua implementação (SAFEREFACTOR) para aumentar a segurança em refatoramentos de programas seqüenciais em Java. Nossa técnica pode detectar mudanças comportamentais na aplicação de quaisquer refatoramentos em programas seqüenciais. Avaliamos nossa técnica de três formas. Primeiramente aplicamos nossa técnica em um conjunto de 16 transformações aplicadas por ferramentas de refatoramento, já sabia-se, que elas não preservavam o comportamento. Nossa técnica detectou todas as mudanças comportamentais. Além disso, avaliamos em refatoramentos aplicados a sete sistemas reais em Java (3-100 KLOC). Eles foram realizados por desenvolvedores que asseguraram a corretude dos refatoramentos por meio de ferramentas e testes de unidades. Nossa técnica detectou uma mudança comportamental em um refatoramento aplicado ao JHotDraw (23 KLOC). Por fim, propomos o JDolly, um gerador de programas Java, com o objetivo de gerar entradas para testar implementações de refatoramentos. Utilizamos o SAFEREFACTOR e o JDolly para testar automaticamente 11 refatoramentos implementados pelo Eclipse. O JDolly gerou automaticamente um número de entradas que foram refatoradas utilizando cada implementação. O SAFEREFACTOR identificou 50 bugs (35 mudanças comportamentais e 15 erros de compilação) no Eclipse 3.4.2. Manualmente, identificamos que alguns destes bugs ocorrem também no NetBeans 6.7.Program Refactorings are behavior-preserving transformations. Each transformation can have a number of preconditions that must be satisfied to assure the behavior reservation. Many IDEs, such as Eclipse and NetBeans, automate a number of refactorings. However, these tools may perform incorrect transformations that introduce compilation errors (simple to be detected) or behavioral changes (very often go undetected). This happens because each tool implements refactorings based on an informal set of refactoring preconditions. In fact, there is no formal theory that establishes all preconditions for each refactoring in Java. In this work, we propose an approach and its implementation (SAFEREFACTOR) for making Java sequential program refactorings safer. Our technique detects behavioral changes in transformations performed on sequential programs. We evaluated it in three experiments. First, our technique was applied against 16 non-behavior-preserving transformations that are not detected by IDEs that implement refactorings. SAFEREFACTOR detected all behavioral changes. Next, we evaluated it on seven refactorings of real Java programs (from 3 to 100 KLOC) performed by developers that used refactoring tools and unit tests to guarantee the behavior preservation. Our technique detected a behavioral change in a refactoring applied to JHotDraw (23 KLOC). Finally, we propose a Java program generator (JDolly) in order to generate program inputs to refactoring implementations. We used SAFEREFACTOR and JDolly to test 11 refactorings implemented by Eclipse 3.4.2. JDolly automatically generated a number of programs to be refactored using Eclipse API. SAFEREFACTOR identified 50 bugs in these transformations (35 behavioral changes and 15 compilation errors). We manually identified that some of these bugs also happen in NetBeans 6.7.CNPqUniversidade Federal de Campina GrandeBrasilCentro de Engenharia Elétrica e Informática - CEEIPÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGGHEYI, Rohit.GHEYI, R.http://lattes.cnpq.br/2931270888717344GUERRERO, Dalton Dario Serey.GUERRERO, D. D. S.http://lattes.cnpq.br/2050632960242405MASSONI, Tiago Lima.BORBA, Paulo Henrique Monteiro.SOARES, Gustavo Araújo.2010-04-122020-02-18T11:19:56Z2020-02-182020-02-18T11:19:56Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041SOARES, G. A. Uma abordagem para aumentar a segurança em refatoramentos de programas. 2010. 131 f. Dissertação (Mestrado em Ciência da Computação) 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, 2010. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041porinfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCG2022-03-18T12:33:07Zoai:localhost:riufcg/12041Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512022-03-18T12:33:07Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
dc.title.none.fl_str_mv |
Uma abordagem para aumentar a segurança em refatoramentos de programas. An approach to increase security in program refactoring. |
title |
Uma abordagem para aumentar a segurança em refatoramentos de programas. |
spellingShingle |
Uma abordagem para aumentar a segurança em refatoramentos de programas. SOARES, Gustavo Araújo. Testes de Programas Manutenção de Programas Refatoramento Program Tests Maintenance of Programs Refactoring Ciência da Computação |
title_short |
Uma abordagem para aumentar a segurança em refatoramentos de programas. |
title_full |
Uma abordagem para aumentar a segurança em refatoramentos de programas. |
title_fullStr |
Uma abordagem para aumentar a segurança em refatoramentos de programas. |
title_full_unstemmed |
Uma abordagem para aumentar a segurança em refatoramentos de programas. |
title_sort |
Uma abordagem para aumentar a segurança em refatoramentos de programas. |
author |
SOARES, Gustavo Araújo. |
author_facet |
SOARES, Gustavo Araújo. |
author_role |
author |
dc.contributor.none.fl_str_mv |
GHEYI, Rohit. GHEYI, R. http://lattes.cnpq.br/2931270888717344 GUERRERO, Dalton Dario Serey. GUERRERO, D. D. S. http://lattes.cnpq.br/2050632960242405 MASSONI, Tiago Lima. BORBA, Paulo Henrique Monteiro. |
dc.contributor.author.fl_str_mv |
SOARES, Gustavo Araújo. |
dc.subject.por.fl_str_mv |
Testes de Programas Manutenção de Programas Refatoramento Program Tests Maintenance of Programs Refactoring Ciência da Computação |
topic |
Testes de Programas Manutenção de Programas Refatoramento Program Tests Maintenance of Programs Refactoring Ciência da Computação |
description |
Refatoramentos são transformações de programas que preservam o comportamento observável e melhoram a qualidade do código. Cada transformação pode possuir um conjunto de pre-condições que devem ser satisfeitas para que o comportamento seja preservado. Muitas ferramentas como Eclipse e NetBeans automatizam vários desses refatoramentos. Entretanto, essas ferramentas podem realizar transformações errôneas, gerando programas que não compilam (mais simples de serem detectadas) ou com comportamentos diferentes dos originais (mais difíceis de serem detectadas). Isso ocorre porque cada ferramenta implementa os refatoramentos com base em um conhecimento informal do conjunto de precondições que precisam ser checadas. Não existe nenhuma teoria formal estabelecendo todas as pre-condições para cada refatoramento em linguagens como Java. Nesse trabalho, nós propomos uma abordagem e sua implementação (SAFEREFACTOR) para aumentar a segurança em refatoramentos de programas seqüenciais em Java. Nossa técnica pode detectar mudanças comportamentais na aplicação de quaisquer refatoramentos em programas seqüenciais. Avaliamos nossa técnica de três formas. Primeiramente aplicamos nossa técnica em um conjunto de 16 transformações aplicadas por ferramentas de refatoramento, já sabia-se, que elas não preservavam o comportamento. Nossa técnica detectou todas as mudanças comportamentais. Além disso, avaliamos em refatoramentos aplicados a sete sistemas reais em Java (3-100 KLOC). Eles foram realizados por desenvolvedores que asseguraram a corretude dos refatoramentos por meio de ferramentas e testes de unidades. Nossa técnica detectou uma mudança comportamental em um refatoramento aplicado ao JHotDraw (23 KLOC). Por fim, propomos o JDolly, um gerador de programas Java, com o objetivo de gerar entradas para testar implementações de refatoramentos. Utilizamos o SAFEREFACTOR e o JDolly para testar automaticamente 11 refatoramentos implementados pelo Eclipse. O JDolly gerou automaticamente um número de entradas que foram refatoradas utilizando cada implementação. O SAFEREFACTOR identificou 50 bugs (35 mudanças comportamentais e 15 erros de compilação) no Eclipse 3.4.2. Manualmente, identificamos que alguns destes bugs ocorrem também no NetBeans 6.7. |
publishDate |
2010 |
dc.date.none.fl_str_mv |
2010-04-12 2020-02-18T11:19:56Z 2020-02-18 2020-02-18T11:19:56Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041 SOARES, G. A. Uma abordagem para aumentar a segurança em refatoramentos de programas. 2010. 131 f. Dissertação (Mestrado em Ciência da Computação) 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, 2010. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041 |
url |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041 |
identifier_str_mv |
SOARES, G. A. Uma abordagem para aumentar a segurança em refatoramentos de programas. 2010. 131 f. Dissertação (Mestrado em Ciência da Computação) 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, 2010. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/12041 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
publisher.none.fl_str_mv |
Universidade Federal de Campina Grande Brasil Centro de Engenharia Elétrica e Informática - CEEI PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO UFCG |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFCG instname:Universidade Federal de Campina Grande (UFCG) instacron:UFCG |
instname_str |
Universidade Federal de Campina Grande (UFCG) |
instacron_str |
UFCG |
institution |
UFCG |
reponame_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
collection |
Biblioteca Digital de Teses e Dissertações da UFCG |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG) |
repository.mail.fl_str_mv |
bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br |
_version_ |
1809744437717237760 |