Mining Design Patterns in Object Oriented Systems by a Model-Driven Approach