Domain Engineering: finding commonalities and variations in software families. Defining hot/cold spots of software families. The result is configuration know-how for a business domain.
Metaprogramming: building programs with programs. Includes meta-modelling, reflection and other techniques.
Code generators: Building engines which take templates, models and configuratins and produce some output.
Jim mentions in his forword something “ dedidedly unobject-oriented behind generative computing ”. He even sees a time “ beyond objects ” coming up. There could be some truth to it because current development paradigms show a multitude of technologies mixed (look at the J2EE web programming and EJB model which combines templates, scripts, generated database code etc.). Even more, some concepts like components do not have a representation in OO languages at all. And what can we say about all the meta-data now held in XML formats outside OO-languages?