I always try to have all recommended books available in our library. Also take a look at my special section there where I collect books which should be present at all times.
Stephen J.Mellor et.al., Executable UML. Tries to turn UML2.0 into a programming language as well. Adds executable expressions to UML diagrams. Decide for yourself if this is the way to go.
Harrington, Code Generation in action, also available as e-book. Covers a lot of different technologies. Uses Ruby and generates Java. http://www.codegeneration.net/cgia/ Provides source code as well. Chapter one (introduction to code generation) and chapter four (building simple generators) are free and required literature for this course.
Eisenecker/Cernecki, Generative Programming. The bible of GP. see also http://www.generativeprogramming.com
Cleaveland, Program Generators with XML and Java. Not so deep as Eisenecker et.al. but with a nice example of domain analysis.
Uwe Schöning, Ideen der Informatik, Grundlegende Modelle und Konzepte. Finally a book for all those which are mentally challanged by theoretical computer science (;-). Uwe Schöning wrote this downscaled version for people who need to understand the concepts but not the mathematical proofs etc. behind them. According to the book more and more computer science faculties also recognize that they have been teaching those advanced concepts for many years completely over the heads of the students by putting them too early in the study plan. In Ulm where Uwe Schöning teaches theoretical computer science they have introduced an introductory course at the undergraduate level and teach the full version now much later. Read Chapter 3: Grammatiken und Automaten for this course.
Paul Clements, Linda Northrop, Software Product Lines, Practices and Patterns. The bible of product line engineering.