The emergence of modern concurrent systems (e.g., Cyber-Physical Systems or the Internet of Things) and highly-parallel platforms (e.g., many-core, GPGPU pipelines, and distributed platforms) calls for Domain-Specific Modeling Languages (DSMLs) where concurrency is of paramount importance. Such DSMLs are intended to propose constructs with rich concurrency semantics, which allow system designers to precisely define and analyze system behaviors. However, specifying and implementing the execution semantics of such DSMLs can be a difficult, costly and error-prone task. Most of the time the concurrency model remains implicit and ad-hoc, embedded in the underlying execution environment. The lack of an explicit concurrency model prevents: the precise definition, the variation and the complete understanding of the semantics of the DSML, the effective usage of concurrency-aware analysis techniques, and the exploitation of the concurrency model during the system refinement (e.g., during its allocation on a specific platform). In this paper, we introduce a concurrent executable metamodeling approach, which supports a modular definition of the execution semantics, including the concurrency model, the semantic rules, and a well-defined and expressive communication protocol between them. Our approach comes with a dedicated meta-language to specify the communication protocol, and with an execution environment to simulate executable models. We illustrate and validate our approach with an implementation of fUML, and discuss the modularity and applicability of our approach.
“Weaving Concurrency in eXecutable Domain-Specific Modeling Languages”
Florent Latombe, Xavier Crégut, Benoît Combemale, Julien Deantoni, Marc Pantel,
In 8th International Conference on Software Language Engineering (SLE 2015)
This page presents an application of the concurrent executable metamodeling approach presented in our submission to the 8th International Conference on Software Language Engineering (SLE’15). Link to the paper.
Our example xDSML is the Foundational Subset for Executable UML Models (fUML). The specification is available on the OMG’s website. Our implementation supports the Intermediary Activities package (InitialNode, DecisionNode, ForkNode, etc…). Behaviors are limited to OpaqueActions, whose body can be specified using the Groovy language.
The execution of this model proceeds as follows:
The following video presents an overview of our fUML implementation. The video below shows the execution of the fUML example model, including a graphical animation of the graphical concrete syntax defined using Sirius.
Below are explained the different specifications constituting the Concurrency-aware definition of fUML.
The Abstract Syntax defines the syntactic concepts of the language and their relations.
The Execution Data capture, at the language level, the runtime state of a model. The Execution Functions are the semantic rules defining operationally how the Execution Data evolve at runtime.
Note: For technical reasons, our implementation requires that the Execution Data and the Execution Functions’ signatures be manually added into the metamodel.
MoCCML allows the capitalization of domain-agnostic relations and expressions into libraries, reusable for several domains. Please see the dedicated paper for a more thorough presentation of MoCCML.
The Event Constraint Language (ECL) is an extension of OCL for the definition of an EventType Structure as defined in our paper. It allows the declaration of an EventType in the context of a concept from the AS, and the use of MoCCML relations and expressions on these EventTypes so as to define the partial ordering (at the language level) between EventTypes.
Finally, GEL allows the specification of the Communication Protocol between the concurrency model and the semantic rules.