Uma abordagem para apoio à decisão de refatoração em sistemas de software
Ano de defesa: | 2017 |
---|---|
Autor(a) principal: | |
Orientador(a): | |
Banca de defesa: | |
Tipo de documento: | Dissertação |
Tipo de acesso: | Acesso aberto |
Idioma: | por |
Instituição de defesa: |
Universidade Federal de Uberlândia
Brasil Programa de Pós-graduação em Ciência da Computação |
Programa de Pós-Graduação: |
Não Informado pela instituição
|
Departamento: |
Não Informado pela instituição
|
País: |
Não Informado pela instituição
|
Palavras-chave em Português: | |
Link de acesso: | https://repositorio.ufu.br/handle/123456789/21178 http://dx.doi.org/10.14393/ufu.di.2017.85 |
Resumo: | The lack of modularization is one of the main problems encountered in software systems. Several studies address this problem by presenting solutions that aim to increase the modularization quality. However, there is still no definitive solution that can be applied in any situation in which this problem occurs. A specific situation concerns the lack of cohesion among methods of a class in object-oriented systems. In this situation, an appropriate solution would be to apply a class refactoring. The class refactoring process aims at improving the modularization of a system without changing its functionalities. However, this process can be complex and difficult to execute because of the side effects that can be caused by improper changes. In this context, better systems for supporting refactoring are still lacking, so the cohesion between class methods and a better modularization of the system could be achieved. This work proposes an approach to provide information to support of refactoring. This information was obtained from an analysis of the impacts generated by the refactorings applied in 8 systems developed in Java language. The impact of these refactorings was identified and measured by analyzing the evolution of cohesion metrics. A qualitative analysis was performed on the refactorings identified with the objective of determining what type of strategy was adopted in each situation. From this analysis it was possible to propose refactoring guides that were presented to the developers of the 8 systems through a survey. The study found positive results in which discussions with the developers led to situations in which the proposed guidelines would clearly help the refactoring process. It was also observed situations in which the recommendations can be adopted as new practices in order to avoid losses of modularization. |