With the ongoing adoption of Domain-Specific Modeling (DSM) (Gray et al., 2007), models are emerging as first-class entities in many domains and play an increasingly significant role in every phase of software development (i.e., from system requirements analysis and design, to software implementation and maintenance). In the DSM context, whenever a software system needs to evolve, the models used to represent the system should evolve accordingly. For instance, system design models often need to be changed to adapt to new system requirements (Greenfield & Short, 2004). As an additional example, it is sometimes necessary to apply model refactoring (France et al., 2003) to optimize the internal structure of the implementation models (i.e., models used to generate implementation code through code generators). Furthermore, models used to control the deployment of a software system are occasionally scaled up for the purpose of improving performance (Sun et al., 2009a).
Although manual model evolution is often tedious and error-prone, automating complex model evolution tasks using model transformation technologies has become a popular practice (Gray et al., 2006). A number of executable model transformation languages (e.g., QVT (http://www.omg.org/cgi-bin/doc?ptc/2005-11-01, 2010), ATL (Jouault et al., 2008)) have been developed to enable users to specify model transformation rules, which take an input model and evolve it to produce an output model automatically.