<?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">Coping with Semantic Variation Points in Domain-Specific Modeling Languages</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Florent</forename><surname>Latombe</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">University of Toulouse</orgName>
								<orgName type="institution" key="instit2">IRIT</orgName>
								<address>
									<settlement>Toulouse</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Xavier</forename><surname>Crégut</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">University of Toulouse</orgName>
								<orgName type="institution" key="instit2">IRIT</orgName>
								<address>
									<settlement>Toulouse</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Julien</forename><surname>Deantoni</surname></persName>
							<affiliation key="aff1">
								<orgName type="department">I3S</orgName>
								<orgName type="institution" key="instit1">Univ. Nice Sophia Antipolis</orgName>
								<orgName type="institution" key="instit2">CNRS</orgName>
								<orgName type="institution" key="instit3">Inria</orgName>
								<address>
									<settlement>Sophia Antipolis</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Marc</forename><surname>Pantel</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">University of Toulouse</orgName>
								<orgName type="institution" key="instit2">IRIT</orgName>
								<address>
									<settlement>Toulouse</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Benoit</forename><surname>Combemale</surname></persName>
							<affiliation key="aff2">
								<orgName type="institution" key="instit1">University of Rennes I</orgName>
								<orgName type="institution" key="instit2">IRISA</orgName>
								<orgName type="institution" key="instit3">Inria</orgName>
								<address>
									<settlement>Rennes</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Coping with Semantic Variation Points in Domain-Specific Modeling Languages</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">1690F9E6C4668E40689C7C44011333E7</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T06:52+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>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Even if they exhibit differences, many Domain-Specific Modeling Languages (DSMLs) share elements from their concepts, notations and semantics. StateCharts is a wellknown family of DSMLs that share many concepts but exhibit notational differences and many execution semantics variants (called Semantic Variation Points -SVPs -). For instance, when two conflicting transitions in a state machine are enabled by the same event occurrence, which transition is fired depends on the language variant (Harel original StateCharts, UML, Rhapsody, etc.) supported by the execution tool. Tools usually provide only one implementation of SVPs. It complicates communication both between tools and end-users, and hinders the co-existence of multiple variants. More generally, Language Workbenches dedicated to the specification and implementation of eXecutable Domain-Specific Modeling Languages (xDSMLs) often do not offer the tools and facilities to manage these SVPs, making it a time-consuming and troublesome activity. In this paper, we describe a modularized approach to the operational execution semantics of xDSMLs and show how it allows us to manage SVPs. We illustrate this proposal on StateCharts.</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>Domain-Specific Modeling Languages (DSMLs) provide user-friendly abstractions for domain experts who are not necessarily well-versed in the use of programming languages even when limited to domain-specific libraries (i.e., API dedicated to a domain like security, fault tolerance, etc.). A DSML is called executable (xDSML) when it represents systems which evolve during time (i.e., it captures the behavior(s) of the systems). Being domain-specific eases the design of complex software-intensive systems whereas being executable enables early verification and validation of the systems <ref type="bibr" target="#b0">[1]</ref>.</p><p>Semantic Variation Points (SVPs) are language specification parts left intentionally under-specified to allow further language adaptation to specific uses. SVPs must be dealt with either through further refinement of the language specification (in the case of UML, through stereotypes or profiles) or by making arbitrary choices in the implementation. The latter is most often the case when accommodating specific types of execution platform (e.g., distributed, highly-parallel, etc.), allowing various implementations of the concurrency concerns (e.g., parallelism or thread interleaving). For instance, the concurrency in CPython, the reference implementation of Python, is subject to the Global Interpreter Lock (GIL), which prevents multithreaded programs from taking advantage of multiprocessor systems; while Jython, the Java implementation of Python supports parallelism through the Java Virtual Machine (JVM). Another example is fUML <ref type="bibr" target="#b1">[2]</ref>, whose specification delegates the notions of time, communications and concurrency to the tool implementors. Tool vendors are thus responsible for specifying and documenting the implemented solution.</p><p>SVPs are usually identified informally in the DSML syntax and semantics specification documents. In the context of this paper, we will draw the difference between a Language (the specification of a syntax and of a semantics that may contain SVPs) and its Dialects (which implement a language, making choices about some -possibly all -SVPs of the language). Tools commonly only provide one dialect, thus constraining the end-user to work with the selected specific implementation of SVPs, which may not be the best-suited for their needs. Besides, it also complicates the cooperation between tools, since they may implement SVPs differently, giving a different semantics to the same syntax. Two engineers with different backgrounds may also assume different meanings for the same model, which impairs communication. Finally, large projects may need to use several dialects cooperatively, which means that this issue cannot be simply reduced to the choice of a unique tool: one dialect with an associated tool may be the best fit for a particular aspect of a system, but other ones may be better-suited for other aspects of the system.</p><p>This paper describes an approach to the specification of the execution semantics of an xDSML that eases the specification and management of SVPs. The approach is implemented in the GEMOC Studio<ref type="foot" target="#foot_0">1</ref> . It is illustrated with Finite State Machines (FSMs), a common formalism to represent complex system behaviors. StateCharts <ref type="bibr" target="#b2">[3]</ref> is a common xDSML to model FSMs that exhibits many SVPs, as shown by a comparative study of its most popular versions <ref type="bibr" target="#b3">[4]</ref>.</p><p>Modern systems (IoT, etc.) increasingly rely on concurrency, and modern platforms provide more and more concrete concurrency facilities (many-core, GPU, etc.). xDSMLs must provide sophisticated concurrency concepts with well-defined semantics, to enable early concurrency-aware analyses, and SVPs related to the concurrency concerns to allow refinements to specific platforms. But the concurrency concerns and SVPs of xDSMLs are usually implicit, embedded in the underlying execution environment or in the meta-languages used to define the xDSMLs. The GEMOC executable metamodeling approach makes explicit the concurrency aspects in an xDSML specification, relying on event structures <ref type="bibr" target="#b4">[5]</ref> which define a partial ordering over a set of events. This paper advocates that this paradigm is not only suitable for specifying the concurrency concerns, but also for defining many of the concurrency-related SVPs by leaving some parts of the semantics under-constrained. Then, implementing these SVPs consist in reducing the partial ordering of the event structure with additional constraints.</p><p>This paper is structured as follows: Section II summarizes the StateCharts example. Section III describes the GEMOC executable modeling approach and illustrates how it is particularly suitable for the specification of SVPs. The implementation in the GEMOC Studio is described in Section IV. Finally, Section V gives related work and Section VI concludes and proposes insights on future works.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. SEMANTIC VARIATION POINTS OF STATECHARTS</head><p>The StateCharts formalism is an extension of Finite State Machines (FSMs) with hierarchy, concurrency and broadcast communications <ref type="bibr" target="#b2">[3]</ref>. A comparative study by M. Crane and J. Dingel <ref type="bibr" target="#b3">[4]</ref> identifies and compares some of the existing StateCharts dialects. For the purpose of this paper, we will consider the original Harel Statecharts (denominated as Original) <ref type="bibr" target="#b5">[6]</ref> and the UML StateCharts <ref type="bibr" target="#b6">[7]</ref>. The study also classifies the differences between these dialects into three categories: notation (the least critical, a notation translation can ensure compatibility); well-formedness (when a formalism has an exclusive construct, model refactoring can most of the time make it compatible with the other formalisms); and semantics (the most critical one). For the purpose of this paper, we only consider the semantic differences between the dialects, and assume that notation and well-formedness issues have been solved beforehand. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Common Semantics of Statecharts</head><p>The bulk of the semantics is common to all three StateCharts dialects. When an Event occurs, it enables all the Transitions whose Trigger references the occurring Event. Depending on their Guard evaluation result, they may then be fired. When a Transition is fired, its source State is exited, its Effect is executed and its target State is entered.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>C. Semantic Variation Points</head><p>We consider the three following SVPs:</p><p>• Simultaneous Events: Can different Events occur at the same time? In the original formalism, they can, and they are dealt with simultaneously (concurrently). The UML formalism adheres to the concept of run-to-completion (RTC) which means that Event occurrences are handled one by one (possibly with priorities), thus simultaneous Events are not allowed.  The following scenarios illustrate the 3 targeted SVPs:</p><p>• When in State "Off", "StartEvent" and "StopEvent" occur.</p><p>-Original: they are dealt with concurrently, resulting in the Transition from "Off" to "On" being fired. -UML: not supported.</p><p>• When, in States "On" and "Paused", the Event "StartEvent" occurs (assuming x and y both start at 0), triggering the firing of the Transition from "Paused" to "Playing".</p><p>-Original: when reaching State "Playing", the values of x and y are respectively 1 and 0. -UML: when reaching State "Playing", the values of x and y are respectively 1 and 1.</p><p>• When, in States "On" and "Playing", the Event "StopEvent" occurs.</p><p>-Original: the Transition from "On" to "Off" is fired.</p><p>-UML: the Transition from "Playing" to "Paused" is fired. So far, these differences have to be deduced from the documentation of the respective tools or specifications, or through tests of the tools. It is not explicit, when considering the model, what the associated version of the semantics is.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. CONTRIBUTION AND APPLICATION TO STATECHARTS</head><p>This section describes the GEMOC executable metamodeling approach and how we propose to deal with SVPs. We illustrate it on StateCharts.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>A. GEMOC Executable Metamodeling Approach</head><p>The language and modeling communities specify languages with an Abstract Syntax (AS), one or more Concrete Syntaxes (CSs) and mappings from the AS to one or more Semantic Domains (SDs) <ref type="bibr" target="#b7">[8]</ref>. Based on this proposal and work from the concurrency theory community, previous contributions <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b9">10]</ref> have proposed to cross-fertilize both approaches to specify Concurrency-aware xDSMLs by making the concurrency concerns explicit and suitable for analyses like determinism or deadlock freeness. The mapping between the AS and the SD, inspired from Structured Operational Semantics (SOS) <ref type="bibr" target="#b10">[11]</ref>, is split into two parts: the Semantic Rules, dedicated to sequential actions (not to be confused with StateCharts Actions) specified in an operational manner; and a declarative Concurrency Model that orchestrates the Semantic Rules. A Communication Protocol defines the relations between the Semantic Rules and the Concurrency Model. The class diagram from Figure <ref type="figure" target="#fig_3">2</ref> summarizes the architecture of the specification of concurrencyaware xDSMLs execution semantics in GEMOC. The Semantic Rules specify the sequential evolutions of the model state at runtime (not to be confused with StateCharts States). The Execution Data (ED) represent at the language level the runtime state of the model. Execution Functions (EF) specify how the ED evolve during execution. For instance, a Region has a "currentState" reference in its ED which represents its current State during the execution. It is updated by the EF "fire" on Transitions.</p><p>The Concurrency Model is captured by the Model of Concurrency and Communication (MoCC). The MoCC is an EventType structure, specifying at the language level how, for a given model, the event structure <ref type="bibr" target="#b4">[5]</ref> defining its concurrent control flow is built from a partial ordering over events (events of the event structure, not to be confused with StateCharts Events). This event structure represents all the possible execution paths of the model (including all possible interleavings of events occurring concurrently). Figure <ref type="figure" target="#fig_4">3</ref> shows the simplified event structure corresponding to the example from Figure <ref type="figure" target="#fig_2">1</ref>. In this representation, a node is a configuration : an unordered set of event occurrences that have happened at this point in the execution. Event structures allow focusing on the concurrency, synchronization and the, possibly timed, causalities between actions. The actions themselves are opaque, thus the data manipulation they realize are abstracted away. In other words, it allows specifying the pure concurrent control flow of a model in order to ease reasoning on it. Note that in the case of StateCharts, the nature of the language (with 3 different possible inputs at every steps, depending on which events occur) makes the Event Structure very large and difficult to represent. The full semantics is built thanks to the Communication Protocol which maps some of the EventTypes from the MoCC to the EFs. This means that, at the model level, when an event occurs, it triggers the execution of the associated EF on an element of the model. For instance, if the Communication Protocol specifies that the EventType "et FireTransition" is mapped to Transition::fire(), then the event "e FireOn2Off" (instance of "et FireTransition" for the Transition from "On" to "Off", "On2Off") triggers the execution of On2Off .fire(). Communication Protocol allows the MoCC and the Semantic Rules to remain independent, enabling modular changes in either part.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>B. Coping with Semantic Variation Points</head><p>If several execution paths are allowed at a point in the event structure, it means that there is either Concurrency or Conflict. The first one means that other events are happening concurrently (interleaved or in parallel), in which case the execution paths will eventually merge. It does not mean that the executed model reaches the same state, but instead that in terms of pure control flow (independent of any data from the model) it is at the same point in the execution. Our example model is sequential, so there is no need for parallelism or interleavings. The second one means that there is a disjunction among the possible execution paths, which ultimately results in different final configurations of the event structure. Conflicts are a sign of nondeterminism in the semantics of the language, which means that either the language is indeterministic by intention, or that there is a SVP pertaining to the concurrency concern of the language. In the case of StateCharts, depending on the Events occurring, the execution will go one way or another, therefore there are many conflicts to represent the possible inputs (Events occurring).</p><p>SVPs can occur in any parts of the execution semantics. The ones in Semantic Rules target the model runtime state representation and/or evolution. For instance, changing a List into a Stack to have a LIFO policy instead of FIFO, or incrementing a value twice instead of once to double a ressource consumption. In StateCharts, a Transition Effect is a collection of Actions executed in parallel (in the original formalism) or in sequence (in UML). This SVP can be implemented in the EF that executes the Effect of the Transition being fired, with a parallel or sequential implementation. Another solution consists in providing both versions of the EF, but in changing the Communication Protocol to use the sequential one or the parallel one depending on the dialect we wish to use. The imperative nature of these implementations makes them complex to manage.</p><p>Thus, we propose to rely on the language's declarative MoCC to represent the superset of possibilities for all allowed concurrency-related SVPs, and to refine the MoCC for each dialect by removing the execution paths that do not correspond to the expected semantics. Nondeterminisms in the MoCC (resulting in conflicts in a model event structure) can be seen as potential SVPs. SVP implementations restrain the number of outgoing execution paths at a conflict point. In StateCharts (where a scenario, user, or environment drives the execution), there will be a lot of nondeterminisms left in the MoCC even after implementing the SVPs of the various dialects (to represent the possible inputs, Events being allowed to occur at every step of the execution). SVP implementations cannot add new EventTypes in the MoCC, as it would result in new execution paths that were not initially present in the language's MoCC specification.</p><p>For instance, let us consider the SVP concerning simultaneous Events. The part of the event structure corresponding to this situation is represented in Figure <ref type="figure">5</ref>. For this particular 5. event structure showing the Semantic Variation Point of Event occurrences.</p><p>SVP, the UML dialect implements a subset of the original formalism's possibilities. Individual Events "e StartEvent" and "e StopEvent" are possible in both situations, but having both "e StartEvent" and "e StopEvent" is only allowed in the original formalism. The part of the MoCC responsible for implementing this SVP in UML is an extension of the part of the MoCC for the original formalism, with the addition of a constraint preventing simultaneous Event occurrences. The SVP concerning conflicting Transition is different: there is a disjunction between the original formalism and the UML one. Figure <ref type="figure" target="#fig_6">6</ref> shows an example event structure of a situation where, in the State "On" and "Playing", the Event "StopEvent" (or both "StartEvent" and "StopEvent") occur. In this case, the original formalism gives priority to "On2Off", while UML gives priority to "Playing2Paused". Therefore, the MoCC of the language representing the superset of possibilities for all allowed variants must allow both solutions. Each dialect then extends the MoCC of the language to add constraints resulting in the removal of some of the execution paths not corresponding to the implemented semantics.</p><p>The difference between specializing a language for a specific environment and implementing a Semantic Variation Point is blurry. SVPs sometimes represent adaptation points for a specific platform (distributed, highly parallel, . . . ). Therefore the event structure used to define the concurrency concerns in the semantics of xDSMLs is also a good fit for defining a language while still allowing dialects to be implemented by extending the concurrency model. SVPs can also be implemented in a modular way so that dialects are then realized by merging specific SVP implementations; similar to creating a new class in Aspect-Oriented Programming by extending an existing class and weaving existing aspects onto it.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. IMPLEMENTATION</head><p>The GEMOC executable metamodeling approach is implemented in a language workbench, the GEMOC Studio<ref type="foot" target="#foot_1">2</ref> based on previous work <ref type="bibr" target="#b9">[10]</ref>. It is integrated in the Eclipse Modeling Framework (EMF) <ref type="bibr" target="#b11">[12]</ref> to benefit from its large ecosystem.</p><p>The AS is specified with Ecore, the Eclipse Modeling Framework implementation of EMOF, and with the Object Constraint Language (OCL) for the static semantics. Both EMOF <ref type="bibr" target="#b12">[13]</ref> and OCL <ref type="bibr" target="#b13">[14]</ref> are standards from the Object Management Group (OMG).</p><p>The EFs are implemented with the Kermeta 3 Action Language (K3AL) <ref type="bibr" target="#b14">[15]</ref>, built on top of xTend <ref type="bibr" target="#b15">[16]</ref>. K3AL allows the definition of aspects for Ecore metaclasses, allowing us to weave the additional classes, attributes, references and operation implementations specifying the ED and the EFs. K3AL, just like xTend, compiles into Java Bytecode and provides an executor based on the Java Reflection API to dynamically execute the EFs. Listing 1 shows the implementation of the StateMachine.initialize() Execution Function in K3AL. MoCCML <ref type="bibr" target="#b16">[17]</ref>, a declarative meta-language designed to express constraints between events, is used to specify the MoCC. The definition of the EventType structure relies on the Event Constraint Language (ECL) <ref type="bibr" target="#b17">[18]</ref>, an extension of OCL which allows the definition of EventTypes for concepts from the AS. It can also use constraints defined in MoCCML to specify how the event structure at the model level is built. Listing 2 shows an excerpt from the MoCC of the fUML dialect of StateCharts. EventTypes are declared in the context of concepts from the AS, and the exclusion constraint implements the simultaneous events SVP for fUML. This relation ensures that events cannot occur simultaneously. The MoCC is compiled to a Clock Constraint Specification Language (CCSL) <ref type="bibr" target="#b18">[19]</ref> model interpreted by the TimeSquare <ref type="bibr" target="#b19">[20]</ref> tool. Practically, computing the whole Event Structure is not doable because if the model is very large or highly parallel, then the exponential number of configurations (possibly infinite) makes it too costly to compute or too big to be usable. Instead, TimeSquare provides only the next set of possible configurations of the Event Structure. Due to its constraint-based approach, the runtime of CCSL provided by TimeSquare is called a Solver. The Communication Protocol is specified using the Gemoc Events Language (GEL) <ref type="bibr" target="#b20">[21]</ref>. Listing 3 shows an excerpt of the Communication Protocol of StateCharts. Mappings are implemented by what we call Domain-Specific Events (DSEs) which link an EventType (specified in ECL, see Listing 2), to an Execution Function).</p><p>At runtime, an Execution Engine written mostly in Java coordinates the K3AL interpreter, the GEL interpreter and the CCSL solver to execute a model. Figure <ref type="figure" target="#fig_7">7</ref> shows the sequence diagram for an execution step. First, the Execution Engine retrieves from the CCSL Solver the next set of possible configurations (scheduling solutions). Its heuristic  The modularization of our approach effectively allows the reuse of part of the operational semantics (in our case, of the ED and EFs and of parts of the Communication Protocol and of the MoCC) for the various dialects of StateCharts.</p><p>To implement our second SVP, "Communication Protocol for UML" maps "Transition.executeEffectSequentially()" while for original StateCharts, "Transition.executeEffectInParallel()" is mapped. In "UML StateCharts MoCC", a constraint is added to exclude simultaneous occurrences of Events (as shown in Listing 2). Priority is given to the inner Transition in case of conflicting Transitions (third SVP) while the "Original StateCharts MoCC" gives priority to the outer Transition.</p><p>V. RELATED WORK DMSL editors, also called Language Workbenches <ref type="bibr" target="#b21">[22]</ref>, such as Metacase's MetaEdit+ <ref type="bibr" target="#b22">[23]</ref> or JetBrain's MPS <ref type="bibr" target="#b23">[24]</ref> usually do not provide explicit means to handle the SVPs of the DSMLs. Existing executable metamodeling approaches such as xMOF <ref type="bibr" target="#b24">[25]</ref> or Kermeta <ref type="bibr" target="#b25">[26]</ref> usually only provide semantic variability through operations redefinitions and strategy design pattern uses. SVPs are a recurrent issue for executable metamodeling, in particular for executable UML. In <ref type="bibr" target="#b26">[27]</ref>, the authors draw inspiration from the notion of Genericity available in object-oriented GPLs such as Java or C++ to introduce a notion of template parameters at the metamodel level which can be bound either at the model level or at the metamodel level. This approach is exclusively at a structural level, with the assumption that behaviors are encapsulated in operations and triggered by operation calls. In our approach, we only consider the behavioral aspects and how the SVPs are implemented, assuming that the structural issues have been resolved beforehand. In <ref type="bibr" target="#b27">[28]</ref> is introduced the notion of inner semantics of a language (semantics where the SVPs are left open) which corresponds, for us, to using the common MoCC of the language without extending it with SVP implementations. Our approach is closer to what was done for the SVPs of UML State Machines in <ref type="bibr" target="#b28">[29]</ref>, where the SVPs are reified in their own models to avoid tying the semantic choices to the implementing tool. The UML model to be executed is then transformed into a target UML model reflecting the semantic variations selected. In our approach, the SVPs are always specified in their own models at the language level since our Execution Engine is generic and able to execute any model conforming to a language described using our language workbench. Our approach also bears resemblance to <ref type="bibr" target="#b29">[30]</ref>, in which the authors have developed a framework to analyze the different variants of StateCharts thanks to pluggable semantics implemented in Java which parameterize their execution engine. In our case, the different semantic variants are models belonging to the language definition which are interpreted (after compilation for a specific model) by the generic execution engine making our approach generic and not tied to a family of languages.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>VI. CONCLUSION AND PERSPECTIVES</head><p>Semantic Variation Points (SVPs) are usually poorly identified in language specifications, and their implementations are often hardcoded into the implementing tools, hindering the end-users from choosing their own variation of the language, particularly one that may be a better fit for a particular class of problems. The GEMOC executable metamodeling approach separates the semantic mapping of xDSMLs to make explicit the Concurrency Model, completed by Semantic Rules describing how the runtime state of the model evolves, and by a Communication Protocol to connect both. Its event structure-based approach to the concurrency model eases the specification of nondeterministic situations, corresponding to potential SVPs. Implementing a SVP is then done by extending the concurrency model with additional constraints, resolving partially or totally nondeterminisms that were left in the language's Concurrency Model. The SVP implementations are thus weaved into the language definition, allowing the execution tool to remain independent from any arbitrary choice with regards to the SVPs. Future work will be concerned with adding the possibility to hinder parts of the concurrency model of the language from being extended by dialects. So far in our approach, every point of nondeterminism left in the concurrency model is considered as a potential SVP. But sometimes, the nondeterminisms left in the concurrency model are integrally part of the semantics of all variants allowed and should not be extended and resolved by dialects. We also plan to consider the case of SVPs which spread through the three units constituting the semantics (Concurrency Model, Semantic Rules or Communication Protocol) because so far, we have only considered SVPs which are contained in only one of these units. At last, we target the integration of these proposals with SVPs at the syntax level, both abstract and concrete; and to experiment the use of variability management techniques to make the management of language variants more explicit.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>A. Common Syntax of StatechartsInStateCharts, an FSM is composed of Regions and Events. Each Region is composed of States and Transitions between these States. A State can be composed of Regions, thus defining a hierarchy between the States. Each Region has an initial State. A Transition can have a Guard (predicate expression) and an Effect (collection of behavior expressions named Actions). A Transition has a Trigger which is a reference to an Event.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>•</head><label></label><figDesc>Order of execution of Actions: When a Transition is fired, how are the Actions that compose its Effect executed? In parallel in the original formalism and in sequence in the UML version. • Priorities of conflicting Transitions: When several Transitions are enabled by the same Event occurrence, how are they handled if their executions conflict (e.g. their application would lead to an inconsistent model state) ? In the original formalism, priority is given to the Transition which is highest in the hierarchy, while in UML, priority is given to the Transition which is lowest in the hierarchy. Let us consider the example model from Figure 1, representing a simple music player.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1. Example model of Statecharts representing a simple music player.</figDesc><graphic coords="2,313.04,340.44,248.93,159.38" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 2 .</head><label>2</label><figDesc>Fig. 2. Class Diagram of our approach towards concurrency-aware operational semantics of an xDSML.</figDesc><graphic coords="3,48.96,467.23,251.06,164.35" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Fig. 3 .</head><label>3</label><figDesc>Fig. 3. Simplified event structure of the MusicPlayer example from Figure 1. "..." in a configuration represents the preceding configuration. The figure is limited to two steps of execution for representation purposes: every step offers three possibilities (not considering steps where none of the events occur), leading to three different execution paths.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Fig. 4 .</head><label>4</label><figDesc>Fig. 4. Simplified view of the model-level specifications of our approach applied to the example StateCharts model of Figure 1.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Fig. 6 .</head><label>6</label><figDesc>Fig. 6. Simplified event structure showing the Semantic Variation Point of conflicting Transitions.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Fig. 7 .</head><label>7</label><figDesc>Fig. 7. Sequence Diagram representing one step of execution of a model conforming to a Concurrency-aware xDSML.</figDesc><graphic coords="6,48.96,194.00,251.06,125.30" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Fig. 8 .</head><label>8</label><figDesc>Fig. 8. Architecture of the different specifications constituting the concurrency-aware operational semantics of the different versions of State-Charts.</figDesc><graphic coords="6,48.96,490.31,251.05,139.82" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://www.gemoc.org</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">http://gemoc.org/studio/</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>ACKNOWLEDGMENT This work is partially supported by the ANR INS Project GEMOC (ANR-12-INSE-0011).</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Comparing general-purpose and domain-specific languages: An empirical study</title>
		<author>
			<persName><forename type="first">T</forename><surname>Kosar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Oliveira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mernik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">J M</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Črepinšek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">D</forename><surname>Da</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">P</forename><surname>Henriques</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2010">2010</date>
			<publisher>ComSIS</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">fUML specification v1</title>
		<author>
			<persName><surname>Omg</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">1</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Statecharts: A visual formalism for complex systems</title>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Science of computer programming</title>
		<imprint>
			<date type="published" when="1987">1987</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">UML vs. Classical vs. Rhapsody statecharts: not all models are created equal</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">L</forename><surname>Crane</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Dingel</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>SoSyM</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<author>
			<persName><forename type="first">G</forename><surname>Winskel</surname></persName>
		</author>
		<title level="m">Event structures</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1987">1987</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">The STATEMATE semantics of statecharts</title>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Naamad</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">TOSEM</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="293" to="333" />
			<date type="published" when="1996">1996</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">UML superstructure specification v2</title>
		<author>
			<persName><surname>Omg</surname></persName>
		</author>
		<ptr target="http://www.omg.org/spec/UML/2.4.1/Superstructure/PDF/" />
		<imprint>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Meaningful modeling: what&apos;s the semantics of &quot;semantics</title>
		<author>
			<persName><forename type="first">D</forename><surname>Harel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Rumpe</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer</title>
		<imprint>
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Bridging the Chasm between Executable Metamodeling and Models of Computation</title>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Hardebolle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jacquet</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Boulanger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Baudry</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SLE2012, ser. LNCS</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2012-09">Sep. 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Reifying Concurrency for Executable Metamodeling</title>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>De Antoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Vara Larsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Mallet</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Barais</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Baudry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>France</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SLE 2013, ser. LNCS</title>
				<imprint>
			<publisher>Springer-Verlag</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">The origins of structural operational semantics</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">D</forename><surname>Plotkin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">The Journal of Logic and Algebraic Programming</title>
		<imprint>
			<biblScope unit="volume">60</biblScope>
			<biblScope unit="page" from="3" to="15" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<ptr target="http://www.eclipse.org/modeling/emf/" />
		<title level="m">EMF homepage</title>
				<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">MOF specification v2</title>
		<author>
			<persName><surname>Omg</surname></persName>
		</author>
		<ptr target="http://www.omg.org/spec/MOF/" />
		<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="volume">5</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<ptr target="http://www.omg.org/spec/OCL/" />
		<title level="m">OCL specification v2.4</title>
				<imprint>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Github for K3AL</title>
		<author>
			<persName><surname>Diverse-Team</surname></persName>
		</author>
		<ptr target="http://github.com/diverse-project/k3/" />
		<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<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>
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>Packt Publishing Ltd</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Towards a Meta-Language for the Concurrency Concern in DSLs</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">De</forename><surname>Antoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Issa Diallo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Teodorov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Champeau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">DATE&apos;15</title>
				<imprint>
			<date type="published" when="2015-03">Mar. 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">ECL: the event constraint language, an extension of OCL with events</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">De</forename><surname>Antoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Mallet</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012">2012</date>
			<publisher>Inria, Tech. Rep</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Clock constraint specification language: specifying clock constraints with uml/marte</title>
		<author>
			<persName><forename type="first">F</forename><surname>Mallet</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Innovations in Systems and Software Engineering</title>
		<imprint>
			<biblScope unit="volume">4</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="309" to="314" />
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Timesquare: Treat your models with logical time</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">De</forename><surname>Antoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Mallet</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Objects, Models, Components, Patterns</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Weaving Concurrency in eXecutable Domain-Specific Modeling Languages</title>
		<author>
			<persName><forename type="first">F</forename><surname>Latombe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Cregut</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Combemale</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Deantoni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pantel</surname></persName>
		</author>
		<ptr target="https://hal.inria.fr/hal-01185911" />
	</analytic>
	<monogr>
		<title level="m">SLE 2015</title>
				<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2015-10">Oct. 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<monogr>
		<title level="m" type="main">Language workbenches: The killer-app for domain specific languages</title>
		<author>
			<persName><forename type="first">M</forename><surname>Fowler</surname></persName>
		</author>
		<ptr target="http://martinfowler.com/articles/languageWorkbench.html" />
		<imprint>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">MetaEdit+: defining and using integrated domain-specific modeling languages</title>
		<author>
			<persName><forename type="first">J.-P</forename><surname>Tolvanen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Kelly</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">OOPSLA</title>
				<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Language modularity with the MPS language workbench</title>
		<author>
			<persName><forename type="first">M</forename><surname>Voelter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Pech</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICSE. IEEE</title>
				<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">xMOF: Executable DSMLs based on fUML</title>
		<author>
			<persName><forename type="first">T</forename><surname>Mayerhofer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Langer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Wimmer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kappel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Language Engineering</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="56" to="75" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Model driven language engineering with kermeta</title>
		<author>
			<persName><forename type="first">J.-M</forename><surname>Jézéquel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Barais</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Fleurey</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Generative and Transformational Techniques in Software Engineering III</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="201" to="221" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Templatable metamodels for semantic variation points</title>
		<author>
			<persName><forename type="first">A</forename><surname>Cuccuru</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Mraidha</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Terrier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Gérard</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model Driven Architecture-Foundations and Applications</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Modeling language variability</title>
		<author>
			<persName><forename type="first">H</forename><surname>Grönniger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Rumpe</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Foundations of Computer Software. Modeling, Development, and Verification of Adaptive Systems</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Code generation from UML models with semantic variation points</title>
		<author>
			<persName><forename type="first">F</forename><surname>Chauvel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J.-M</forename><surname>Jézéquel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model Driven Engineering Languages and Systems</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page" from="54" to="68" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Polyglot: modeling and analysis for multiple statechart formalisms</title>
		<author>
			<persName><forename type="first">D</forename><surname>Balasubramanian</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">S</forename><surname>Pȃsȃreanu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">W</forename><surname>Whalen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Karsai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Lowry</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ISSTA. ACM</title>
				<imprint>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

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