Uma abordagem para reestruturação de sistemas de software orientados a objetos utilizando medidas de acoplamento e coesão - Santos, Danilo Batista dos (2017)
Since the early stages of software development, one of the main concerns is that it has quality. To achieve this goal, software must constantly evolve to meet the needs of users and the environment in which it is embedded - law of continuous change. Therefore, maintenance is conducted to correct, add or adapt features in the software. However, if such maintenance is conducted in disagreement with the design standards employed and best programming practices, the software will become progressively more coupled and less cohesive, becoming less modularized, and degrading its internal quality. In order to act in the countercurrent of this degradation, this work presents an approach to restructuring software (ARS) through the movement of classes between packages, to generate software with better internal quality, more cohesive and less coupled, making them more modular and maintainable. To achieve this goal, the ARS presents a set of well-defined steps to carry out the restructuring process. In this process software measures are used to determine the state of the software and heuristics to make decisions throughout the restructuring. This approach is also supported by the Simulated Annealing heuristic, to avoid human subjectivity and increase the chances of successful application of ARS. The result of the evaluation of ARS reveals its ability to improve the structural quality of the software. This improvement was proven, since this approach is able to improve the values of the seven measures of software used in a statistically significant way and to reduce the amount of dependencies between its packages, generating more modular and maintainable software. In another evaluation, ARS was compared to other approaches, indicating that ARS is more efficient than them. This result was obtained through a multivariate test of means, which proved that the structures suggested by ARS presented greater gain to the values of the software measures used and, consequently, a better internal structure than the other approaches. Therefore, the application of ARS is able to improve the structural quality of the software, acting in the countercurrent of the degradation of its quality caused by the badly planned maintenance. In this way, ARS makes possible for future maintenance to be carried out with less difficulty, reducing the resources and efforts used to drive it.