Abstract
Complex source code impacts the cost of software maintenance in a negative way. In an object-oriented context, one class may depend on a high number of other classes, thus contributing to the complexity of a program and making changing code prone to errors. Refactoring is a means to fight such complexity. This thesis investigates whether automated refactoring can be used to lower the coupling between classes. A search-based composite refactoring combining the primitive refactorings Extract Method and Move Method is designed as a possible solution to this problem. Case studies are conducted to evaluate the effect of executing the search-based refactoring in a large code base.