Generative Programming

This report describes the results of a one-day workshop on Generative Programming (GP) at ECOOP'01. The goal of the workshop was to discuss the state-of-the-art of generative programming, share experience, consolidate successful techniques, discuss the relation of GP to object-oriented programming and other emerging approaches such as Aspect-Oriented Programming or Multi-dimensional Decomposition, and identify open issues for future work. This report gives a summary of the workshop contributions, debates, and the identified future directions.

[1]  Don S. Batory,et al.  Software components in a data structure precompiler , 1992, Proceedings of 1993 15th International Conference on Software Engineering.

[2]  J. Kruschke,et al.  ALCOVE: an exemplar-based connectionist model of category learning. , 1992, Psychological review.

[3]  Yannis Smaragdakis,et al.  JTS: tools for implementing domain-specific languages , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[4]  J. Sachs Recognition memory for syntactic and semantic aspects of connected discourse , 1967 .

[5]  James M. Boyle,et al.  Program Reusability through Program Transformation , 1984, IEEE Transactions on Software Engineering.

[6]  David R. Musser,et al.  STL tutorial and reference guide , 2001 .

[7]  James W. Hooper,et al.  Software Reuse: Guidelines and Methods , 1991 .

[8]  Vijayan Sugumaran,et al.  A prototype domain modeling environment for reusable software architectures , 1994, Proceedings of 1994 3rd International Conference on Software Reuse.

[9]  Don Batory,et al.  Introductory P2 System Manual , 1994 .

[10]  Peter Freeman,et al.  Domain engineering for software reuse , 1988 .

[11]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[12]  Ulrich W. Eisenecker Generative Programming (GP) with C++ , 1997, JMLC.

[13]  Peter Wegner,et al.  Why interaction is more powerful than algorithms , 1997, CACM.

[14]  Douglas R. Smith,et al.  Research on Knowledge-Based Software Environments at Kestrel Institute , 1985, IEEE Transactions on Software Engineering.

[15]  Rubén Prieto-Díaz Implementing faceted classification for software reuse , 1991, CACM.

[16]  Yishai A. Feldman,et al.  Seven Layers of Knowledge Representation and Reasoning in Support of Software Development , 1992, IEEE Trans. Software Eng..

[17]  Rubén Prieto-Díaz,et al.  Software reusability , 1993 .

[18]  Allan Collins,et al.  A spreading-activation theory of semantic processing , 1975 .

[19]  Edwina L. Rissland,et al.  Cognitive Science: An Introduction , 1987 .

[20]  E. Rosch,et al.  Cognition and Categorization , 1980 .

[21]  Lucy M. Berlin When objects collide experiences with reusing multiple class hierarchies , 1990, OOPSLA/ECOOP '90.

[22]  Joseph A. Goguen,et al.  Institutions: abstract model theory for specification and programming , 1992, JACM.

[23]  Adele Goldberg,et al.  Succeeding With Objects: Decision Frameworks for Project Management , 1995 .

[24]  Oege de Moor,et al.  Transformation in intentional programming , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[25]  Hans-Erik Eriksson,et al.  UML toolkit , 1997 .

[26]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[27]  Todd L. Veldhuizen,et al.  Using C++ template metaprograms , 1996 .

[28]  Sholom Cohen,et al.  Object-oriented technology and domain analysis , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[29]  Donald E. Knuth,et al.  The TeXbook , 1984 .

[30]  Don S. Batory,et al.  GENESIS: An Extensible Database Management System , 1988, IEEE Trans. Software Eng..

[31]  Yannis Smaragdakis,et al.  DiSTiL: A Transformation Library for Data Structures , 1997, DSL.

[32]  Rubén Prieto Díaz,et al.  A software classification scheme , 1985 .

[33]  James O. Coplien,et al.  A generative development-process pattern language , 1995 .

[34]  Ira D. Baxter,et al.  Reverse engineering is reverse forward engineering , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[35]  Sholom Cohen,et al.  Application of Feature-Oriented Domain Analysis to the Army Movement Control Domain , 1992 .

[36]  Donald Sannella,et al.  Toward formal development of programs from algebraic specifications: Implementations revisited , 1987, TAPSOFT, Vol.1.

[37]  Trygve Reenskaug,et al.  Working with objects - the OOram software engineering method , 1995 .

[38]  Andrei P. Ershov,et al.  On the Essence of Compilation , 1977, Formal Description of Programming Concepts.

[39]  Ivar Jacobson,et al.  Software Reuse: Architecture, Process And Organization For Business Success , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[40]  Xiping Song,et al.  Systematic Integration of Design Methods , 1997, IEEE Softw..

[41]  Ruben Prieto-Diaz,et al.  Domain analysis for reusability , 1988 .

[42]  Martin S. Feather,et al.  A survey and classification of some program transformation approaches and techniques , 1987 .

[43]  John M. Favaro,et al.  FODAcom: an experience with domain analysis in the Italian telecom industry , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[44]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[45]  Theo D'Hondt,et al.  Aspect-Orientated Logic Meta Programming , 1999, Reflection.

[46]  Stephen Wolfram,et al.  Mathematica: a system for doing mathematics by computer (2nd ed.) , 1991 .

[47]  Paul C. Clements,et al.  A survey of architecture description languages , 1996, Proceedings of the 8th International Workshop on Software Specification and Design.

[48]  R. Goldblatt Topoi, the Categorial Analysis of Logic , 1979 .

[49]  James A. Hendler,et al.  Computing similarity in a reuse library system: an AI-based approach , 1992, TSEM.

[50]  Elaine Kant,et al.  Synthesis of mathematical-modeling software , 1993, IEEE Software.

[51]  Robert W. Krut Integrating 001 Tool Support Into the Feature-Oriented Domain Analysis Methodology. , 1993 .

[52]  Ivar Jacobson,et al.  Object-Oriented Software Engineering , 1991, TOOLS.

[53]  Ira D. Baxter,et al.  Design maintenance systems , 1991, CACM.

[54]  David Vandevoorde,et al.  C++ Templates , 2002 .

[55]  Wayne D. Gray,et al.  Basic objects in natural categories , 1976, Cognitive Psychology.

[56]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[57]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[58]  Roger Sessions COM and DCOM - Microsoft's vision for distributed objects , 1997 .

[59]  Peter Freeman,et al.  Classifying Software for Reusability , 1987, IEEE Software.

[60]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[61]  Martin Fowler,et al.  Analysis patterns - reusable object models , 1996, Addison-Wesley series in object-oriented software engineering.

[62]  A. Newell Unified Theories of Cognition , 1990 .

[63]  Todd L. Veldhuizen C++ Templates as Partial Evaluation , 1999, PEPM.

[64]  Larry L. Peterson,et al.  A dynamic network architecture , 1992, TOCS.

[65]  E. Rosch,et al.  Family resemblances: Studies in the internal structure of categories , 1975, Cognitive Psychology.

[66]  J. Hampton Polymorphous Concepts in Semantic Memory , 1979 .

[67]  Larry L. Peterson,et al.  RPC in the x-Kernel: evaluating new design techniques , 1989, SOSP '89.

[68]  Martin L. Griss,et al.  Integrating feature modeling with the RSEB , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[69]  Ira D. Baxter,et al.  Transformational maintenance by reuse of design histories , 1991 .

[70]  Crispin Cowan,et al.  Declarative specialization of object-oriented programs , 1997, OOPSLA '97.

[71]  Paul Clements,et al.  A Case Study in Successful Product Line Development , 1996 .

[72]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[73]  Arie van Deursen,et al.  Language Prototyping: An Algebraic Specification Approach , 1996, AMAST Series in Computing.

[74]  John R. Anderson The Architecture of Cognition , 1983 .

[75]  Gang Chen,et al.  Design wizards and visual programming environments for generators , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[76]  M. Barr,et al.  Toposes, Triples and Theories , 1984 .

[77]  John S. Heidemann,et al.  File-system development with stackable layers , 1994, TOCS.

[78]  Grady Booch,et al.  Essential COM , 1998 .

[79]  Thomas R. Gross,et al.  Code Composition as an Implementation Language for Compilers , 1997, DSL.

[80]  Don S. Batory,et al.  Prairie: A rule specification framework for query optimizers , 1995, Proceedings of the Eleventh International Conference on Data Engineering.

[81]  Ivar Jacobson,et al.  The object advantage - business process reengineering with object technology , 1994 .

[82]  Dudley Shapere,et al.  Scientific Theories and Their Domains , 1984 .

[83]  J. Craig Cleaveland,et al.  Building application generators , 1988, IEEE Software.

[84]  Urs Hölzle,et al.  Adaptive optimization for self: reconciling high performance with exploratory programming , 1994 .

[85]  Don S. Batory,et al.  Validating component compositions in software system generators , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[86]  J. M. Neighbors,et al.  Draco: a method for engineering reusable software systems , 1989 .

[87]  J. Fodor Psychology and Language. , 1970 .

[88]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[89]  Joseph A. Goguen,et al.  Parameterized programming and software architecture , 1996, Proceedings of Fourth IEEE International Conference on Software Reuse.

[90]  Rubén Prieto-Díaz,et al.  DARE: Domain analysis and reuse environment , 1998, Ann. Softw. Eng..

[91]  Ted J. Biggerstaff,et al.  The library scaling problem and the limits of concrete component reuse , 1994, Proceedings of 1994 3rd International Conference on Software Reuse.

[92]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[93]  Walter Mann,et al.  Correction to "Specification and Analysis of System Architecture Using Rapide" , 1995, IEEE Trans. Software Eng..

[94]  Dawson R. Engler,et al.  C: a language for high-level, efficient, and machine-independent dynamic code generation , 1995, POPL '96.

[95]  Patrick Borras,et al.  Centaur: the system , 1988, Software Development Environments.

[96]  Douglas R. Smith,et al.  KIDS: A Semiautomatic Program Development System , 1990, IEEE Trans. Software Eng..

[97]  Don S. Batory,et al.  Creating reference architectures: an example from avionics , 1995, SSR '95.

[98]  Berthold Hoffmann,et al.  Program Development by Specification and Transformation, The PROSPECTRA Methodology, Language Family, and System , 1993 .

[99]  Ralph Johnson Documenting frameworks using patterns , 1992, OOPSLA 1992.

[100]  Yannis Smaragdakis,et al.  Implementing reusable object-oriented components , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[101]  Edward E. Smith,et al.  Categories and concepts , 1984 .

[102]  Pattie Maes,et al.  Meta-Level Architectures and Reflection , 1988 .

[103]  Robert Balzer,et al.  A 15 Year Perspective on Automatic Programming , 1985, IEEE Transactions on Software Engineering.

[104]  Frank Buschmann,et al.  A system of patterns , 1995 .

[105]  Raghu V. Hudli,et al.  CORBA fundamentals and programming , 1996 .

[106]  E. Rosch Cognitive Representations of Semantic Categories. , 1975 .

[107]  Kyo Chul Kang,et al.  Feature-Oriented Domain Analysis (FODA) Feasibility Study , 1990 .

[108]  Robert Glück,et al.  An Automatic Program Generator for Multi-Level Specialization , 1997, LISP Symb. Comput..

[109]  Ted J. Biggerstaff,et al.  A perspective of generative reuse , 1998, Ann. Softw. Eng..

[110]  N. S. Zalman Making the Method Fit: An Industrial Experience in Adopting Feature-Oriented Domain Analysis (FODA) , 1996 .

[111]  Jeremy G. Siek,et al.  The Matrix Template Library: A Unifying Framework for Numerical Linear Algebra , 1998, ECOOP Workshops.

[112]  Martin Wirsing,et al.  Structured Algebraic Specifications: A Kernel Language , 1986, Theor. Comput. Sci..

[113]  Barbara Hayes-Roth,et al.  Overview of Teknowledge's domain-specific software architecture program , 1994, SOEN.

[114]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[115]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[116]  Pavol Návrat,et al.  A closer look at programming expertise: critical survey of some methodological issues , 1996, Inf. Softw. Technol..

[117]  James Milne Neighbors,et al.  Software construction using components , 1980 .

[118]  G. Arango Domain analysis: from art form to engineering discipline , 1989, IWSSD '89.

[119]  Krzysztof Czarnecki,et al.  A Model for Structuring User Documentation of Object-Oriented Frameworks Using Patterns and Hypertext , 1997, ECOOP.

[120]  J. Conklin Designing Organizational Memory: Preserving Intellectual Assets in a Knowledge Economy 1 , 2001 .

[121]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[122]  James R. Cordy,et al.  Practical metaprogramming , 1992, CASCON.

[123]  Richard Jüllig,et al.  Specware: Formal Support for Composing Software , 1995, MPC.

[124]  Andrew A. Berlin,et al.  Compiling scientific code using partial evaluation , 1990, Computer.

[125]  Robert McCartney Synthesizing Algorithms with Performance Constraints , 1987, AAAI.

[126]  Dirk Riehle Composite design patterns , 1997, OOPSLA '97.

[127]  Martin Fowler A Survey of Object Oriented Analysis and Design Methods , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[128]  Robert Glück,et al.  Generative Programming and Active Libraries , 1998, Generic Programming.

[129]  J. Fodor,et al.  The Language of Thought , 1980 .

[130]  Helmuth Partsch,et al.  Specification and Transformation of Programs - A Formal Approach to Software Development , 1990, Texts and Monographs in Computer Science.

[131]  Hassan Gomaa,et al.  An object-oriented domain analysis and modeling method for software reuse , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[132]  Don Batory,et al.  A programming language for writing domain-specific software system generators , 1996 .

[133]  Don S. Batory,et al.  The design and implementation of hierarchical software systems with reusable components , 1992, TSEM.

[134]  Thomas Reps,et al.  The Synthesizer Generator: A System for Constructing Language-Based Editors , 1988 .

[135]  Robert Paige,et al.  Viewing A Program Transformation System At Work , 1994, PLILP.

[136]  David Notkin,et al.  Using role components in implement collaboration-based designs , 1996, OOPSLA '96.

[137]  Robert Holibaugh,et al.  Joint Integrated Avionics Working Group (JIAWG) Object-Oriented Domain Analysis Method (JODA) , 1992 .

[138]  Hans-Dieter Ehrich,et al.  Specification of abstract data types , 1996 .

[139]  J. Craig Cleaveland Program Generators with XML and Java , 2001 .

[140]  Giorgio Bruno Model-based software engineering , 1994 .

[141]  Christopher W. Pidgeon,et al.  Software change through design maintenance , 1997, 1997 Proceedings International Conference on Software Maintenance.

[142]  Will Tracz,et al.  An implementation-oriented semantics for module composition , 2000 .

[143]  Don S. Batory,et al.  Implementing a Domain Model for Data Structures , 1992, Int. J. Softw. Eng. Knowl. Eng..

[144]  David S. Wile,et al.  Program developments: formal explanations of implementations , 1983, CACM.

[145]  Yannis Smaragdakis,et al.  Implementing Layered Designs with Mixin Layers , 1998, ECOOP.

[146]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[147]  Joseph Gil,et al.  Design Patterns and Language Design , 1998, Computer.

[148]  David Lorge Parnas,et al.  On the Design and Development of Program Families , 2001, IEEE Transactions on Software Engineering.

[149]  Dawson R. Engler,et al.  tcc: a system for fast, flexible, and high-level dynamic code generation , 1997, PLDI '97.

[150]  Andrei Alexandrescu,et al.  Modern C++ Design , 2001 .

[151]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[152]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[153]  Joseph A. Goguen,et al.  Reusing and Interconnecting Software Components , 1986, Computer.

[154]  Terence J. Harmer,et al.  The TAMPR Program Transformation System: Simplifying the Development of Numerical Software , 1997, SciTools.

[155]  Elaine Kant,et al.  Numerical options models without programming , 1997, Proceedings of the IEEE/IAFE 1997 Computational Intelligence for Financial Engineering (CIFEr).

[156]  E. Rosch ON THE INTERNAL STRUCTURE OF PERCEPTUAL AND SEMANTIC CATEGORIES1 , 1973 .

[157]  John M. Carroll,et al.  Design rationale: concepts, techniques, and use , 1996 .

[158]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[159]  Sandrine Blazy,et al.  Interprocedural analysis for program comprehension by specialization , 1996, WPC '96. 4th Workshop on Program Comprehension.

[160]  Sofoklis Efremidis On program transformations , 1994 .

[161]  Kyo Chul Kang,et al.  A Domain Analysis Bibliography , 1990 .

[162]  Edward Yourdon,et al.  Object-oriented analysis , 2012 .

[163]  Douglas R. Smith,et al.  Toward a Classification Approach to Design , 1996, AMAST.

[164]  C. Geertz,et al.  After the Fact , 1988 .

[165]  David Sudnow,et al.  Dead on arrival , 1967 .

[166]  Trygve Reenskaug,et al.  Working with objects , 1995 .

[167]  Charles Simonyi,et al.  The Death of Computer Languages, The Birth of Intentional Programming , 1995 .

[168]  Donald Sannella,et al.  Specifications in an Arbitrary Institution , 1988, Inf. Comput..

[169]  David Notkin,et al.  Role-oriented programming for software evolution , 1997 .

[170]  Guillermo Arango,et al.  Domain Analysis and Software Systems Modeling , 1991 .

[171]  Tiziana Margaria,et al.  The METAFrame'95 Environment , 1996, CAV.

[172]  D. Bolinger,et al.  语言要略 = Aspects of Language , 1968 .

[173]  Elliot Soloway,et al.  Delocalized Plans and Program Comprehension , 1986, IEEE Software.

[174]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[175]  Robert Paige,et al.  Finite Differencing of Computable Expressions , 1982, TOPL.

[176]  Dawson R. Engler,et al.  Incorporating Application Semantics and Control into Compilation , 1997, DSL.

[177]  Larry Rosenstein MacApp: first commercially successful framework , 1995 .

[178]  Will Tracz,et al.  Software development using domain-specific software architectures: CDRl A011—a curriculum module in the SEI style , 1995, SOEN.

[179]  David M. Weiss,et al.  Software Product-Line Engineering: A Family-Based Software Development Process , 1999 .

[180]  Chris Dollin,et al.  Object-oriented development: the fusion method , 1994 .

[181]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[182]  James Withey Investment Analysis of Software Assets for Product Lines. , 1996 .

[183]  Peter Wegner,et al.  Interactive , 2021, Encyclopedia of the UN Sustainable Development Goals.

[184]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[185]  Paul Clements,et al.  Features of architecture description lan-guages , 1995 .

[186]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[187]  R. Fateman,et al.  A System for Doing Mathematics by Computer. , 1992 .

[188]  Peter Lee,et al.  Lightweight Run-Time Code Generation , 1994, PEPM.

[189]  Grady Booch,et al.  Object-Oriented Analysis and Design with Applications , 1990 .

[190]  Ira D. Baxter,et al.  Mechanical Tool Support for High Integrity Software Development , 1998 .

[191]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[192]  Charles Simonyi,et al.  The Hungarian revolution , 1991 .

[193]  Don S. Batory,et al.  Composition Validation and Subjectivity in GenVoca Generators , 1997, IEEE Trans. Software Eng..

[194]  Simon Buckingham Shum,et al.  Negotiating the Construction and Reconstruction of Organisational Memories , 1997, J. Univers. Comput. Sci..

[195]  Robert L. Young,et al.  SciNapse: a problem-solving environment for partial differential equations , 1997 .

[196]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .