Uma Estratégia para implementar refatorações seguras no eclipse

Detalhes bibliográficos
Autor(a) principal: Santos, Igor Nascimento
Data de Publicação: 2017
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UFS
Texto Completo: http://ri.ufs.br/jspui/handle/riufs/8255
Resumo: The process of software development is complex and requires well-defined processes about each phase of work. In the phase of implementation of the modules some care is taken so that the software obtains positive indexes in quality attributes. Poorly implemented software can decline in attributes such as maintainability and reusability. Software that is not maintainable has great chances of having a short period in the market. In order to improve problem points in the software, it is possible to use refactoring techniques. Software refactoring consists of improvements in the internal structure of a program, through transformations, maintaining the original behavior of the program. The Fowler catalog is one of the leading references in terms of refactoring. In it, refactorings are described informally, through determined steps, instructions for verifying the immutability of behavior and demonstrative examples. However, the use of such an approach to refactoring can cause errors and be very laborious, due to the manual way of doing it. Aiming to save developers from having to manually refactor their code, development tools such as Eclipse, Netbeans and Intellij Idea automate refactorings similar to those in the Fowler catalog. However, for various reasons, some refactorings available in these tools do not guarantee the preservation of program behavior. Studies show that it is possible to formalize refactorings so that program behavior can be guaranteed under certain conditions. One of these works is based on algebraic programming laws combined with laws for object-oriented programming. Using these laws, you can formalize any transformations between programs implemented in some object-oriented language, such as Java or C ++, and prove that the behavior is preserved. Observing the need for development tools to offer reliable refactorings, this work proposes a strategy for implementing correct refactorings in the Eclipse environment. This approach is based on the formalization of refactoring, implementation of refactorings following the formulated conditions and handling eventual cases of aliasing with techniques of data flow analysis. As a case study, we will deploy a secure version of Inline Temp refactoring for Java, performing patches and incrementing the version available in Eclipse. The static conditions that refactoring requires are implemented and verified normally. However, for the dynamic conditions, which involve verification of aliasing, an approach is proposed that generates evidentiary obligations described as assertive. It is a known fact that a good part of the developers have little contact with formalisms and formal refactorings. In this way, the instrumentation of the code with assertions can be little pragmatic. Aiming to reduce the test obligations generated by dynamic analysis, this work performs a study on data flow analysis, techniques and tools that implement pointer analysis. Thus, it will be possible not to implement a certain piece of code with assertions, when it does not show signs of aliasing.
id UFS-2_0397e3d2e8485c439bc3a7a99f039eac
oai_identifier_str oai:ufs.br:riufs/8255
network_acronym_str UFS-2
network_name_str Repositório Institucional da UFS
repository_id_str
spelling Santos, Igor NascimentoPalma, Geovanny Fernando Lucero2018-05-23T14:32:33Z2018-05-23T14:32:33Z2017-11-23SANTOS, Igor Nascimento dos. Uma Estratégia para implementar refatorações seguras no eclipse. São Cristóvão, SE, 2017. Monografia (Graduação em Ciência da Computação) - Departamento de Computação, Centro de Ciências Exatas e Tecnologia, Universidade Federal de Sergipe, São Cristóvão, SE, 2017http://ri.ufs.br/jspui/handle/riufs/8255The process of software development is complex and requires well-defined processes about each phase of work. In the phase of implementation of the modules some care is taken so that the software obtains positive indexes in quality attributes. Poorly implemented software can decline in attributes such as maintainability and reusability. Software that is not maintainable has great chances of having a short period in the market. In order to improve problem points in the software, it is possible to use refactoring techniques. Software refactoring consists of improvements in the internal structure of a program, through transformations, maintaining the original behavior of the program. The Fowler catalog is one of the leading references in terms of refactoring. In it, refactorings are described informally, through determined steps, instructions for verifying the immutability of behavior and demonstrative examples. However, the use of such an approach to refactoring can cause errors and be very laborious, due to the manual way of doing it. Aiming to save developers from having to manually refactor their code, development tools such as Eclipse, Netbeans and Intellij Idea automate refactorings similar to those in the Fowler catalog. However, for various reasons, some refactorings available in these tools do not guarantee the preservation of program behavior. Studies show that it is possible to formalize refactorings so that program behavior can be guaranteed under certain conditions. One of these works is based on algebraic programming laws combined with laws for object-oriented programming. Using these laws, you can formalize any transformations between programs implemented in some object-oriented language, such as Java or C ++, and prove that the behavior is preserved. Observing the need for development tools to offer reliable refactorings, this work proposes a strategy for implementing correct refactorings in the Eclipse environment. This approach is based on the formalization of refactoring, implementation of refactorings following the formulated conditions and handling eventual cases of aliasing with techniques of data flow analysis. As a case study, we will deploy a secure version of Inline Temp refactoring for Java, performing patches and incrementing the version available in Eclipse. The static conditions that refactoring requires are implemented and verified normally. However, for the dynamic conditions, which involve verification of aliasing, an approach is proposed that generates evidentiary obligations described as assertive. It is a known fact that a good part of the developers have little contact with formalisms and formal refactorings. In this way, the instrumentation of the code with assertions can be little pragmatic. Aiming to reduce the test obligations generated by dynamic analysis, this work performs a study on data flow analysis, techniques and tools that implement pointer analysis. Thus, it will be possible not to implement a certain piece of code with assertions, when it does not show signs of aliasing.O processo de desenvolvimento de um software é complexo e requer processos bem definidos acerca de cada fase de trabalho. Na fase de implementação dos módulos são necessários cuidados para que o software obtenha índices positivos em atributos de qualidade. Um software mal implementado pode decair em atributos como manutenibilidade e reusabilidade. Um software que não é manutenível tem grandes chances de ter um curto período no mercado. De modo a melhorar pontos problemáticos no software, é possível utilizar técnicas de refatoração. Refatoração de software consiste de melhorias na estrutura interna de um programa, através de transformações, mantendo o comportamento original do programa. O catálogo de Fowler é uma das principais referências em termos de refatoração. Nele as refatorações são descritas informalmente, através de passos determinados, instruções para verificação da imutabilidade do comportamento e exemplos demonstrativos. Entretanto, a utilização de tal abordagem para refatorar pode ocasionar erros e ser muito trabalhosa, devido ao cunho manual da mesma. Visando poupar o desenvolvedor de ter que refatorar manualmente o seu código, ferramentas de desenvolvimento como Eclipse, Netbeans e Intellij Idea automatizam refatorações similares às contidas no catálogo de Fowler. Porém, por diversos motivos, algumas refatorações disponíveis nessas ferramentas não garantem a preservação de comportamento do programa. Estudos mostram que é possível formalizar refatorações de modo que seja possível garantir o comportamento do programa, seguindo determinadas condições. Um destes trabalhos baseiase em leis algébricas de programação combinadas com leis para programação orientada a objetos. Utilizando essas leis, pode-se formalizar quaisquer transformações entre programas implementados em alguma linguagem orientada a objetos, como Java ou C++, e provar que o comportamento é preservado. Observando a necessidade de que ferramentas de desenvolvimento possam oferecer refatorações confiáveis, este trabalho propõe uma estratégia para a implementação de refatorações corretas no ambiente Eclipse. Esta abordagem se fundamenta na formalização da refatoração, implementado refatorações seguindo as condições formuladas e tratando eventuais casos de aliasing com técnicas de análise de fluxo de dados. Como estudo de caso, implementaremos uma versão segura da refatoração Inline Temp para Java, realizando correções e incrementando a versão disponível no Eclipse. As condições estáticas que a refatoração necessita são implementadas e verificas normalmente. Porém, para as condições dinâmicas, que envolvem verificação de aliasing, propõe-se uma abordagem que gera obrigações de prova descritas como assertivas. É um fato conhecido que boa parte dos desenvolvedores têm pouco contato com formalismos e refatorações formais. Desta forma, a instrumentação do código com assertivas pode ser pouco pragmática. Visando reduzir as obrigações de prova geradas pelas análises dinâmicas, este trabalho realiza um estudo sobre análise de fluxo de dados, técnicas e ferramentas que implementam análise de ponteiros. Assim, será possível não instrumentar um determinado trecho de código com assertivas, quando o mesmo não apresentar indícios de aliasing.São Cristóvão, SEporCiência da computaçãoProgramaçõ (computadores)Engenharia de softwareRefraçãoEclipseRefatoraçãoRefactoringsAliasingVerificationCIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAOUma Estratégia para implementar refatorações seguras no eclipseinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisUniversidade Federal de SergipeDCOMP - Departamento de Computação – Ciência da Computação – São Cristóvão - Presencialreponame:Repositório Institucional da UFSinstname:Universidade Federal de Sergipe (UFS)instacron:UFSinfo:eu-repo/semantics/openAccessLICENSElicense.txtlicense.txttext/plain; charset=utf-81475https://ri.ufs.br/jspui/bitstream/riufs/8255/1/license.txt098cbbf65c2c15e1fb2e49c5d306a44cMD51ORIGINALIgor_Nascimento_Santos.pdfIgor_Nascimento_Santos.pdfapplication/pdf436827https://ri.ufs.br/jspui/bitstream/riufs/8255/2/Igor_Nascimento_Santos.pdf64814073c7e7883401eb76acba3f3122MD52TEXTIgor_Nascimento_Santos.pdf.txtIgor_Nascimento_Santos.pdf.txtExtracted texttext/plain97131https://ri.ufs.br/jspui/bitstream/riufs/8255/3/Igor_Nascimento_Santos.pdf.txt94731b4007aff9a80f0a692bbd613dbfMD53THUMBNAILIgor_Nascimento_Santos.pdf.jpgIgor_Nascimento_Santos.pdf.jpgGenerated Thumbnailimage/jpeg1279https://ri.ufs.br/jspui/bitstream/riufs/8255/4/Igor_Nascimento_Santos.pdf.jpga3679c54d6f5c89c9149f5b3e00f0ac0MD54riufs/82552018-05-23 11:32:33.397oai:ufs.br:riufs/8255TElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEKCkNvbSBhIGFwcmVzZW50YcOnw6NvIGRlc3RhIGxpY2Vuw6dhLCB2b2PDqiAobyBhdXRvcihlcykgb3UgbyB0aXR1bGFyIGRvcyBkaXJlaXRvcyBkZSBhdXRvcikgY29uY2VkZSDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBTZXJnaXBlIG8gZGlyZWl0byBuw6NvLWV4Y2x1c2l2byBkZSByZXByb2R1emlyIHNldSB0cmFiYWxobyBubyBmb3JtYXRvIGVsZXRyw7RuaWNvLCBpbmNsdWluZG8gb3MgZm9ybWF0b3Mgw6F1ZGlvIG91IHbDrWRlby4KClZvY8OqIGNvbmNvcmRhIHF1ZSBhIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFNlcmdpcGUgcG9kZSwgc2VtIGFsdGVyYXIgbyBjb250ZcO6ZG8sIHRyYW5zcG9yIHNldSB0cmFiYWxobyBwYXJhIHF1YWxxdWVyIG1laW8gb3UgZm9ybWF0byBwYXJhIGZpbnMgZGUgcHJlc2VydmHDp8Ojby4KClZvY8OqIHRhbWLDqW0gY29uY29yZGEgcXVlIGEgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgU2VyZ2lwZSBwb2RlIG1hbnRlciBtYWlzIGRlIHVtYSBjw7NwaWEgZGUgc2V1IHRyYWJhbGhvIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrLXVwIGUgcHJlc2VydmHDp8Ojby4KClZvY8OqIGRlY2xhcmEgcXVlIHNldSB0cmFiYWxobyDDqSBvcmlnaW5hbCBlIHF1ZSB2b2PDqiB0ZW0gbyBwb2RlciBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gVm9jw6ogdGFtYsOpbSBkZWNsYXJhIHF1ZSBvIGRlcMOzc2l0bywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgbsOjbyBpbmZyaW5nZSBkaXJlaXRvcyBhdXRvcmFpcyBkZSBuaW5ndcOpbS4KCkNhc28gbyB0cmFiYWxobyBjb250ZW5oYSBtYXRlcmlhbCBxdWUgdm9jw6ogbsOjbyBwb3NzdWkgYSB0aXR1bGFyaWRhZGUgZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCB2b2PDqiBkZWNsYXJhIHF1ZSBvYnRldmUgYSBwZXJtaXNzw6NvIGlycmVzdHJpdGEgZG8gZGV0ZW50b3IgZG9zIGRpcmVpdG9zIGF1dG9yYWlzIHBhcmEgY29uY2VkZXIgw6AgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgU2VyZ2lwZSBvcyBkaXJlaXRvcyBhcHJlc2VudGFkb3MgbmVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgZGUgcHJvcHJpZWRhZGUgZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3Ugbm8gY29udGXDumRvLgoKQSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBTZXJnaXBlIHNlIGNvbXByb21ldGUgYSBpZGVudGlmaWNhciBjbGFyYW1lbnRlIG8gc2V1IG5vbWUocykgb3UgbyhzKSBub21lKHMpIGRvKHMpIApkZXRlbnRvcihlcykgZG9zIGRpcmVpdG9zIGF1dG9yYWlzIGRvIHRyYWJhbGhvLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIGFsw6ltIGRhcXVlbGFzIGNvbmNlZGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EuIAo=Repositório InstitucionalPUBhttps://ri.ufs.br/oai/requestrepositorio@academico.ufs.bropendoar:2018-05-23T14:32:33Repositório Institucional da UFS - Universidade Federal de Sergipe (UFS)false
dc.title.pt_BR.fl_str_mv Uma Estratégia para implementar refatorações seguras no eclipse
title Uma Estratégia para implementar refatorações seguras no eclipse
spellingShingle Uma Estratégia para implementar refatorações seguras no eclipse
Santos, Igor Nascimento
Ciência da computação
Programaçõ (computadores)
Engenharia de software
Refração
Eclipse
Refatoração
Refactorings
Aliasing
Verification
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
title_short Uma Estratégia para implementar refatorações seguras no eclipse
title_full Uma Estratégia para implementar refatorações seguras no eclipse
title_fullStr Uma Estratégia para implementar refatorações seguras no eclipse
title_full_unstemmed Uma Estratégia para implementar refatorações seguras no eclipse
title_sort Uma Estratégia para implementar refatorações seguras no eclipse
author Santos, Igor Nascimento
author_facet Santos, Igor Nascimento
author_role author
dc.contributor.author.fl_str_mv Santos, Igor Nascimento
dc.contributor.advisor1.fl_str_mv Palma, Geovanny Fernando Lucero
contributor_str_mv Palma, Geovanny Fernando Lucero
dc.subject.por.fl_str_mv Ciência da computação
Programaçõ (computadores)
Engenharia de software
Refração
Eclipse
Refatoração
topic Ciência da computação
Programaçõ (computadores)
Engenharia de software
Refração
Eclipse
Refatoração
Refactorings
Aliasing
Verification
CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
dc.subject.eng.fl_str_mv Refactorings
Aliasing
Verification
dc.subject.cnpq.fl_str_mv CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
description The process of software development is complex and requires well-defined processes about each phase of work. In the phase of implementation of the modules some care is taken so that the software obtains positive indexes in quality attributes. Poorly implemented software can decline in attributes such as maintainability and reusability. Software that is not maintainable has great chances of having a short period in the market. In order to improve problem points in the software, it is possible to use refactoring techniques. Software refactoring consists of improvements in the internal structure of a program, through transformations, maintaining the original behavior of the program. The Fowler catalog is one of the leading references in terms of refactoring. In it, refactorings are described informally, through determined steps, instructions for verifying the immutability of behavior and demonstrative examples. However, the use of such an approach to refactoring can cause errors and be very laborious, due to the manual way of doing it. Aiming to save developers from having to manually refactor their code, development tools such as Eclipse, Netbeans and Intellij Idea automate refactorings similar to those in the Fowler catalog. However, for various reasons, some refactorings available in these tools do not guarantee the preservation of program behavior. Studies show that it is possible to formalize refactorings so that program behavior can be guaranteed under certain conditions. One of these works is based on algebraic programming laws combined with laws for object-oriented programming. Using these laws, you can formalize any transformations between programs implemented in some object-oriented language, such as Java or C ++, and prove that the behavior is preserved. Observing the need for development tools to offer reliable refactorings, this work proposes a strategy for implementing correct refactorings in the Eclipse environment. This approach is based on the formalization of refactoring, implementation of refactorings following the formulated conditions and handling eventual cases of aliasing with techniques of data flow analysis. As a case study, we will deploy a secure version of Inline Temp refactoring for Java, performing patches and incrementing the version available in Eclipse. The static conditions that refactoring requires are implemented and verified normally. However, for the dynamic conditions, which involve verification of aliasing, an approach is proposed that generates evidentiary obligations described as assertive. It is a known fact that a good part of the developers have little contact with formalisms and formal refactorings. In this way, the instrumentation of the code with assertions can be little pragmatic. Aiming to reduce the test obligations generated by dynamic analysis, this work performs a study on data flow analysis, techniques and tools that implement pointer analysis. Thus, it will be possible not to implement a certain piece of code with assertions, when it does not show signs of aliasing.
publishDate 2017
dc.date.issued.fl_str_mv 2017-11-23
dc.date.accessioned.fl_str_mv 2018-05-23T14:32:33Z
dc.date.available.fl_str_mv 2018-05-23T14:32:33Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv SANTOS, Igor Nascimento dos. Uma Estratégia para implementar refatorações seguras no eclipse. São Cristóvão, SE, 2017. Monografia (Graduação em Ciência da Computação) - Departamento de Computação, Centro de Ciências Exatas e Tecnologia, Universidade Federal de Sergipe, São Cristóvão, SE, 2017
dc.identifier.uri.fl_str_mv http://ri.ufs.br/jspui/handle/riufs/8255
identifier_str_mv SANTOS, Igor Nascimento dos. Uma Estratégia para implementar refatorações seguras no eclipse. São Cristóvão, SE, 2017. Monografia (Graduação em Ciência da Computação) - Departamento de Computação, Centro de Ciências Exatas e Tecnologia, Universidade Federal de Sergipe, São Cristóvão, SE, 2017
url http://ri.ufs.br/jspui/handle/riufs/8255
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.initials.fl_str_mv Universidade Federal de Sergipe
dc.publisher.department.fl_str_mv DCOMP - Departamento de Computação – Ciência da Computação – São Cristóvão - Presencial
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFS
instname:Universidade Federal de Sergipe (UFS)
instacron:UFS
instname_str Universidade Federal de Sergipe (UFS)
instacron_str UFS
institution UFS
reponame_str Repositório Institucional da UFS
collection Repositório Institucional da UFS
bitstream.url.fl_str_mv https://ri.ufs.br/jspui/bitstream/riufs/8255/1/license.txt
https://ri.ufs.br/jspui/bitstream/riufs/8255/2/Igor_Nascimento_Santos.pdf
https://ri.ufs.br/jspui/bitstream/riufs/8255/3/Igor_Nascimento_Santos.pdf.txt
https://ri.ufs.br/jspui/bitstream/riufs/8255/4/Igor_Nascimento_Santos.pdf.jpg
bitstream.checksum.fl_str_mv 098cbbf65c2c15e1fb2e49c5d306a44c
64814073c7e7883401eb76acba3f3122
94731b4007aff9a80f0a692bbd613dbf
a3679c54d6f5c89c9149f5b3e00f0ac0
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFS - Universidade Federal de Sergipe (UFS)
repository.mail.fl_str_mv repositorio@academico.ufs.br
_version_ 1802110655672614912