A design pattern is a well-defined solution to a recurrent problem. Over the years, the number of patterns and domains of design patterns have expanded, as the patterns are the experiences of the experts of the domain captured in a higher-level abstraction. This led others to work on languages for design patterns to systematically document abstraction detailed in the design pattern rather than capture algorithms and data. These design-pattern specification languages come in different flavors, targeting different aspects of design patterns. Some design-pattern specification languages tried to capture the description of the design pattern in graphical or textual format, others tried to discover design patterns in code or design diagrams, and still other design-pattern specification languages have other objectives. However, so far, no effort has been made to compare these design-pattern specification languages and identify their strengths and weaknesses. This article provides a survey and a comparison between existing design-pattern specification languages using a design-pattern specification language evaluation framework. Analysis is done by grouping the design-pattern specification languages into different categories. In addition, a brief description is provided regarding the tools available for the design-pattern specification languages. Finally, we identify some open research issues that still need to be resolved.
['Salman Khwaja', 'Mohammad Alshayeb']
Survey On Software Design-Pattern Specification Languages