Background. The goal of generative programming is to replace manual search, adaptation, and assembly of components with the automatic
generation of needed components on demand. Generative technology has been in practical use for decades (e.g., compiler development,
application generation, automatic configuration management, preprocessing, and meta-programming). However, developing new
domain-specific languages (DSLs), application generators, and component generators has been extremely hard, as it requires
being knowledgeable and experienced both in language design and compiler development. Recent developments such as XML technologies
and template meta-programming revived the interest in generative programming by making it more accessible to developers.