Last month, I had launched a discussion “What is the essential difference between MODELING and PROGRAMMING?” in the forum of MDSN; I proposed my opinion “Model is not code.” and some of possible aspects for the discussion on the differences between models/modeling and code/programming:
– the perspective
– the business/problem vs. computer/platform
– the interpretation context
– what is it oriented?
– how it can be specified?
I think, the issue is significant but not sufficient enough yet.
Recently, Vincent Hanniet discussed the topic in his essay “MDA/MDD: don’t round-trip!” focus on another concern about round-trip. He said also “Mode is not code.” and implied that we should not be “coupling modeling and coding through round-trip”, “So please, don’ t round-trip!” Further, in a comment on the post, he stated his opinion more clearly
1) Model is not code,
2) Code may be (partly) generated from models,
3) Code may be reverse-modelized but this usage is not appropriate in MDA/MDD
Here, I want to try to write some of my thoughts relating and following Vincent’s excellent thinking.
First, I think, the round-trip engineering is not the matter but the basic question is: whether it is feasible, and by what kind of restrictions? It may be not “To Do or Not To Do” but “Can Be or Can Not Be”, that is the question.
Perhaps, this issue can be boiled down to transformation-ability or transformation-ness (Sorry, I’m not sure is it the appropriate expression?) It can be investigated in many certain situations: A transformation from certain models to code or certain code to model(s) is possibly effective, non-effective, effective and reversible, or effective and non-reversible. Further more, even if a transformation is reversible, the result is possibly recovered fully or partially, or as the same or similar.
- Whether should the models or code be taken (required) certain restrictions for the implementation of a transformation? and what influence, on our means or purposes that using models, will be brought by the restrictions?
- What kind of a model can be transform into code?
(and what is the meaning about “a model is transformed into code”?)
- What kind of code can be transform into certain model(s)?
(and what is the meaning about “some code is transformed into model”?)
- Is a result of trasformation unique?
(or what factors/conditions/context will affect the results of transformation?)
- If a “model” is so-called executable, finally, is it code or model?
- Is the code generation (from model) equal to model transformation?
Ultimately, these issues will lead to a more general question, as I often mentioned:
- What is a model?
- How does a model work?
They need more explicit answers.
Updated: April 23, May 30 (to correct a serious mistake in grammar)