Model interpretation approach is grasping attention of the model driven community. Industrial experiences of company Mendix has shown some very promising results. A recent post at a popular “model-minded” blog triggered a discussion about code generation versus model interpretation.
Model interpretation in itself is not a new concept and there exist well known interpreters for generic and mainstream domains (e.g., Ptolemy and Simulink). The novelty in model interpretation today is that model driven methods provide efficiency and flexibility, which enable application of this concept to arbitrary problem domains.
In a series of blogs we will illustrate this novel aspect and provide an example of model interpretation. Specifically this article will illustrate 1) how a custom modeling language (DSL) is developed for an arbitrary problem domain and 2) how a system behavior can be specified with the DSL and directly interpreted without any intermediate transformation steps. In a followup article we will show how a custom model interpreter can be efficiently built using a model driven method.
Model Interpretation As System
Traditional generative approaches like Model Driven Architecture (MDA) prescribe an (automated) code generation process that takes a system model as input and eventually produces code that implements the specified system. The system comes to existence when the code is executed.
Alternatively, the code generation process can be skipped and a system model be executed directly. Model Interpretation achieves such direct execution by means of a model interpreter. In this case the system comes to existence when the model is being interpreted. Thereby system behavior is completely defined by the model being interpreted.
Fig. 1 illustrates a possible approach to model interpretation of event-driven systems. An event-driven system exhibits behavior by generating (external) events in reaction to incoming external events. Therefore, the interpreter should support two-way event communication with the context. An example of an incoming external event is arrival of a positive signal from a motion sensor for an automated door. An outgoing external event could be a command to an actuator to open the door.

Figure 1: An approach to system as model interpretation
In the figure, entities are shown as boxes and their roles w.r.t. each other are shown in italic. Given that a domain-specific language (DSL) and an interpreter already exist, a domain expert uses the DSL to specify a system and its events at development time. Moving to the run-time, the same model (system configuration) represents the system and its events. During model execution, the interpreter reads system state from the model and interprets system events according to the semantics of the events. Interpretation may change the state of the system by changing the system configuration at run time, and communicate external events to the system’s context.
Typically a sequence of external events is provided by the context of the system. Alternatively, these events can be specified in the system model and consequently generated by the interpreter itself (in this case, system behavior is simulated).
Domain
Today model interpretation can be applied to an arbitrary problem domain. To reflect this freedom, we chose a minor and uncommon weighbridge domain, whose purpose is to measure weight of vehicles.
The following is a typical weighbridge scenario: One or more delivery vans arriving (at a factory) must pass over a weighbridge on entry. A weighbridge accepts one van at a time and each weighing operation takes a certain amount of time. If the weighbridge is busy, arriving vans join the waiting queue to the bridge. When the weighbridge becomes available again, the first van in the waiting queue drives over the bridge.
This domain is characterized by a number of inherent variations, such as number of weighbridges, weighbridge capacity, weighing operation duration, number of arriving vans, arrival times of vans, etc.. The result is that a multitude of weighbridge system configurations are possible and per configuration a multitude of dynamic van arrival and weighing scenarios can play out.

Figure 2: A weighbridge system modeled in a DSL
Figure 2 shows a simplified weighbridge system configuration, originally described by Birtwistle and Tofts [1]. Yellow boxes are vans. The large blue box is a weighbridge and green entities are a van arrival queue (EL) at the factory and a van waiting queue (Delay) at a weighbridge. As you can see the factory’s configuration has a single weighbridge W, which is free at this time. Finally, three delivery vans V1, V2 and Main have arrived (external events). An execution of this model is illustrated further in the article. An AToM3 implementation of a DSL for the domain is briefly described next.
Weighbridge DSL
The earlier mentioned freedom of application depends on flexibility and efficient adaptation of model interpreters to new domains. Model driven methods achieve this flexibility through metamodeling. If you are not familiar with metamodeling, you can skip this section as it is not required for understanding the demo.
A DSL is defined with abstract syntax, concrete syntax, static semantics and dynamic semantics. (Such a definition is known as metamodel.) Behind every DSL is a modeling paradigm that gives fundamental guidelines for metamodeling. In case of the weighbridge domain, a proper modeling paradigm is Process Interaction [2].

Figure 3: PI Metamodel
For the purposes of this demo, a PI modeling language will suffice and we will reuse and extend a PI metamodel developed by Juan de Lara [3]. We just have to keep in mind that Process and Resource in Juan’s metamodel correspond to van and weighbridge concepts in the demo domain. The abstract syntax of the PI DSL is illustrated in Figure 3. The concrete syntax of this DSL is illustrated in Figure 2. We skip static semantics (in other words, business rules) as the focus of the domain is interpretation, not domain modeling. The following is a brief description of the key PI concepts:
Resource is a synonym for the Weighbridge concept. A weighbridge has the following attributes:
Name is a unique identifier of Weighbridge: String
State denotes availability of Weighbridge: Enum{idle, busy}
Tproc is typical duration of weighing service: Time (used in simulated execution)
Capacity denotes capability to weigh multiple vans at the same time: [1..N]
Load denotes weighbridge’s capacity occupied with served vans: [0..Capacity]
Process is a synonym of the Van concept. A van has the following attributes:
Name is a unique identifier of Van: String
Tcreation is time-stamp of Van’s arrival event: Time
Tinitproc is the start time of weighing operation: Time
Tendproc is the end time of weighing operation: Time
Body is a sequence of tasks: sequence{task} (tasks examples are bridge access, van weighing, bridge exit, etc.)
EVnext is the iterator for tasks in body: [0..N]
For simulation purposes, additional concepts are defined:
Time is a clock for simulated time.
ProcIntGenerator specifies time intervals between van arrivals.
Finally, to assist visualization of system state, the original metamodel was extended with additional relationship:
manageElement specifies an operation (append, insert or remove) on an element (target end of this relationship) of a sequence (source end of this relationship).
The final touch of DSL definition is dynamic semantics (meaning of DSL concepts). In the model interpretation approach, such semantics is defined in an interpreter. In case of a DSL and a pure interpretive approach there is a good chance that an interpreter exactly matching the DSL will need to be developed. More so if the interpreter has to meet additional specific requirements. In our case, such requirements were run-time visualization of system behavior and interpreter integration with the factory context (not covered in this article). In a followup article we will show how a custom model interpreter can be developed. Incidentally our development approach is also based on model interpretation.
Run Time Example
A picture is worth a thousand words. With that in mind an illustration of model interpretation is best done with a video. The following screencast shows execution of the weighbridge system configuration introduced earlier (see Figure 2). For the sake of visualization, execution is carried out in the step-by-step mode and displays how the state of the weighbridge configuration changes in response to events.
Conclusions
In our experience model interpretation is characterized by very fast development times. In fact it did not even feel like development at all as domain experts are completely shielded from all incidental technical details. I believe that Birtwistle and Tofts, the scientists that coined the weighbridge benchmark, would feel at home with the demonstrated DSL and the interpreter in no time. With incidental complexity out of the equation and direct involvement of domain experts, I think we’ve come very close to the essential complexity of the domain and development times cannot be drastically improved any more. That said, I feel that those interested in this approach should be aware of run-time performance penalty due to interpreter indirection. Whether this will pose a problem, depends on the application domain.
What are your experiences with model interpretation? What is your domain?
References
[1] Graham Birtwistle and Chris Tofts. An operational semantics of process-oriented simulation languages: Part 1 πDemos. ACM Transactions on Modeling and Computer Simulation, 10(4):299–333, December 1994.
[2] Jerry Banks, editor. Handbook Of Simulation. Principles, Methodology, Advances, Applications, and Practice, pages 813 – 833. Wiley-Interscience Publication, New York, September 1998.
[3] Juan de Lara. Simulacio ́n educativa mediante meta-modelado y grama ́ticas de grafos. Revista de Ensen ̃anza y Tecnolog ́ıa, 23, Mayo-Agosto 2002.

#1 door Koos Gadellaa om 8 oktober 2010
I’ve worked at Everest for a number of years. Similar to BeInformed, they have a BPM suite (called Aquima, they’ve got a couple of Youtube’s, although not all too informative).
It is created to define web-apps with support for extensive domains and rule-based inference.
In it, it allows model definition, page flow definitions, and much more. It doesn’t really support graphical output, however (it’s pages are pushed out as XML or JSON, so you might do some Ajax magic if you’d want a visual on it)
Although I haven’t worked extensively with it (I mainly worked on the back-end of it), using the models and defining the logic felt very natural. It, too, promotes the idea that business engineers do the modelling, and no programming is necessary.
Of course, noticing that the actual models and businessrules become so complex, it left me wondering what the difference was between complex programs and complex rulemodels, as there is virtually none.
#2 door Andriy Levytskyy om 12 oktober 2010
Each problem has so called essential complexity which is unavoidable because it is inherent to the problem itself (which means that models can get very complex as well). Complexity of ‘ideal’ models is as close as possible to this essential complexity.
The key to achieve this quality is using *correct* abstractions to construct models. (You can think about abstractions as simplifications) The problem is that while abstractions are simplifications, finding abstractions proper for a given problem domain is not simple (in fact this is one of the biggest problems in adopting MDD). Also, due to this wanted “abstraction correctness”, models are in fact tools specialized for a particular job. If used outside the intended job (worst case scenario), the specialized abstractions will become disadvantages and may lead to increase of complexity.
Hence in practice models are often not optimal with only a modest complexity reduction, which may be hard to see without a direct comparison against traditional programs. Perhaps this is what you experienced? (This is as far as I can speculate without knowing the actual abstractions used in Aquima models.)
#3 door TY om 19 juli 2011
Hi, Antriy!
Perfect instance! A little regretted read the article so late. I think I’m quite understanding what you discovered. I’ve been called that as Model-Driven Mechanism and Model-Driven System. The first key I proposed in many years ago, is that the models must be working at run-time of the application system…
I got the idea from 1998, and gradually realized that, at least for such an comprehensive enterprise information system, it‘s not merely a revolutionary key technology, even more the key that bridge the business (requirements) and IT, and it should lead to a series of changes, from a technical, human resource requirements to the entire application life cycle, industrial ecosystem… And that is, why we have a rather heavy and complicated road map. Recently, I’ve posted a few articles in English on my English blog “Think In Models”:
“A Roadmap of Research for Enterprise Applications”
“Model-Driven: An Essential Requirement Come from Customers”
Furthermore, like in the MDSN, it seems so-called mainstream folks whose are almost all thinking on the model transformation/code generation approach, it’s not ease to find a place that whose are really understanding and appreciation of the issue.
Keep attentions! and expecting your comment.
TY
PS. I’ve posted a comment at your blog.conceptworks.eu yesterday, but it seems be trashed