This document discusses recommending software refactoring using search-based software engineering. It proposes a three-part approach: 1) using genetic programming to generate rules for detecting code smells, 2) applying mono-objective search algorithms like genetic algorithms to recommend refactorings to address code smells, and 3) using a multi-objective algorithm like NSGA-II to recommend refactorings that optimize multiple objectives like quality metrics and design patterns. The approach is evaluated on several systems, achieving over 90% precision on average in detecting three types of code smells.