<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Building MDE cloud services with DISTIL</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Carlos</forename><forename type="middle">Carrascal</forename><surname>Manzanares</surname></persName>
						</author>
						<author>
							<persName><forename type="first">Jesús</forename><forename type="middle">Sánchez</forename><surname>Cuadrado</surname></persName>
						</author>
						<author>
							<affiliation key="aff0">
								<orgName type="department">http://www</orgName>
								<orgName type="laboratory">Juan de Lara Modelling and Software Engineering Research Group</orgName>
							</affiliation>
						</author>
						<author>
							<affiliation key="aff1">
								<orgName type="department">Computer Science Department</orgName>
								<orgName type="institution">Universidad Autónoma de Madrid (Spain)</orgName>
							</affiliation>
						</author>
						<title level="a" type="main">Building MDE cloud services with DISTIL</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">ED87F4011B3DF70C5574593A29092C66</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T09:05+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Model-Driven Engineering</term>
					<term>Domain-Specific Languages</term>
					<term>Service-Oriented Programming</term>
					<term>REST services</term>
					<term>Cloud Computing</term>
					<term>Code Generation</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Model-Driven Engineering (MDE) techniques, like transformations, queries, and code generators, were devised for local, single-CPU architectures. However, the increasing complexity of the systems to be built and their high demands in terms of computation, memory and storage, requires more scalable and flexible MDE techniques, likely using services and the cloud. Nonetheless, the cost of developing MDE solutions on the cloud is high without proper automation mechanisms.</p><p>In order to alleviate this situation, we present DISTIL, a domain-specific language to describe MDE services, which is able to generate (NoSQL-based) respositories for the artefacts of interest, and skeletons for (single or composite) services, ready to be deployed in Heroku. We illustrate the approach through the construction of a repository and a set of cloud-based services for bent ō reusable transformation components.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>The development of a Model-Driven Engineering (MDE) solution involves dealing with artifacts of different kinds and their relationships. The most common approach is to store artifacts using local folders and projects, for instance, using the infrastructure of the Eclipse plataform. In this approach, computations also occur in the local machine. This has several shortcomings, such as limited reuse opportunities, scalability problems and reduced flexibility.</p><p>Instead, advanced solutions, aiming to tackle the challenges of scalability and flexibility raised by today's complex systems <ref type="bibr" target="#b13">[14]</ref>, require scalable database storage, with retrieval strategies of different nature, ranging from simple, tag-based searchs to complex queries <ref type="bibr" target="#b20">[21]</ref>, and the scalable execution of model management operations such as model transformations, or code generation.</p><p>In this setting, cloud computing is an appealing approach to build advanced solutions, with scalability up-front <ref type="bibr" target="#b7">[8]</ref>. While there are many service providers, the entry level to develop a cloud-based service is high, specially for research prototypes. Thus, proposals to facilitate the development of cloud-based MDE tools are needed to increase its adoption, both within the MDE community but notably by other software engineering communities.</p><p>In this work we present our first results towards addressing this issue. Our approach is based on a domain-specific language intended to facilitate the specification of MDE services. The language, named DISTIL (for MDE service SpecificaTIon Language), permits the specification of the structure of the repository for storing the MDE artifacts, the basic services required for them (like upload, download or search), as well as more advanced user-defined services, their (parallel or sequential) composition, and their triggering conditions.</p><p>DISTIL is accompanied with a set of code generators able to synthesize the repository structure and persitence services, to generate support for basic (REST) services for the defined artifacts and skeletons for the user-defined services, and an HTML web client interface for them. DISTIL uses by default MongoDB <ref type="bibr" target="#b4">[5]</ref> for the persistence, and the Spark Java framework <ref type="foot" target="#foot_0">1</ref> as the support for the REST services. The generated elements are included in a project ready to be deployed in the Heroku cloud platform <ref type="bibr" target="#b10">[11]</ref>. This way, using DISTIL, the developer is freed from the technical details of the many technologies involved, and typically he only needs to provide the functionality (in Java) for the user-defined services. For this purpose, the DISTIL development environment (an Eclipse plugin) has a smooth integration with the Java IDE. We illustrate the approach by defining a set of cloud services for reusable model transformation components developed with bent ō <ref type="bibr" target="#b16">[17]</ref>.</p><p>The rest of the paper is organized as follows. Section II introduces a running example that will be used in Section III to explain the main concepts of the DISTIL language. Section IV describes its tool support, Section V compares with related research, and Section VI finishes with the conclusions and plans for future work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. RUNNING EXAMPLE</head><p>We first start by proposing a motivating scenario, which we then solve using DISTIL.</p><p>Assume we would like to build a repository for reusable, generic transformation components built with bent ō <ref type="bibr" target="#b16">[17]</ref>. In bent ō, a basic reusable transformation component includes one or more concepts and a transformation template (a regular ATL transformation). A concept is similar to a meta-model, but it describes the minimal structural requirements that a concrete meta-model must fulfil for the reusable transformation to become applicable to it. When the component is used, the concept needs to be bound to a concrete meta-model, and then the bent ō engine rewrites the transformation template, so that it gets adapted for the particular meta-model.</p><p>In practice, a component developer is interested in uploading components, and checking their correctness, for example performing a static type-checking of the transformation <ref type="bibr" target="#b17">[18]</ref> or obtaining some metrics about the transformation and the found errors. A reuser might be interested in retrieving components using two main search strategies: (1) finding components via tag search, and (2) retrieving components whose concept(s) matches a given concrete meta-model. This process could be integrated in the IDE or accessible via a web interface. Thus, the repository should be accessible via a REST API to enable different user interfaces.</p><p>In previous works <ref type="bibr" target="#b18">[19]</ref> we described the packaging mechanism of bent ō components. It includes a manifest file describing the artefacts of the component, one or more .ecore files implementing the component concepts and an ATL transformation template. These elements are packaged into a zip file to ease distribution.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. DISTIL: AN MDE SERVICE SPECIFICATION LANGUAGE</head><p>The DISTIL language permits describing both the Artifacts and the Services of interest. An excerpt of its meta-model is shown in Fig. <ref type="figure" target="#fig_0">1</ref>.</p><p>By default, DISTIL uses MongoDB as the underlying database system, and hence the Root class contains the URI of the database (but providing a value is not mandatory). A DISTIL specification is made of two parts. On the one hand, a description of the structure of the artifacts of interest (using classes Artifact and Entity) and their associated basic services. On the other hand, a declaration of the inputs and outputs of extra user-defined services (subclasses of Service).</p><p>An Artifact is an element to be stored in the repository. Its definition triggers the creation of the corresponding database structure, and hence a MongoDB collection is created for every artifact. An Artifact is described by an extension, a format, a set of basic services to be generated, and a set of attributes. Attributes may be of primitive type (class Primitive), references to Entities (class Reference) or to other Artifacts (class ArtifactID). In MongoDB, each stored artifact (each document) receives a String identifier. Therefore, while in the DISTIL specification ArtifactID models a reference to another artifact, in the generated code, the navigation is done through such string identifiers. Entities are similar to Artifacts, but are used to factor out commonalities of Artifacts, and hence they do not generate a separate collection in the database. The required attribute in Primitive attributes is used to indicate whether such attribute will be required in the requests to the generated upload and update services.</p><p>For each Artifact DISTIL provides complete support for basic services: upload, download, update, read, readAll, search and delete (see the ServiceEnum enumerate type). However, new user-defined services can be described through subclasses of Service. On the one hand, SimpleServices receive Artifacts or Entities as input and output. While services can be called on demand, it is also possible to specify when they should automatically be executed, for example when some basic service is invoked for an Artifact. On the other hand, MultiServices are used to compose (in sequence or parallel) several (composed or simple) services. The language includes validations checking the compatibility of the outputs/inputs of services. For inputs and outputs it is possible to specify required values for some of their attributes. As we will see in next section, DISTIL creates both REST APIs and HTML front-ends for the specified services (both basic and user-defined).</p><p>Listing 1 shows the DISTIL specification for the running example. The listing declares an Artifact for storing bent ō components in lines 1-8. The Artifact declares in line 2 the extension (.bentoz), format (zip), and requires all basic services. There are several built-in formats, and for some of them automated injectors and extractors can be made available (e.g., for zip we automatically generate packing and unpacking facilities). Then, in lines 4-7 defines the structure of a component, which has the input and output concepts, the ATL transformations it encapsulates, and the tags. We use the id prefix to indicate a reference to another artifact (e.g., in lines 4-7). The primitive attributes (tags in this case) are used to enable the search service. Notably, for string attributes our implementation of this service is able to look for synomyms, as it uses Wordnet <ref type="bibr" target="#b14">[15]</ref>, a lexical database for the English language.</p><p>The listing also declares artefacts for storing the ATL transformation (ATLTrafo, lines 10-15) and the metamodels/concepts (MetaModel, lines <ref type="bibr" target="#b16">[17]</ref><ref type="bibr" target="#b17">[18]</ref><ref type="bibr" target="#b18">[19]</ref><ref type="bibr" target="#b19">[20]</ref><ref type="bibr" target="#b20">[21]</ref><ref type="bibr">[22]</ref>. It also declares an Artifact for models (Model, lines 24-28), because it is used by other user-defined services. The listing declares a multi-service Analyse (lines 31-34), which runs in sequence the simple services TypeCheck and Metrics when a bent ō component is uploaded or updated. Both services receive the bent ō component as input. TypeCheck (line 37) is a simple service, whose goal is to statically analyse the transformation <ref type="bibr" target="#b17">[18]</ref> and outputs a model reporting the problems found. Metrics (lines 40-43) is a service calculating some transformation and error metrics, which also takes as input the output of the TypeCheck service.</p><p>Please note that we declare constraints on the properties of the allowed input and outputs of these services. This way, we declare that the output artifact of TypeCheck has type.uri equal to "http://prob.ecore". In this case, this indicates the meta-model the model is an instance of. Finally, SemanticSearch is a service that does not define a trigger, and hence has to be invoked on demand. Its input is a meta-model and its output is a collection of bent ō components whose concepts are structurally close to such meta-model. As we will see in next section, the DISTIL description of user-defined services enables the generation of supporting Java code, which the designer needs to fill with the appropriate behaviour (calculation of metrics, type checking, etc).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. ARCHITECTURE AND TOOL SUPPORT</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. Architecture</head><p>We have built a code generator that, given a DISTIL specification, synthesizes the needed repository structure, the full implementation of the basic services, the skeleton of user-defined services, and prepares the generated code in a project ready to be deployed on Heroku. The latter includes the needed dependencies, a pom.xml file for compiling the code using Maven (https://maven.apache.org/), and some configuration files for the execution in Heroku. The generated code uses the Spark framework as the support for the generated REST services, and MongoDB for the storage. However, the generated code facilitates changing the database engine. In a first step, the MDE expert interacts with the DISTIL IDE. As we have seen, he should build a DISTIL specification. The IDE generates Java code (label 2), and the engineer has typically to fill some functionality holes for the user-defined services. The details of the IDE and its ability to integrate DISTIL programs with Java will be explained in the next subsection. Then, the IDE (label 3) can package the different artifacts to be uploaded into Heroku. By default, the generated services contain the REST services for the basic and user defined services, an HTML frontend (for which Freemarker is used) and a MongoDB database. This way, the generated services can be used by humans, or be integrated into client applications. The REST services manage the different artifacts using the JSON format.</p><p>The generated code from a DISTIL specification extends a manually created service kernel. The scheme of the generated code is shown in Fig. <ref type="figure" target="#fig_3">3</ref>. For each Artifact (e.g., ATLTrafo), the generator synthesizes a Java package (atltrafoServices), which contain both necessary classes to create the REST API (package atltrafoServices.basic and class ATLTrafoJson), and an automatically generated HTML web client (package atl-trafoServices.htmlCover and class CustomATLTrafoHtml), and for the persistency (class ATLTrafo.java). Then, one class for each userdefined service is also generated (in package service, not shown in the figure). This generation scheme facilitates the extension of the generated code with new features. For example, it is to add features to the HTML client by modifying the methods in class CustomATLTrafoHML. To give an idea of the size of our framework, the kernel has over 1200 Lines of Code (LOC) in 32 Java classes. The automatically generated Java code for the example amounts to 2100 LOC in 47 Java classes, and the code generator has over 3100 LOC in 22 xtend files. Typically, given a DISTIL program, the engineer would need to fill some functionality "holes" in the generated classes. Next subsection describes our tool support to make this process smooth.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. The DISTIL development environment</head><p>We have built an Eclipse plugin aiming at providing a tight and seamless integration of DISTIL with the generated Java code. The tool is freely available at http://miso.es/tools/distil. html.</p><p>One of the tool design goals is to facilitate the completion of the generated code for the user-defined services using Java. A screenshot of the tool is shown in Fig. <ref type="figure" target="#fig_4">4</ref>. The language editor (label 1 in the figure) has been developed using Xtext <ref type="bibr" target="#b2">[3]</ref>, and enables the following features:</p><p>1) Hyperlinking the Artifact and Service names with the generated Java classes. The Java classes contain "holes" where the user can provide extra functionality for the services, which are marked as "TO-DOs".</p><p>2) The DISTIL editor gives warnings if any of such "TO-DOs" for any declared Artifact or Service remains. One such warning is shown in the Figure (label 2), and we provide a quickfix with an hyperlink to the corresponding Java file (label 3). In the package explorer view of the Figure <ref type="figure" target="#fig_4">(label 4</ref>), we can see that the DISTIL IDE has created services for every Artifact and Service defined, following the scheme explained in previous section.</p><p>Fig. <ref type="figure">5</ref> shows how by hovering over the Artifact name, the engineer is offered the possibility to navigate to the Java classes which might need to be extended by hand. The code generator respects the manually written code in the Java files, so that it does not get overwritten. Fig. <ref type="figure">5</ref>: Hyperlinking DISTIL specifications and generated Java code Fig. <ref type="figure" target="#fig_5">6</ref> shows the search facility of the generated web interface, running after it has been deployed in Heroku. It can be noted that the interface permits search using synonyms. The running example, is available at https://miso-distil-bento. herokuapp.com/.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>V. RELATED WORK</head><p>One of the earliest work dealing with the servitization of model operation is ModelBus <ref type="bibr" target="#b19">[20]</ref>. This was a tool integration technology which built upon web wervices, following a SOA approach. ModelBus featured a model repository and facilitates the orchestration of modeling services. However, it lacked dedicated languages to describe both the repository structure or the service integration.</p><p>With the advent of cloud technology, in <ref type="bibr" target="#b3">[4]</ref> the authors introduced the notion of Modeling as a Service (MaaS) as a way to provide MDE services from the cloud, analysing the applications of such idea. Approaches to realize this idea have emerged over the years. Some of them focus on the extensible definition of repositories for MDE artifacts. In this category, ReMoDD <ref type="bibr" target="#b9">[10]</ref> is based on general-purpose content management systems, like Drupal. On the other hand, others like MORSE <ref type="bibr" target="#b11">[12]</ref>, have an explicit meta-model to adapt to the specific artifact to be stored. MORSE is able to store models and meta-models and provides version control. Another related approach is MDEForge <ref type="bibr" target="#b1">[2]</ref>, which is perhaps the closest to our approach (http://mdeforge.org). MDEForge is an extensible, generic respository to store MDE artifacts, and provide services for them. MDEForge is extensible, as it allows adding new kinds of artifacts and services. However, while the previous approaches provide at most a meta-model to customize the storage part, we provide a DSL and rich tool support for both storage and service definition, including code generation and deployment.</p><p>Other approaches focus on providing specific MDE services. For example, AToMPM <ref type="bibr" target="#b5">[6]</ref> offers a complete cloud-based modelling environment, while Hypersonic <ref type="bibr" target="#b0">[1]</ref> is a cloud-based tool to perform model analysis. However, these approaches are specific for a certain task (modelling, analysis), while we provide a DSL to specify MDE cloud services.</p><p>Service oriented programming languages, like Jolie <ref type="bibr" target="#b15">[16]</ref> provide primitives to define and orchestrate services. Instead, we opted by a high-level DSL, and a code generation approach. However, in the future we aim to extend DISTIL with more sophisticated service orchestration primitives.</p><p>In <ref type="bibr" target="#b6">[7]</ref>, an approach called EMF-REST to an EMF model as a REST API is presented. This allows basic model management operations to be performed remotely. Our notion of artifact is coarser grained, and thus we do not automatically generate access facilities to individual elements. Instead, services generated by EMF-REST could be manually integrated into DISTIL generated code. Our approach to describe services is somehow similar to Apache Ant (http://ant.apache.org/). In <ref type="bibr" target="#b12">[13]</ref>, Ant was extended with model management tasks for e.g., model validation, transformation or merging. However, these are not executed in the cloud, but locally.</p><p>Hence, altogether, the contribution of this work is a DSL to describe both the structure of the MDE repository and the associated services, supported by a generative framework.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. CONCLUSIONS AND FUTURE WORK</head><p>This paper has presented DISTIL, a domain-specific language for specifying MDE services, to be deployed in the cloud. The language permits generating No-SQL based persitence services for the artifacts of interest, as well as skeletons for user-defined services. The tool is tightly integrated with the Java IDE, to facilitate the addition of functionality to the service skeletons, and generates ready-to-deploy projects for Heroku.</p><p>In the future, we would like to provide support for other cloud systems, in addition to Heroku, and enable the definition of policies for scaling, like those of CloudMF <ref type="bibr" target="#b8">[9]</ref>. We are also improving tool support, extending DISTIL with more sophisticated support for service definition and composition (like exception handling, compensation actions, transactions) and using it for more advanced case studies.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 :</head><label>1</label><figDesc>Fig. 1: DISTIL meta-model excerpt.</figDesc><graphic coords="2,48.96,50.54,514.10,217.67" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>1</head><label></label><figDesc>Artifact Bento [ 2 extension .bentoz format ZIP services : all 3 Model [with type.uri="http://prob.ecore"] 38 } 39 40 Service Metrics { 41 input: Model [with type.uri="http://prob.ecore"] 42 output: Model [with type.uri="http://mtr.ecore"] 43 } 44 45 Service SemanticSearch { 46 input : MetaModel 47 output : many Bento 48 } Listing 1: DISTIL specification for the running example</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig. 2 :</head><label>2</label><figDesc>Fig. 2: Architecture of the solution and process for creating cloud-based MDE services with DISTIL</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 3 :</head><label>3</label><figDesc>Fig. 3: Structure of the generated code</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Fig. 4 :</head><label>4</label><figDesc>Fig. 4: The DISTIL development environment.</figDesc><graphic coords="5,100.37,50.54,411.27,466.76" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Fig. 6 :</head><label>6</label><figDesc>Fig. 6: The generated web interface for the defined Heroku cloud services.</figDesc><graphic coords="6,51.12,50.54,246.75,181.05" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://sparkjava.com/</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>ACKNOWLEDGEMENTS</head><p>Work supported by the Spanish Ministry of Economy and Competitivity (TIN2011-24139, TIN2014-52129-R), the EU commission (FP7-ICT-2013-10, #611125) and the Community of Madrid (S2013/ICE-3006)</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Hypersonic -model analysis as a service</title>
		<author>
			<persName><forename type="first">V</forename><surname>Acretoaie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Störrle</surname></persName>
		</author>
		<ptr target="CEUR-WS.org" />
	</analytic>
	<monogr>
		<title level="m">Joint Proceedings of MODELS 2014 Poster Session and the ACM Student Research Competition</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">1258</biblScope>
			<biblScope unit="page" from="1" to="5" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">MDEForge: an extensible web-based modeling platform</title>
		<author>
			<persName><forename type="first">F</forename><surname>Basciani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Rocco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">D</forename><surname>Ruscio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">D</forename><surname>Salle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Iovino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Pierantonio</surname></persName>
		</author>
		<ptr target="CEUR-WS.org" />
	</analytic>
	<monogr>
		<title level="m">CloudMDE, satellite event of MoDELS</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">1242</biblScope>
			<biblScope unit="page" from="66" to="75" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Implementing Domain-Specific Languages with Xtext and Xtend</title>
		<author>
			<persName><forename type="first">L</forename><surname>Bettini</surname></persName>
		</author>
		<ptr target="https://eclipse.org/Xtext/" />
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>Packt Publishing</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Combining Model-Driven Engineering and Cloud Computing</title>
		<author>
			<persName><forename type="first">H</forename><surname>Brunelière</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cabot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Jouault</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">MDA4ServiceCloud, satellite event of ECMFA</title>
				<imprint>
			<date type="published" when="2010-06">June 2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">MongoDB: The Definitive Guide</title>
		<author>
			<persName><forename type="first">K</forename><surname>Chodorow</surname></persName>
		</author>
		<ptr target="https://www.mongodb.org/" />
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>O&apos;Reilly Media</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">A cloud architecture for an extensible multiparadigm modeling environment</title>
		<author>
			<persName><forename type="first">J</forename><surname>Corley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Syriani</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Joint Proceedings of MODELS 2014 Poster Session and the ACM Student Research Competition</title>
		<title level="s">CEUR Workshop Proceedings</title>
		<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">1258</biblScope>
			<biblScope unit="page" from="6" to="10" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">H</forename><surname>Ed-Douibi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L C</forename><surname>Izquierdo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Gómez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Tisi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cabot</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1504.03498</idno>
		<title level="m">EMF-REST: Generation of RESTful APIs from Models</title>
				<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Cloud Computing: Concepts, Technology &amp; Architecture</title>
		<author>
			<persName><forename type="first">T</forename><surname>Erl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Puttini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Mahmood</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>Prentice Hall</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">CloudMF: Applying MDE to Tame the Complexity of Managing Multi-Cloud Applications</title>
		<author>
			<persName><forename type="first">N</forename><surname>Ferry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Song</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rossini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Chauvel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Solberg</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">7th IEEE/ACM International Conference on Utility and Cloud Computing</title>
				<editor>
			<persName><forename type="first">R</forename><surname>Bilof</surname></persName>
		</editor>
		<meeting><address><addrLine>UCC</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Comp. Soc</publisher>
			<date type="published" when="2014">2014. 2014</date>
			<biblScope unit="page" from="269" to="277" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Repository for model driven development (ReMoDD)</title>
		<author>
			<persName><forename type="first">R</forename><surname>France</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Bieman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">H C</forename><surname>Cheng</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2006 International Conference on Models in Software Engineering, MoDELS&apos;06</title>
				<meeting>the 2006 International Conference on Models in Software Engineering, MoDELS&apos;06<address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="311" to="317" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">Heroku Cloud Application Development</title>
		<author>
			<persName><forename type="first">A</forename><surname>Hanjura</surname></persName>
		</author>
		<ptr target="http://heroku.com" />
		<imprint>
			<date type="published" when="2014">2014</date>
			<publisher>Packt Publishing</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Automating the management and versioning of service models at runtime to support service monitoring</title>
		<author>
			<persName><forename type="first">T</forename><surname>Holmes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Zdun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Dustdar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">16th IEEE International Enterprise Distributed Object Computing Conference</title>
				<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2012">2012. 2012</date>
			<biblScope unit="page" from="211" to="218" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A framework for composing modular and interoperable model management tasks</title>
		<author>
			<persName><forename type="first">D</forename><surname>Kolovos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Paige</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Polack</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model-Driven Tool and Process Integration Workshop</title>
				<imprint>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="79" to="90" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">A research roadmap towards achieving scalability in model driven engineering</title>
		<author>
			<persName><forename type="first">D</forename><surname>Kolovos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Rose</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Matragkas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Paige</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Guerra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">S</forename><surname>Cuadrado</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">De</forename><surname>Lara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Ráth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Varró</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Tisi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Cabot</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">BigMDE, satellite event of STAF</title>
				<meeting><address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="page">10</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Wordnet: A lexical database for english</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">A</forename><surname>Miller</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<biblScope unit="volume">38</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page" from="39" to="41" />
			<date type="published" when="1995">1995</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Service-oriented programming with jolie</title>
		<author>
			<persName><forename type="first">F</forename><surname>Montesi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Guidi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Zavattaro</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Web Services Foundations</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="81" to="107" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">A component model for model transformations</title>
		<author>
			<persName><forename type="first">J</forename><surname>Sánchez Cuadrado</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Guerra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>De Lara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. on Soft. Eng</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<biblScope unit="issue">11</biblScope>
			<biblScope unit="page" from="1042" to="1060" />
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Uncovering errors in ATL model transformations using static analysis and constraint solving</title>
		<author>
			<persName><forename type="first">J</forename><surname>Sánchez Cuadrado</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Guerra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>De Lara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">25th IEEE International Symposium on Software Reliability Engineering, ISSRE 2014</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="34" to="44" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Reusable model transformation components with bentō</title>
		<author>
			<persName><forename type="first">J</forename><surname>Sánchez Cuadrado</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Guerra</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>De Lara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of ICMT&apos;15</title>
				<meeting>ICMT&apos;15</meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Collaborative software engineering on large-scale models: requirements and experience in modelbus</title>
		<author>
			<persName><forename type="first">P</forename><surname>Sriplakich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Blanc</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Gervais</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2008 ACM Symposium on Applied Computing (SAC)</title>
				<meeting>the 2008 ACM Symposium on Applied Computing (SAC)</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="674" to="681" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Incquery-d: A distributed incremental model query framework in the cloud</title>
		<author>
			<persName><forename type="first">G</forename><surname>Szárnyas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Izsó</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Ráth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Harmath</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Bergmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Varró</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">MODELS</title>
		<imprint>
			<biblScope unit="volume">8767</biblScope>
			<biblScope unit="page" from="653" to="669" />
			<date type="published" when="2014">2014</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
	<note>LNCS</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
