A Framework: How Can Heterogeneous Meta-Programs Be Further Generalized?

As it was learned before, a meta-program is a specific computer program that can be seen as a generalized entity because it generates other programs or program parts [Ort07]. We share the view to meta-programming as a program generalization/generation technique with Veldhuizen [Vel06] and many other researchers. On the other hand, meta-programming is not a homogeneous field as it was outlined in Chap. 2. In a wider context, currently meta-programming is understood and dealt with from slightly different perspectives (e.g. as frame-based programming [CJ99], aspect-oriented programming [KLM+97], generative programming [CE01], generic programming [RJ05a], feature-oriented programming [TBD07]). What is common for the approaches is that they seek for the same aim: to achieve higher productivity and quality of the process to develop a program. The approaches, however, differ in concepts, formalisms and applied techniques. That is why various generalization forms in the field are possible. Our approach to meta-programming, which we considered basically in Chaps. 3, 4, and 5, is based on the extension of the preprocessing concept using two languages at once in the structural programming manner.

[1]  Ariel Ortiz An introduction to metaprogramming , 2007 .

[2]  Tom Mens,et al.  Towards a taxonomy of software change , 2005, J. Softw. Maintenance Res. Pract..

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

[4]  Ned Chapin,et al.  Types of software evolution and software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[5]  Stan Jarzabek,et al.  Frame-based method for customizing generic software architectures , 1999, SSR '99.

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

[7]  Barry W. Boehm Perspectives [The changing nature of software evolution; The inevitability of evolution] , 2010, IEEE Softw..

[8]  Bente Anda,et al.  Understanding software maintenance and evolution by analyzing individual changes: a literature review , 2009 .

[9]  Barry Boehm,et al.  The Changing Nature of Software Evolution , 2010 .

[10]  Maria Francesca Costabile,et al.  End-User Development Empowering people to flexibly employ advanced information and communication technology , 2003 .

[11]  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.

[12]  Oscar Díaz,et al.  Feature Oriented Model Driven Development: A Case Study for Portlets , 2007, 29th International Conference on Software Engineering (ICSE'07).

[13]  Michael W. Godfrey,et al.  The past, present, and future of software evolution , 2008, 2008 Frontiers of Software Maintenance.

[14]  Vytautas Štuikys,et al.  DESIGN OF DISTRIBUTED GENERIC EMBEDDED COMPONENTS , 2004 .

[15]  Gerhard Fischer,et al.  Meta-design: A Framework for the Future of End-User Development , 2006, End User Development.

[16]  Barry Boehm,et al.  A view of 20th and 21st century software engineering , 2006, ICSE.

[17]  Gerhard Fischer,et al.  Meta-design , 2004, Commun. ACM.

[18]  Vytautas Štuikys,et al.  DEVELOPMENT OF WEB COMPONENT GENERATORS USING ONE-STAGE METAPROGRAMMING , 2009 .

[19]  Robertas Damasevicius,et al.  Development of Generative Learning Objects Using Feature Diagrams and Generative Techniques , 2008, Informatics Educ..

[20]  Armin P. Schulz,et al.  Design for changeability (DfC): Principles to enable changes in systems throughout their entire lifecycle , 2005 .

[21]  Todd L. Veldhuizen,et al.  Tradeoffs in metaprogramming , 2005, PEPM '06.

[22]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[23]  Vytautas Štuikys,et al.  TAXONOMY OF THE FUNDAMENTAL CONCEPTS OF METAPROGRAMMING , 2008 .

[24]  Václav Rajlich,et al.  Changing the paradigm of software engineering , 2006, CACM.