{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,14]],"date-time":"2025-03-14T04:28:08Z","timestamp":1741926488114,"version":"3.38.0"},"reference-count":65,"publisher":"Wiley","issue":"12","license":[{"start":{"date-parts":[[2011,11,11]],"date-time":"2011-11-11T00:00:00Z","timestamp":1320969600000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[2012,12]]},"abstract":"<jats:title>SUMMARY<\/jats:title><jats:p>Design patterns codify proven solutions to recurring design problems. Their proper use within a development context requires that: (i) we understand them; (ii) we ascertain their applicability or relevance to the design problem at hand; and (iii) we apply them faithfully to the problem at hand. We argue that an explicit representation of the design problem solved by a design pattern is key to supporting the three tasks in an integrated fashion. We propose a model\u2010driven representation of design patterns consisting of triples\u2009&lt;\u2009<jats:italic>MP<\/jats:italic>,<jats:italic>MS<\/jats:italic>,<jats:italic>T<\/jats:italic>\u2009&gt;\u2009where<jats:italic>MP<\/jats:italic>is a model of the problem solved by the pattern,<jats:italic>MS<\/jats:italic>is a model of the solution proposed by the pattern, and<jats:italic>T<\/jats:italic>is a model transformation of an instance of the problem into an instance of the solution. Given an object\u2010oriented design model, we look for model fragments that match<jats:italic>MP<\/jats:italic>(call them instances of<jats:italic>MP<\/jats:italic>), and when one is found, we apply the transformation<jats:italic>T<\/jats:italic>yielding an instance of<jats:italic>MS<\/jats:italic>. Easier said than done. Experimentation with an Eclipse Modeling Framework\u2010based implementation of our approach applied to a number of open\u2010source software application's raised fundamental questions about: (i) the nature of design patterns in general, and the ones that lend themselves to our approach, and (ii) our understanding and codification of seemingly simple design patterns. In this paper, we present the principles behind our approach, report on the results of applying the approach to the Gang of Four (GoF) design patterns, and discuss the representability of design problems solved by these patterns. Copyright \u00a9 2011 John Wiley &amp; Sons, Ltd.<\/jats:p>","DOI":"10.1002\/spe.1145","type":"journal-article","created":{"date-parts":[[2011,11,11]],"date-time":"2011-11-11T11:10:13Z","timestamp":1321009813000},"page":"1495-1529","source":"Crossref","is-referenced-by-count":11,"title":["Understanding design patterns \u2014 what is the problem?"],"prefix":"10.1002","volume":"42","author":[{"given":"Ghizlane","family":"El Boussaidi","sequence":"first","affiliation":[{"name":"\u00c9cole de Technologie Sup\u00e9rieure Montr\u00e9al Canada"},{"name":"LATECE Laboratory Universit\u00e9 du Qu\u00e9bec \u00e0 Montr\u00e9al Montr\u00e9al Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hafedh","family":"Mili","sequence":"additional","affiliation":[{"name":"LATECE Laboratory Universit\u00e9 du Qu\u00e9bec \u00e0 Montr\u00e9al Montr\u00e9al Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2011,11,11]]},"reference":[{"key":"e_1_2_11_2_1","doi-asserted-by":"publisher","DOI":"10.1287\/mnsc.45.3.425"},{"volume-title":"Analysis Patterns: Reusable Object Models","year":"1996","author":"Fowler M","key":"e_1_2_11_3_1"},{"volume-title":"Design Patterns: Elements of Reusable Object\u2010Oriented Software","year":"1995","author":"Gamma E","key":"e_1_2_11_4_1"},{"key":"e_1_2_11_5_1","unstructured":"CoplienJO.C++ Idioms.Proceedings of the 3rdEuropean Conference on Pattern Languages of Programming and Computing Universitaetsverlag Konstanz 1998;11\u201334."},{"volume-title":"Building application frameworks: object\u2010oriented foundations of framework design","year":"1999","author":"Fayad ME","key":"e_1_2_11_6_1"},{"key":"e_1_2_11_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/356914.356917"},{"key":"e_1_2_11_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/129852.129859"},{"key":"e_1_2_11_9_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2004.89"},{"key":"e_1_2_11_10_1","unstructured":"MDA: Model Driven Architecture specificationshttp:\/\/www.omg.org\/mda\/specs.htm[4 April2011]."},{"key":"e_1_2_11_11_1","unstructured":"Albin\u2010AmiotH Gu\u00e9h\u00e9neucYG.Meta\u2010modeling Design Patterns: application to pattern detection and code synthesis.Proceedings of ECOOP Workshop on Automating Object\u2010Oriented Software Development Methods June2001."},{"key":"e_1_2_11_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2004.1271174"},{"key":"e_1_2_11_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2010.03.005"},{"key":"e_1_2_11_14_1","doi-asserted-by":"crossref","unstructured":"DebnathNC GarisA RiescoD MontejanoG.Defining Patterns Using UML Profiles.IEEE International Conference on Computer Systems and Applications 2006;1147\u20131150.","DOI":"10.1109\/AICCSA.2006.205233"},{"key":"e_1_2_11_15_1","unstructured":"PagelBU WinterM.Towards Pattern\u2010Based Tools.Proceedings of EuropLop 1996."},{"key":"e_1_2_11_16_1","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2002.1.2.a3"},{"key":"e_1_2_11_17_1","unstructured":"ElaasarM BriandL LabicheY.A Metamodeling Approach to Pattern Specification and Detection.ACM\/IEEE International Conference On Model Driven Engineering Languages and Systems (MoDELS) 2006."},{"key":"e_1_2_11_18_1","unstructured":"EdenAH GilJ HirshfeldY YehudaiA.Towards a mathematical foundation for design patterns.Technical report dep. of information technology Uppsala University 1999."},{"key":"e_1_2_11_19_1","unstructured":"MaplesdenD HoskingJ GrundyJ.Design Pattern Modelling and Instantiation using DPML.Proceedings of 14th Int. Conference on Technology of OO Languages and Systems 2002."},{"key":"e_1_2_11_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-13595-8_22"},{"key":"e_1_2_11_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2009.08.006"},{"key":"e_1_2_11_22_1","unstructured":"AlencarPSC CowanDD DongJ LucenaCJP.A transformational Process\u2010Based Formal Approach to Object\u2010Oriented Design.Formal Methods Europe FME'97 1997."},{"key":"e_1_2_11_23_1","doi-asserted-by":"crossref","unstructured":"Suny\u00e9G Le GuennecA J\u00e9z\u00e9quelJM.Design pattern application in UML.Proceedings of the 14th Object\u2010Oriented Programming European Conference 2000;44\u201362.","DOI":"10.1007\/3-540-45102-1_3"},{"key":"e_1_2_11_24_1","unstructured":"\u00d3 Cinn\u00e9ideM.Automated Application of Design Patterns: a Refactoring Approach.PhD dissertation University of Dublin Trinity College 2000."},{"key":"e_1_2_11_25_1","doi-asserted-by":"publisher","DOI":"10.1002\/smr.299"},{"key":"e_1_2_11_26_1","doi-asserted-by":"publisher","DOI":"10.1007\/11557432_14"},{"key":"e_1_2_11_27_1","first-page":"97","article-title":"A model\u2010driven framework for representing and applying design patterns","volume":"1","author":"El\u2010Boussaidi G","year":"2007","journal-title":"Proceedings of 31st IEEE International Computer Software and Applications Conference"},{"key":"e_1_2_11_28_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-87875-9_14"},{"key":"e_1_2_11_29_1","doi-asserted-by":"crossref","unstructured":"vanGurpJ BoschJ SvahnbergJ.On the notion of variability in software product lines.Proceedings of the Working IEEE\/IFIP Conference on Software Architecture 2001;45\u201354.","DOI":"10.1109\/WICSA.2001.948406"},{"key":"e_1_2_11_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.776957"},{"key":"e_1_2_11_31_1","article-title":"The design of a simple language for graph transformations","author":"Agrawal A","year":"2005","journal-title":"Journal in Software and System Modeling,"},{"key":"e_1_2_11_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-28554-7_5"},{"key":"e_1_2_11_33_1","doi-asserted-by":"crossref","unstructured":"BaloghA VarroD.Advanced model transformation language constructs in the VIATRA2 framework.Proceedings of the ACM Symp. on Applied computing 2006;1280\u20131287.","DOI":"10.1145\/1141277.1141575"},{"key":"e_1_2_11_34_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-61228-9_105"},{"key":"e_1_2_11_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-46464-8_17"},{"key":"e_1_2_11_36_1","unstructured":"BacchusF vanBeekP.On the Conversion between Non\u2010Binary and Binary Constraint Satisfaction Problems.The 15th Conference on Artificial Intelligence 1998;311\u2013318."},{"key":"e_1_2_11_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/APSEC.2000.896734"},{"key":"e_1_2_11_38_1","unstructured":"El\u2010BoussaidiG.D\u00e9veloppement logiciel par transformation de mod\u00e8les\u2010 Conception par application de patrons.PhD Thesis Universit\u00e9 de Montr\u00e9al July2009."},{"key":"e_1_2_11_39_1","unstructured":"Eclipse Modeling Framework:http:\/\/www.eclipse.org\/modeling\/emf\/[4 April2011]."},{"key":"e_1_2_11_40_1","unstructured":"ILOG products:http:\/\/www\u201001.ibm.com\/software\/websphere\/ilog\/[4 April2011]."},{"key":"e_1_2_11_41_1","unstructured":"XMI (XML Metadata Interchange) specification:http:\/\/www.omg.org\/spec\/XMI\/[4 April2011]."},{"key":"e_1_2_11_42_1","unstructured":"MOF (Meta Object Facility) specification:http:\/\/www.omg.org\/mof\/[4 April2011]."},{"volume-title":"Software architecture in practice","year":"2003","author":"Bass L","key":"e_1_2_11_43_1"},{"volume-title":"Documenting Software Architectures: Views and Beyond","year":"2003","author":"Clements P","key":"e_1_2_11_44_1"},{"key":"e_1_2_11_45_1","unstructured":"ReMoDD: The Repository for Model Driven Developmenthttp:\/\/www.cs.colostate.edu\/remodd\/[4 April2011]."},{"key":"e_1_2_11_46_1","doi-asserted-by":"crossref","unstructured":"MilanovaA.Precise Identification of Composition Relationships for UML Class Diagrams.Proc. of the 20th IEEE\/ACM Int. Conference on Automated software engineering 2005;76\u201385.","DOI":"10.1145\/1101908.1101922"},{"key":"e_1_2_11_47_1","unstructured":"CorradiniA MontanariU RossiF EhrigH HeckelR LoeweM.Algebraic Approaches to Graph Transformation Part I: Basic Concepts and Double Pushout Approach.Technical Report TR\u201096\u201017 University of Pisa March1996."},{"key":"e_1_2_11_48_1","first-page":"472","article-title":"Tool support for object\u2010oriented patterns","volume":"1241","author":"Florijn G","year":"1997","journal-title":"11th European Conference on Object\u2010Oriented Programming"},{"key":"e_1_2_11_49_1","doi-asserted-by":"crossref","unstructured":"Gu\u00e9h\u00e9neucYG SahraouiH.Des signatures num\u00e9riques pour am\u00e9liorer la recherche structurelle de patrons.Proceedings of Langages et Mod\u00e8les \u00e0 Objets Berne Suisse 2005.","DOI":"10.3166\/objet.11.1-2.97-112"},{"key":"e_1_2_11_50_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.352.0151"},{"key":"e_1_2_11_51_1","doi-asserted-by":"publisher","DOI":"10.1007\/s007660170013"},{"key":"e_1_2_11_52_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10270-007-0063-y"},{"key":"e_1_2_11_53_1","first-page":"211","article-title":"Finding the Pattern You Need: The Design Pattern Intent Ontology","volume":"4735","author":"Kampffmeyer H","year":"2007","journal-title":"MODELS"},{"key":"e_1_2_11_54_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-39800-4_2"},{"key":"e_1_2_11_55_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4615-5269-7"},{"key":"e_1_2_11_56_1","unstructured":"AlikacemE SahraouiHA.D\u00e9tection d'anomalies utilisant un langage de description de r\u00e8gle de qualit\u00e9.Proceedings of Langages et Mod\u00e8les \u00e0 Objets 2006;185\u2013200."},{"key":"e_1_2_11_57_1","doi-asserted-by":"crossref","unstructured":"CiupkeO.Automatic Detection of Design Problems in Object\u2010Oriented Reengineering.Proceedings of the Technology of Object\u2010Oriented Languages and Systems 1999;18\u201332.","DOI":"10.1109\/TOOLS.1999.787532"},{"key":"e_1_2_11_58_1","doi-asserted-by":"publisher","DOI":"10.1109\/STEP.2005.12"},{"key":"e_1_2_11_59_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.ins.2010.12.002"},{"key":"e_1_2_11_60_1","doi-asserted-by":"crossref","unstructured":"GilJ MamanI.Micro Patterns in Java Code.Proc. of the 20th conference on Object\u2010oriented programming systems languages and applications (OOPSLA) 2005;97\u2013116.","DOI":"10.1145\/1094811.1094819"},{"key":"e_1_2_11_61_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.112"},{"key":"e_1_2_11_62_1","unstructured":"Gu\u00e9h\u00e9neucYG JussienN.Using Explanations for Design Patterns Identification.IJCAI'01 Workshop on Modeling and Solving problems with constraints 2001;57\u201364."},{"key":"e_1_2_11_63_1","first-page":"191","article-title":"Adaptive Graph Pattern Matching for Model Transformations using Model\u2010sensitive Search Plans","volume":"152","author":"Varro G","year":"2005","journal-title":"International Workshop on Graph and Model Transformations"},{"key":"e_1_2_11_64_1","unstructured":"HorvathA VarroG VarroD.Generic search plans for matching advanced graph patterns.The 6th International GT\u2010VMT Workshop 2007."},{"key":"e_1_2_11_65_1","unstructured":"MARTE (Modeling and Analysis of Real\u2010Time and Embedded Systems) profile:http:\/\/www.omg.org\/omgmarte\/[4 April2011]."},{"key":"e_1_2_11_66_1","first-page":"345","volume-title":"Pattern Languages of Program Design","author":"Zimmer W","year":"1994"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.1145","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.1145","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,3,14]],"date-time":"2025-03-14T00:17:25Z","timestamp":1741911445000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.1145"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2011,11,11]]},"references-count":65,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2012,12]]}},"alternative-id":["10.1002\/spe.1145"],"URL":"https:\/\/doi.org\/10.1002\/spe.1145","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"type":"print","value":"0038-0644"},{"type":"electronic","value":"1097-024X"}],"subject":[],"published":{"date-parts":[[2011,11,11]]}}}