Design patterns were created to promote reusability of solutions to problems found in software design. Unfortunately, the absence of a systematic approach to the categorization and organization of design patterns has hindered overall reusability by allowing several catalogues to overlap. In this thesis, I propose two approaches that use Another Contract Language (ACL) for the specification of such patterns. My goal is to demonstrate that it is feasible to capture the variability inherent in design patterns while producing a testable model. My two modeling strategies are compared with two
published, non-ACL approaches in a case study on the well-known Observer pattern. This case study illustrates the benefits of my proposed strategies in dealing with pattern variability and scenario capturing.