The Model Driven Software Network

Raise your level of abstraction

Executable models vs code-generation vs model interpretation

My interpretation of these three concepts, specially for non-MDD experts. In short: code-generation and model-interpretation are just two possible "realizations" of executable models. Moree here:

Views: 153

Add a Comment

You need to be a member of The Model Driven Software Network to add comments!

Join The Model Driven Software Network

Comment by Andreas Leue on August 17, 2010 at 12:50
Well, the answer is a clear "yes and no". EM/OS is a bundle of components, combinable and interacting in different ways. There are two core technologies - a code generator and an XML-based object aggregator (OCPs, object construction plans, see - both transparently working with JIT-compilation, comparable to JSPs. The latter interprets as well as compiles (that's adjustable), the former always compiles based on an (interpretable) in-memory AST. From the user perspective, it is irrelevant whether interpretation or compiltation occurs, except for perfomance matters.

Since noth our models as well as our model transformations are also expressed as such OCPs, the above applies for the first stages of model evaluation, too. Next, parts of the model (mostly BPM stuff) is always interpreted, but partially referring to the static (object/class diagram) part which then has to be present at runime. In contrast, the object model part is currently mostly compiled into code, but for one customer a variation was implemented which operates without any code generation but plain interpretation (but is not yet in a product stage and with somewhat limited functionality).

Finally, sub-models can be (re-)loaded at runtime with a JIT-M2M-M2T-Compilation-Load-Chain, so the user experience tends also in the JSP direction for full models (of course database migration is still a serious obstacle).
Comment by Jordi Cabot on August 16, 2010 at 20:21
Thanks for your intersting contribution. One question is your product an example of the interpreted through compilation approach? Or what approach do you follow in EM/OS?
Comment by Andreas Leue on August 16, 2010 at 15:10
Jordi, I quite agree with that.

The benefits of a JIT-compiler you mention in your blog are obvious: you get flexibility plus performance. That makes much sense!

I'd like to add that I see code-generation and model interpretation on a timely scale: when a certain programming paradigm is widespread, the seek for the next level of abstracttion usually starts with generative approaches, because you need full flexibility while exploring the solution space of possible new languages, i.e. you want to do all dirty tricks in your templates. Later, when concepts get more clear, one can concentrate on usuability aspects of the new language, and since semantics are more fixed interpretation and compilation are more feasible.

That "lnaguage evolution process" from generation to interpretation/compilation was observable several times in history, from machine instructions to assemblers, from assemblers to something like C, from C to C++, and currently from lnaguages like Java/C# to "models" of whatever kind.

BTW, for that same reason, we named our product "(enterprise) model operation (services)", since from he customer perspective it just "operates models".




© 2019   Created by Mark Dalgarno.   Powered by

Badges  |  Report an Issue  |  Terms of Service