{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:35:28Z","timestamp":1750307728967,"version":"3.41.0"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2009,4,1]],"date-time":"2009-04-01T00:00:00Z","timestamp":1238544000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2009,4]]},"abstract":"<jats:p>\n            In the design phase of software development, the designer must make many fundamental design decisions concerning the architecture of the system. Incorrect decisions are relatively easy and inexpensive to fix if caught during the design process, but the difficulty and cost rise significantly if problems are not found until after coding begins. Unfortunately, it is not always possible to find incorrect design decisions during the design phase. To reduce the cost of expensive corrections, it would be useful to have the ability to defer some design decisions as long as possible, even into the coding stage. Failing that, tool support for automating design changes would give more freedom to revisit and change these decisions when needed. This article shows how a design-pattern-based programming system based on\n            <jats:italic>generative design patterns<\/jats:italic>\n            can support the deferral of design decisions where possible, and automate changes where necessary. A generative design pattern is a parameterized pattern form that is capable of generating code for different versions of the underlying design pattern. We demonstrate these ideas in the context of a parallel application written with the CO\n            <jats:sub>2<\/jats:sub>\n            P\n            <jats:sub>3<\/jats:sub>\n            S pattern-based parallel programming system. We show that CO\n            <jats:sub>2<\/jats:sub>\n            P\n            <jats:sub>3<\/jats:sub>\n            S can defer the choice of execution architecture (shared-memory or distributed-memory), and can automate several changes to the application structure that would normally be daunting to tackle late in the development cycle. Although we have done this work with a pattern-based parallel programming system, it can be generalized to other domains.\n          <\/jats:p>","DOI":"10.1145\/1498926.1498927","type":"journal-article","created":{"date-parts":[[2009,4,15]],"date-time":"2009-04-15T13:37:07Z","timestamp":1239802627000},"page":"1-49","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["Deferring design pattern decisions and automating structural pattern changes using a design-pattern-based programming system"],"prefix":"10.1145","volume":"31","author":[{"given":"Steve","family":"MacDonald","sequence":"first","affiliation":[{"name":"University of Waterloo, ON, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Kai","family":"Tan","sequence":"additional","affiliation":[{"name":"University of Alberta, Edmonton, AL, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jonathan","family":"Schaeffer","sequence":"additional","affiliation":[{"name":"University of Alberta, Edmonton, AL, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Duane","family":"Szafron","sequence":"additional","affiliation":[{"name":"University of Alberta, Edmonton, AL, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2009,4,21]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"Patterns: Best Practices and Design Strategies","author":"Alur D.","year":"2003","unstructured":"Alur , D. , Crupi , J. , and Malks , D . 2003 . Core J2EE Patterns: Best Practices and Design Strategies , Second ed. Sun Microsystems Press . Alur, D., Crupi, J., and Malks, D. 2003. Core J2EE Patterns: Best Practices and Design Strategies, Second ed. Sun Microsystems Press."},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1109\/2.485843"},{"volume-title":"Proceedings of 7th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS'02)","author":"Anvik J.","key":"e_1_2_1_4_1","unstructured":"Anvik , J. , MacDonald , S. , Szafron , D. , Schaeffer , J. , Bromling , S. , and Tan , K . 2002. Generating parallel programs from the wavefront design pattern . In Proceedings of 7th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS'02) . Anvik, J., MacDonald, S., Szafron, D., Schaeffer, J., Bromling, S., and Tan, K. 2002. Generating parallel programs from the wavefront design pattern. In Proceedings of 7th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS'02)."},{"key":"e_1_2_1_5_1","unstructured":"Apache Jakarta Project. 2005. http:\/\/jakarta.apache.org\/velocity  Apache Jakarta Project. 2005. http:\/\/jakarta.apache.org\/velocity"},{"volume-title":"Proceedings of the 25th International Conference on Software Engineering. 352--362","author":"Baniassad E.","key":"e_1_2_1_6_1","unstructured":"Baniassad , E. , Murphy , G. , and Schwanninger , C . 2003. Design pattern rationale graphs: Linking design to source . In Proceedings of the 25th International Conference on Software Engineering. 352--362 . Baniassad, E., Murphy, G., and Schwanninger, C. 2003. Design pattern rationale graphs: Linking design to source. In Proceedings of the 25th International Conference on Software Engineering. 352--362."},{"key":"e_1_2_1_7_1","first-page":"18","article-title":"Design patterns as language constructs","volume":"11","author":"Bosch J.","year":"1998","unstructured":"Bosch , J. 1998 . Design patterns as language constructs . J. Obj.-Orient. Program. 11 , 2, 18 -- 32 . Bosch, J. 1998. Design patterns as language constructs. J. Obj.-Orient. Program. 11, 2, 18--32.","journal-title":"J. Obj.-Orient. Program."},{"volume-title":"Proceedings of the International Conference on Parallel Processing (ICPP'02)","author":"Bromling S.","key":"e_1_2_1_9_1","unstructured":"Bromling , S. , MacDonald , S. , Anvik , J. , Schaeffer , J. , Szafron , D. , and Tan , K . 2002. Pattern-based parallel programming . In Proceedings of the International Conference on Parallel Processing (ICPP'02) . 257--265. Bromling, S., MacDonald, S., Anvik, J., Schaeffer, J., Szafron, D., and Tan, K. 2002. Pattern-based parallel programming. In Proceedings of the International Conference on Parallel Processing (ICPP'02). 257--265."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/508386.508389"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.352.0151"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1007\/11573937_16"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/HICSS.2006.106"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2007.7"},{"key":"e_1_2_1_15_1","unstructured":"Chen J. 2004. RMA: A pattern--based J2EE development tool. M.S. thesis School of Computer Science University of Waterloo.  Chen J. 2004. RMA: A pattern--based J2EE development tool. M.S. thesis School of Computer Science University of Waterloo."},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the IBM Center for Advanced Studies Conference. 113--127","author":"Chen J.","year":"2005","unstructured":"Chen , J. and MacDonald , S. 2005 . RoadMapAssembler: A new pattern-based J2EE development tool . In Proceedings of the IBM Center for Advanced Studies Conference. 113--127 . Chen, J. and MacDonald, S. 2005. RoadMapAssembler: A new pattern-based J2EE development tool. In Proceedings of the IBM Center for Advanced Studies Conference. 113--127."},{"key":"e_1_2_1_17_1","volume-title":"Proceedings of the 2006 International Conference on Parallel and Distributed Processing Techniques and Applications. 17--23","author":"Chen J.","year":"2006","unstructured":"Chen , J. and MacDonald , S. 2006 . Exploiting roles and responsibilities to generate code in a distributed design-pattern-based programming system . In Proceedings of the 2006 International Conference on Parallel and Distributed Processing Techniques and Applications. 17--23 . Chen, J. and MacDonald, S. 2006. Exploiting roles and responsibilities to generate code in a distributed design-pattern-based programming system. In Proceedings of the 2006 International Conference on Parallel and Distributed Processing Techniques and Applications. 17--23."},{"volume-title":"Proceedings of the 9th International Workshop on High--Level Parallel Programming Models and Supportive Environments (HIPS'04)","author":"Dietz S.","key":"e_1_2_1_18_1","unstructured":"Dietz , S. , Chamberlain , B. , and Snyder , L . 2004. Abstractions for dynamic data distribution . In Proceedings of the 9th International Workshop on High--Level Parallel Programming Models and Supportive Environments (HIPS'04) . 42--51. Dietz, S., Chamberlain, B., and Snyder, L. 2004. Abstractions for dynamic data distribution. In Proceedings of the 9th International Workshop on High--Level Parallel Programming Models and Supportive Environments (HIPS'04). 42--51."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0053391"},{"key":"e_1_2_1_21_1","volume-title":"Design Patterns: Elements of Reusable Object--Oriented Software","author":"Gamma E.","year":"1994","unstructured":"Gamma , E. , Helm , R. , Johnson , R. , and Vlissides , J . 1994 . Design Patterns: Elements of Reusable Object--Oriented Software . Addison-Wesley . Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1994. Design Patterns: Elements of Reusable Object--Oriented Software. Addison-Wesley."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.5555\/207505"},{"key":"e_1_2_1_23_1","first-page":"243","article-title":"Building parallel applications using design patterns. In Advances in Software Engineering: Topics in Comprehension, Evolution and Evaluation. Springer--Verlag","volume":"12","author":"Goswami D.","year":"2001","unstructured":"Goswami , D. , Singh , A. , and Preiss , B. 2001 . Building parallel applications using design patterns. In Advances in Software Engineering: Topics in Comprehension, Evolution and Evaluation. Springer--Verlag , Chapter 12 , 243 -- 265 . Goswami, D., Singh, A., and Preiss, B. 2001. Building parallel applications using design patterns. In Advances in Software Engineering: Topics in Comprehension, Evolution and Evaluation. Springer--Verlag, Chapter 12, 243--265.","journal-title":"Chapter"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1006\/jpdc.2001.1809"},{"volume-title":"Proceedings of the 8th European Conference on Software Maintenance and Reengineering. 37--47","author":"Hammouda I.","key":"e_1_2_1_26_1","unstructured":"Hammouda , I. and Harsu , M . 2004. Documenting maintenance tasks using maintenance patterns . In Proceedings of the 8th European Conference on Software Maintenance and Reengineering. 37--47 . Hammouda, I. and Harsu, M. 2004. Documenting maintenance tasks using maintenance patterns. In Proceedings of the 8th European Conference on Software Maintenance and Reengineering. 37--47."},{"key":"e_1_2_1_27_1","first-page":"248","article-title":"A pattern-based J2EE application development environment","volume":"9","author":"Hammouda I.","year":"2002","unstructured":"Hammouda , I. and Koskimies , K. 2002 . A pattern-based J2EE application development environment . J. Nordic Comput. 9 , 3, 248 -- 260 . Hammouda, I. and Koskimies, K. 2002. A pattern-based J2EE application development environment. J. Nordic Comput. 9, 3, 248--260.","journal-title":"J. Nordic Comput."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.5555\/1025115.1025209"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582436"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/976270.976286"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.5555\/1025115.1025249"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/WICSA.2005.61"},{"key":"e_1_2_1_33_1","first-page":"22","article-title":"Designing reusable classes","volume":"1","author":"Johnson R.","year":"1988","unstructured":"Johnson , R. and Foote , B. 1988 . Designing reusable classes . Journal of Object-Oriented Programming 1 , 2, 22 -- 35 . Johnson, R. and Foote, B. 1988. Designing reusable classes. Journal of Object-Oriented Programming 1, 2, 22--35.","journal-title":"Journal of Object-Oriented Programming"},{"key":"e_1_2_1_34_1","volume-title":"Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP'01)","volume":"2072","author":"Kiczales G.","unstructured":"Kiczales , G. , Hilsdale , E. , Hugunin , J. , Kersten , M. , Palm , J. , and Griswold , W . 2001. An overview of AspectJ . In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP'01) . Lecture Notes in Computer Science , vol. 2072 . Springer--Verlag, 327--353. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., and Griswold, W. 2001. An overview of AspectJ. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP'01). Lecture Notes in Computer Science, vol. 2072. Springer--Verlag, 327--353."},{"key":"e_1_2_1_35_1","volume-title":"Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP97)","volume":"1241","author":"Kiczales G.","unstructured":"Kiczales , G. , Lamping , J. , Mendhekar , A. , Maeda , C. , Lopes , C. V. , Loingtier , J.-M. , and Irwin , J . 1997. Aspect-oriented programming . In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP97) . Lecture Notes in Computer Science , vol. 1241 . Springer-Verlag, 220--242. Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of the 11th European Conference on Object-Oriented Programming (ECOOP97). Lecture Notes in Computer Science, vol. 1241. Springer-Verlag, 220--242."},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.03.012"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/4434.865895"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-8191(02)00190-4"},{"volume-title":"Proceedings of the 5th USENIX Conference on Object-Oriented Technology and Systems (COOTS'99)","author":"MacDonald S.","key":"e_1_2_1_40_1","unstructured":"MacDonald , S. , Szafron , D. , and Schaeffer , J . 1999. Object-oriented pattern--based parallel programming with automatically generated frameworks . In Proceedings of the 5th USENIX Conference on Object-Oriented Technology and Systems (COOTS'99) . 29--43. MacDonald, S., Szafron, D., and Schaeffer, J. 1999. Object-oriented pattern--based parallel programming with automatically generated frameworks. In Proceedings of the 5th USENIX Conference on Object-Oriented Technology and Systems (COOTS'99). 29--43."},{"volume-title":"Proceedings of the 17th IEEE International Conference on Automated Software Engineering (ASE2002)","author":"MacDonald S.","key":"e_1_2_1_41_1","unstructured":"MacDonald , S. , Szafron , D. , Schaeffer , J. , Anvik , J. , Bromling , S. , and Tan , K . 2002. Generative design patterns . In Proceedings of the 17th IEEE International Conference on Automated Software Engineering (ASE2002) . 23--34. MacDonald, S., Szafron, D., Schaeffer, J., Anvik, J., Bromling, S., and Tan, K. 2002. Generative design patterns. In Proceedings of the 17th IEEE International Conference on Automated Software Engineering (ASE2002). 23--34."},{"key":"e_1_2_1_42_1","volume-title":"Proceedings of the 6th International Euro-Par Conference. Lecture Notes in Computer Science","volume":"1900","author":"MacDonald S.","unstructured":"MacDonald , S. , Szafron , D. , Schaeffer , J. , and Bromling , S . 2000. Generating parallel program frameworks from parallel design patterns . In Proceedings of the 6th International Euro-Par Conference. Lecture Notes in Computer Science , vol. 1900 . Springer--Verlag, 95--104. MacDonald, S., Szafron, D., Schaeffer, J., and Bromling, S. 2000. Generating parallel program frameworks from parallel design patterns. In Proceedings of the 6th International Euro-Par Conference. Lecture Notes in Computer Science, vol. 1900. Springer--Verlag, 95--104."},{"key":"e_1_2_1_43_1","unstructured":"Mattson T. Sanders B. and Massingill B. 2004. Patterns for Parallel Programming. Addison-Welsey.   Mattson T. Sanders B. and Massingill B. 2004. Patterns for Parallel Programming. Addison-Welsey."},{"volume-title":"Proceeding of the 16th Canadian Conference on Artificial Intelligence. 35--49","author":"McNaughton M.","key":"e_1_2_1_44_1","unstructured":"McNaughton , M. , Redford , J. , Schaeffer , J. , and Szafron , D . 2003. Pattern-based AI scripting using ScriptEase . In Proceeding of the 16th Canadian Conference on Artificial Intelligence. 35--49 . McNaughton, M., Redford, J., Schaeffer, J., and Szafron, D. 2003. Pattern-based AI scripting using ScriptEase. In Proceeding of the 16th Canadian Conference on Artificial Intelligence. 35--49."},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.parco.2006.06.008"},{"volume-title":"Proceedings of the 23rd International Conference on Software Engineering. 275--284","author":"Murphy G.","key":"e_1_2_1_46_1","unstructured":"Murphy , G. , Lai , A. , Walker , R. , and Robillard , M . 2001. Separating features in source code: An exploratory study . In Proceedings of the 23rd International Conference on Software Engineering. 275--284 . Murphy, G., Lai, A., Walker, R., and Robillard, M. 2001. Separating features in source code: An exploratory study. In Proceedings of the 23rd International Conference on Software Engineering. 275--284."},{"key":"e_1_2_1_47_1","unstructured":"Object Technology International Inc. 2006. Eclipse platform technical overview. http:\/\/www.eclipse.org\/articles\/Whitepaper-Platform-3.1\/eclipse-platform-whitepaper.html.  Object Technology International Inc. 2006. Eclipse platform technical overview. http:\/\/www.eclipse.org\/articles\/Whitepaper-Platform-3.1\/eclipse-platform-whitepaper.html."},{"key":"e_1_2_1_48_1","unstructured":"Pollack M. 2000. Code generation using JavaDoc. http:\/\/www.javaworld.com\/javaworld\/jw-0818-javadoc_p.html.  Pollack M. 2000. Code generation using JavaDoc. http:\/\/www.javaworld.com\/javaworld\/jw-0818-javadoc_p.html."},{"volume-title":"Seventh ed","author":"Schach S.","key":"e_1_2_1_49_1","unstructured":"Schach , S. 2007. Object-Oriented and Classical Software Engineering , Seventh ed . McGraw-Hill . Schach, S. 2007. Object-Oriented and Classical Software Engineering, Seventh ed. McGraw-Hill."},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1109\/88.242459"},{"key":"e_1_2_1_51_1","unstructured":"Schmidt D. Stal M. Rohnert H. and Buschmann F. 2000. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. Vol. 2. Wiley & Sons.   Schmidt D. Stal M. Rohnert H. and Buschmann F. 2000. Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects. Vol. 2. Wiley & Sons."},{"volume-title":"Proceedings of the 5th International Workshop on Graph Transformation and Visual Modeling Techniques. 57--68","author":"Siikarla M.","key":"e_1_2_1_52_1","unstructured":"Siikarla , M. and Syst\u00e4 , T . 2006. Transformational pattern system\u2014some assembly required . In Proceedings of the 5th International Workshop on Graph Transformation and Visual Modeling Techniques. 57--68 . Siikarla, M. and Syst\u00e4, T. 2006. Transformational pattern system\u2014some assembly required. In Proceedings of the 5th International Workshop on Graph Transformation and Visual Modeling Techniques. 57--68."},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1096-9128(199802)10:2<91::AID-CPE290>3.0.CO;2-G"},{"volume-title":"Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'96)","author":"Siu S.","key":"e_1_2_1_54_1","unstructured":"Siu , S. , Simone , M. D. , Goswami , D. , and Singh , A . 1996. Design patterns for parallel programming . In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'96) . 230--240. Siu, S., Simone, M. D., Goswami, D., and Singh, A. 1996. Design patterns for parallel programming. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'96). 230--240."},{"key":"e_1_2_1_55_1","volume-title":"MPI: The Complete Reference","author":"Snir M.","year":"1996","unstructured":"Snir , M. , Otto , S. , Hess-Lederman , S. , Walker , D. , and Dongarra , J . 1996 . MPI: The Complete Reference . MIT Press . Snir, M., Otto, S., Hess-Lederman, S., Walker, D., and Dongarra, J. 1996. MPI: The Complete Reference. MIT Press."},{"key":"e_1_2_1_56_1","unstructured":"Sun Microsystems Inc. 2001. Jini architectural overview. http:\/\/wwws.sun.com\/software\/jini\/whitepapers\/architecture.pdf.  Sun Microsystems Inc. 2001. Jini architectural overview. http:\/\/wwws.sun.com\/software\/jini\/whitepapers\/architecture.pdf."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/781498.781532"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0164-1212(01)00152-2"},{"volume-title":"Department of Information and Computing Sciences","author":"van Winsen P.","key":"e_1_2_1_60_1","unstructured":"van Winsen , P. 1996. (re)engineering with object-oriented design patterns. M.S. thesis , Department of Information and Computing Sciences , Utrecht University . van Winsen, P. 1996. (re)engineering with object-oriented design patterns. M.S. thesis, Department of Information and Computing Sciences, Utrecht University."},{"volume-title":"Proceedings of the Nordic Workshop on Software Development Tools and Techniques.","author":"Viljamaa A.","key":"e_1_2_1_61_1","unstructured":"Viljamaa , A. and Viljamaa , J . 2002. Creating framework specialization instructions for tool environments . In Proceedings of the Nordic Workshop on Software Development Tools and Techniques. Viljamaa, A. and Viljamaa, J. 2002. Creating framework specialization instructions for tool environments. In Proceedings of the Nordic Workshop on Software Development Tools and Techniques."},{"key":"e_1_2_1_62_1","volume-title":"Pattern Hatching: Design Patterns Applied","author":"Vlissides J.","year":"1998","unstructured":"Vlissides , J. 1998 . Pattern Hatching: Design Patterns Applied . Addison-Wesley . Vlissides, J. 1998. Pattern Hatching: Design Patterns Applied. Addison-Wesley."},{"key":"e_1_2_1_63_1","series-title":"Lecture Notes in Computer Science","volume-title":"Proceedings of the Second International Conference on Generative Programming and Component Engineering","author":"von Dincklage D.","unstructured":"von Dincklage , D. 2003. Making patterns explicit with metaprogramming . In Proceedings of the Second International Conference on Generative Programming and Component Engineering . Lecture Notes in Computer Science , vol. 2830 . Springer-Verlag , 287--306. von Dincklage, D. 2003. Making patterns explicit with metaprogramming. In Proceedings of the Second International Conference on Generative Programming and Component Engineering. Lecture Notes in Computer Science, vol. 2830. Springer-Verlag, 287--306."},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/127719.122750"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1498926.1498927","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1498926.1498927","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T13:38:39Z","timestamp":1750253919000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1498926.1498927"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2009,4]]},"references-count":58,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2009,4]]}},"alternative-id":["10.1145\/1498926.1498927"],"URL":"https:\/\/doi.org\/10.1145\/1498926.1498927","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2009,4]]},"assertion":[{"value":"2005-02-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2007-06-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2009-04-21","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}