I. Introduction
The main purpose of code refactoring is to modify the source code of a software system in such a way that it preserves its intended behaviour, but it improves characteristics like readability and maintainability. Crosscutting concerns are features or properties of a software system that affect many modules of the system, and whose implementation using object oriented paradigms decreases the source code understandability and maintainability.