In Chap. 2, we discussed the fundamental concepts of programming and meta-programming. Knowing the meaning of the concepts through their definitions is important but not enough. It is just the first step to acquire knowledge in the field. The aim of this chapter is to extend that knowledge and to reconsider some software design principles as a background of meta-programming techniques. Here, by principles, we mean the known software construction principles as they are to be applied to meta-programming domain. We refer to them as preliminary principles, when we discuss the way on how to start acquiring knowledge in the field. We refer to them as fundamental principles, when we consider the background of meta-programming based on information hiding. We refer to the implementation techniques or mechanism, when we consider the conceptual description of how some principles are realized in order to implement the meta-programming paradigm.
[1]
Robertas Damasevicius,et al.
Scripting Language Open PROMOL and its Processor
,
2000,
Informatica.
[2]
D. L. Parnas,et al.
On the criteria to be used in decomposing systems into modules
,
1972,
Software Pioneers.
[3]
Daniel Hoffman,et al.
Commonality and Variability in Software Engineering
,
1998,
IEEE Softw..
[4]
Vytautas Štuikys,et al.
Exploration of Learning Object Ontologies Using Feature Diagrams
,
2008
.
[5]
Kyo Chul Kang,et al.
Feature-Oriented Domain Analysis (FODA) Feasibility Study
,
1990
.
[6]
P. Heymans,et al.
Separating variability concerns in a product line re-engineering project
,
2008,
EA@AOSD.
[7]
Gregor Kiczales,et al.
Aspect-oriented programming
,
1996,
CSUR.
[8]
Krzysztof Czarnecki,et al.
Feature models are views on ontologies
,
2006
.