Please use this identifier to cite or link to this item: http://ri.ufs.br/jspui/handle/riufs/8255
Document Type: Monografia
Title: Uma Estratégia para implementar refatorações seguras no eclipse
Authors: Santos, Igor Nascimento
Issue Date: 23-Nov-2017
Advisor: Palma, Geovanny Fernando Lucero
Resumo : 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.
Abstract: 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.
Keywords: Ciência da computação
Programaçõ (computadores)
Engenharia de software
Refração
Eclipse
Refatoração
Refactorings
Aliasing
Verification
Subject CNPQ: CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
Language: por
Institution: Universidade Federal de Sergipe
Department: DCOMP - Departamento de Computação – Ciência da Computação – São Cristóvão - Presencial
Citation: 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
URI: http://ri.ufs.br/jspui/handle/riufs/8255
Appears in Collections:Computação

Files in This Item:
File Description SizeFormat 
Igor_Nascimento_Santos.pdf426,59 kBAdobe PDFThumbnail
View/Open


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