Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Benestad AC, Anda B, Arisholm E (2009) Understanding software maintenance and evolution by analyzing individual changes: a literature review. J Softw Maint Evol Res Pract 21:349–378
Beck K (2000) Extreme programming explained: Embrace Change, Addison Wesley Longman, Reading, Mass
Beck K (2010) The inevitability of evolution. IEEE Software; Los Alamitos, CA: IEEE Computer Society, 27(4):28–29
Biggerstaff T (1994) The library scaling problem and the limits of concrete component reuse. In: Proceedings of the third international conference on software reuse: advances in software reusability, Rio de Janeiro, Brazil, 1–4 Nov 1994, pp 102–109
Buckley J, Mens T, Zenger M, Rashid A, Kniesel G (2003) Towards a taxonomy of software change. J Softw Maint Evol Res Pract 17(5):309–332
Boehm B (2006) A view of 20th and 21st century software engineering. ICSE’06, 20–28 May, Shanghai, China
Boehm B (2010) The changing nature of software evolution. IEEE Softw 27(4):26–28
Czarnecki K, Eisenecker U (2001) Generative programming: methods, tools and applications. Addison-Wesley, Boston
Chapin N, Hale J, Khan K, Ramil J, Than W-G (2001) Types of software evolution and software maintenance. J Softw Mainten Evol 13:3–30
Cheong YC, Jarzabek S (1999) Frame-based method for customizing generic software architectures. In: Proceedings of the fifth symposium on software reusability, SSR 1999, 21–23 May, Los Angeles, CA, USA, pp 103–112
Damaševičius R, Genutis M, Štuikys V (2004) Design of distributed generic embedded components. Inf Technol Control 32(3):61–65
Damaševičius R, Štuikys V (2008) Taxonomy of the fundamental concepts of metaprogramming. Inf Technol Control 37(2):124–132
Fischer G, Giaccardi E (2005) Meta-design: a framework for the future of end-user development. In: Lieberman H, Paternņ F, Wulf V (eds) End user development – empowering people to flexibly employ advanced information and communication technology. Kluwer Academic, Dordrecht
Fischer G, Giaccardi E, Ye Y, Sutcliffe AG, Mehandjiev N (2004) Meta-design: a manifesto for end-user development. CACM 47(9):33–37
Fricke E, Schulz AP (2005) Design for Changeability (DfC): principles to enable changes in systems throughout their entire lifecycle. Syst Eng 8(4):342–359, Wiley Periodicals Inc
Godfrey MW, German DM (2008) The past, present, and future of software evolution, http://plg.uwaterloo.ca/~migod/papers/2008/icsm08-fosm.pdf
Kiczales G, Lamping J, Mendhekar A, Maeda C, Videira Lopes C, Loingtier J-M, Irwin J (1997) Aspect-oriented programming. In: Proceedings of the European Conference on Object-Oriented Programming (ECOOP’1997). LNCS, vol 1241. Berlin: Springer-Verlag, pp 220–242
Ortiz A (2007) An introduction to metaprogramming. Linux J 158:6
Rajlich V (2006) Changing the paradigm of software engineering. Commun ACM 49(8):67–70
Reis GD, Järvi J (2005) What is generic programming? In: Proceedings of workshop on Library-Centric Software Design LCSD’05, workshop. San Diego (California), USA; October 2005. Note: As technical report 06–12 of Rensselaer Polytechnic Institute, Computer Science Department, pp 1–10
Štuikys V, Damaševičius R (2002) Taxonomy of the program transformation processes. Inf Technol Control 1(22):39–52
Štuikys V, Damaševičius R (2008) Development of generative learning objects using feature diagrams and generative techniques. Informat Edu 7(2):277–288
Štuikys V, Montvilas M, Damaševičius R (2009) Development of WEB component generators using one-stage metaprogramming. Inf Technol Control 38(2):108–118
Trujillo S, Batory DS, Díaz O (2007) Feature-oriented model driven development: a case study for portlets. In: Proceedings of 29th International Conference on Software Engineering (ICSE 2007), Minneapolis, MN, USA, 20–26 May 2007, pp 44–53
Veldhuizen TL (2006) Tradeoffs in metaprogramming. In: Proceedings of ACM SIGPLAN workshop on partial evaluation and semantics-based program manipulation, Charleston, SC, USA, pp 150–159
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
Copyright information
© 2013 Springer-Verlag London
About this chapter
Cite this chapter
Štuikys, V., Damaševičius, R. (2013). A Framework: How Can Heterogeneous Meta-Programs Be Further Generalized?. In: Meta-Programming and Model-Driven Meta-Program Development. Advanced Information and Knowledge Processing, vol 5. Springer, London. https://doi.org/10.1007/978-1-4471-4126-6_13
Download citation
DOI: https://doi.org/10.1007/978-1-4471-4126-6_13
Published:
Publisher Name: Springer, London
Print ISBN: 978-1-4471-4125-9
Online ISBN: 978-1-4471-4126-6
eBook Packages: Computer ScienceComputer Science (R0)