1 Introduction
Model Driven Development (MDD) is an emerging paradigm for software development that specifies programs in domain-specific languages (DSLs), encourages greater degrees of automation, and exploits standards [10] [11] [24]. MDD uses models to represent a program. A model is written in a DSL that specifies particular details of a program's design. As an individual model captures limited information, a program is often specified by several different models. A model can be derived from other models by transformations, and program synthesis is the process of transforming high-level models into executables (which are also models).