Uma Estratégia para implementar refatorações seguras no eclipse
Autor(a) principal: | |
---|---|
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 |