The Journal of Systems and Software 96 (2014) 172–193 Contents lists available at ScienceDirect The Journal of Systems and Software j our na l ho me page: www.elsevier.com/locate/jss Synthesizing interpreted domain-specific models to manage smart microgrids Mark Allison a, , Karl A. Morris b , Fábio M. Costa c , Peter J. Clarke b a School of Computer Science, Engineering, and Physics, University of Michigan-Flint, Flint, MI 48502, USA b School of Computing and Information Sciences, Florida International University, Miami, FL 33199, USA c Instituto de Informática, Universidade Federal de Goiás, CEP 74690-815 Goiânia, GO, Brazil a r t i c l e i n f o Article history: Received 23 June 2013 Received in revised form 31 January 2014 Accepted 4 June 2014 Available online 15 July 2014 Keywords: Domain-specific modeling languages Model of execution Microgrids a b s t r a c t The increase in prominence of model-driven software development (MDSD) has placed emphasis on the use of domain-specific modeling languages (DSMLs) during the development process. DSMLs allow for domain concepts to be conceptualized and represented at a high level of abstraction. Currently, most DSML models are converted into high-level languages (HLLs) through a series of model-to-model and/or model-to-text transformations before they are executed. An alternative approach for model execution is the interpretation of models directly without converting them into an HLL. These models are created using interpreted DSMLs (i-DSMLs) and realized using a semantic-rich execution engine or domain-specific virtual machine (DSVM). In this article we present an approach for model synthesis, the first stage of model interpretation, that separates the domain-specific knowledge (DSK) from the model of execution (MoE). Previous work on model synthesis tightly couples the DSK and MoE reducing the ability for implementations of the DSVM to be easily reused in other domains. To illustrate how our approach to model synthesis works for i-DSMLs, we have created MGridML, an i-DSML for energy management in smart microgrids, and an MGridVM prototype, the DSVM for MGridML. We evaluated our approach by performing experiments on the model synthesis aspect of MGridVM and comparing the results to a DSVM from the user-centric communication domain. © 2014 Elsevier Inc. All rights reserved. 1. Introduction Model-driven software development (MDSD) is a paradigm that is gaining much attention in the software development commu- nity. MDSD places models at the center of the development process and has the potential to improve productivity (Kelly and Tolvanen, 2008; Stahl et al., 2006). One aspect of MDSD that holds much potential is the use of domain-specific modeling languages (DSMLs) to specify applications for a given domain. The current approach to using DSMLs when developing applications in a given domain is to create a model of the application using the DSML, then trans- form the model into code in a high-level language, such as Java or C++, to be executed (Kelly and Tolvanen, 2008). This approach is very similar to that used for the text-based domain specific lan- guages (Fowler, 2010; Mernik et al., 2005). That is, converting DSML Corresponding author. Tel.: +1 954 918 2677. E-mail addresses: markalli@umflint.edu (M. Allison), kmorr007@cis.fiu.edu (K.A. Morris), fmc@inf.ufg.br (F.M. Costa), clarkep@cis.fiu.edu (P.J. Clarke). models to code may involve a series of model-to-model, model-to- text and text-to-text transformations. One alternative approach to transforming models into a high- level language prior to execution is interpreting the models directly using a specialized execution engine for the specific domain. DSMLs that support the direct execution of models are referred to as inter- preted DSMLs or i-DSMLs (Mernik, 2012, chp. 9). The interpretation of i-DSML models require a semantic-rich execution engine. We refer to the i-DSML execution engine as a domain-specific virtual machine (DSVM). Deng et al. (2008) describe the first manifesta- tion of a DSVM, the communication virtual machine (CVM), used to interpret models created using the communication modeling language (CML) (Wu et al., 2012). CML is used to specify appli- cations in the user-centric communication domain. CVM uses a four-layered architecture where each layer is responsible for reduc- ing the semantic gap between the user-defined model and the low-level services provided to CVM by underlying communication frameworks. The main layer in the DSVM responsible for determining the behavior of the application based on the semantics of i-DSML mod- els is the synthesis engine (SE). The SE performs model synthesis, http://dx.doi.org/10.1016/j.jss.2014.06.006 0164-1212/© 2014 Elsevier Inc. All rights reserved.