Design Pattern Recovery in Object-Oriented Software