Solving the Class Responsibility Assignment Problem in Object-Oriented Analysis With Multi-Objective Genetic Algorithms