Applying design patterns is considered a helpful technique for designing software systems. Patterns description, however, results not sufficiently precise providing a weak understanding and making it difficult to be certain when a pattern is being used correctly. We have formally specified a metamodel where properties of patterns and object-oriented design can be rigorously described. In the present work, our formal basis is used to build a component-based tool for verifying proper applications of object-oriented patterns. The usage of this tool is also focused on the learning process about patterns applications. Through a better understanding of patterns, the designer may certify when and how a pattern is being appropriately applied to solve a specific design problem. Furthermore, the whole design process could be improved by using a precise technique supported by an automatic tool for verification.