Refatoração da camada de persistência do FrameMK - Melo, Maikon André Ferreira de (2018)
FrameMK is a domain framework that aims to establish the selling price of a product or service. As software has been developed by scholars of this institution over the years, different groups of developers end up working on the project, which can generate a system with difficult code understanding, making it difficult to maintain and evolve the software. Software refactoring techniques cataloged by area experts come as a means of mitigating this type of problem, making software more readable, flexible, and maintenance less costly. In order to aid in the refactoring process, refactoring methods appear in the literature, which consist of a sequence of defined steps that mostly involve design analysis and the application of refactoring techniques. In the literature there are methods of refactoring that deal with different aspects, and may be aimed at a particular programming language, different domains or even those that can be used in general. This work has carried out a study of three methods of refactoring: based on design patterns for systems developed in Java language, generally used and the one oriented towards domain frameworks, which is based on the two methods mentioned previously and was used in this work. The method based on the domain framework was adapted to better meet the needs encountered during the analysis of the persistence layer of the framework, in order to take advantage of the already defined process. The adaptation of the method was efficient for the purposes of this work, since it helped in the detection of codes with symptoms of bad design or implementation of bad smells in all classes of the layer worked. The application of the refactoring generated quantitative data that allowed to analyze the impact caused by the applied techniques in each of the classes of the layer of persistence of the framework. At the end of the refactoring process, six different techniques were applied, separated into five different categories. The refactored classes presented changes related to the number of methods and lines of code, but the relevant results were the improvements implemented in the layer, reducing the complexity and increasing the maintainability of the code.