Abstract
can be considered as a catalyst [1,2]. Recently, in their study A. Ampatzoglou et al [3] summarized and reported the interest of the software engineering research community for GoF design patterns in both academia and industry. However, the selection and integration of design patterns for a design problem still remains the main concerns of a designer. To address these concerns, several studies [3,7,8,9] have facilitated the designer by introducing techniques for classification and selection of design patterns, while [11,12] studies help the designer to check the correct integration of a selected design pattern. In these studies, different approaches such as UML-based 15, 16, 17], linguistic-based [18, 19] and Ontology-based [23] are used to select and determine an appropriate pattern. However, our study is related to the selection process of design patterns. In his survey study, A. Birukou [4] discussed the two issues related to the selection of a right pattern through its description. The first issue is related to the availability of variety of pattern description which exists in books form such as Gang-of-four (GoF), Pattern Oriented Software Architecture (POSA) and Pattern Language Markup Language (PLML), and the second issue is related with accessing of patterns via the web due to unavailability of description on the internet. Similarly, In their study, Henninger and Correa [13] reported that 31% of software related patterns were not accessible via the web and are only available in book, reports or proceedings format. Moreover, from the last two decades, a lot of software design patterns with its variants (spoiled patterns) have been introduced and catalogued [6], which create difficulties for designers to select a right design pattern in order to solve a design problem without the support of any tool. This assumption is true specifically for novice or inexperienced designers. In order to address these issues, we proposed a three step methodology shown in Figure 1, to automate the classification and selection of an appropriate design pattern from the list of correlated patterns based on feature similarity with a design problem. These features are retrieved f