Exploiting Analogy for Design Pattern Recognition and Classification