A design pattern helps to improve the quality of a software system by providing a proven solution for recurring design problems. However, the abstract and informal nature of prevailing pattern descriptions makes it hard to use design patterns and hinders the development of tool support. In this paper, we present an approach that systematically applies a design pattern to a problem model and transforms it to a solution model with traceability, which helps to understand how a design pattern addresses its intended design problem. In the approach, a design pattern is defined as a pair of solution and problem specifications and a transformation specification. A problem model is checked for pattern applicability, and if applicable, the pattern is applied to the model using the pattern's transformation specification, which results in a solution model conforming to the solution specification of the pattern. This approach establishes an explicit traceability of how pattern properties are incorporated into a model. We demonstrate the approach using the Visitor pattern applied to two case studies. Copyright © 2013 John Wiley & Sons, Ltd.