The Model Driven Software Network

Raise your level of abstraction

We are working on an interesting development of an MDA/xUML tool.

Enterprise Analyst ( currently offers:


- UML compilation (class diagram, states diagram, use case diagram)
- UML interpretation - from classes and states to objects and execution
- OCL and implementation language support (implementation by capture - the tool will generate "methods' code" as the modeler simulates its behavior! No coding!)
- UML object and sequence diagram generation
- static model analysis and metrics
- etc.

It is basically an UML virtual machine enchanced by a simple implementation language. Some screen-shots are added for reference. Demo videos are available on-line.

We are currently working on use case execution with dynamic UI implementation, initially from the class model only, and later from the use cases as well.


Comments are welcome and appreciated!


Aleksandar Orlic.

Views: 116


Reply to This

Replies to This Discussion

Interesting tool indeed, Aleksandar. I was a bit puzzled by the feature named "implementation by capture". I am wondering whether this would be any easier than to describe the behavior using some textual notation.


Hello Rafael!

Thank you for your reply. Good point you've made!

I think only time will show real value of, still experimental feature, "implementation by capture".

Our central idea is to remove the main difficulty of traditional programming - a need to IMAGINE what his code will do, once executed. Maybe some experienced developers are not aware of this, but this requires an important mental effort and of course is highly error-prone.

The point of our method is that the code is "written" in the execution-time, so the one who "writes" it actually see the results in the same time and his mind is free from costly “imagination". Imagination of course is great and needed, but we believe it should be used in the more abstract level (model itself) instead of the low-level behavior details.

Learning a programming language is not a minor issue as well, with whole this rapid change of technologies, etc. However, the exact way to capture code in execution time can perfectly be done "by typing" if one prefers, this should not be a big deal.


I get the idea and motivation, just wonder what the limits for specifying behavior in this fashion are. For instance, how does one method that mixes a loop and a conditional statement based on input parameters?

I guess it depends on the number of possible observable outcomes, and specifying things this way might force one to ensure any method has as small a number of outcomes as possible. And that might be a good thing.

Regardless, I don't want to sound skeptical, I actually give you guys kudos for trying something quite different (yet simple).

Good luck.

Another good point Rafael! Sequential code is relatively easy to "capture", but we had a lot brainstorming about the flow control instructions and all the possible branching.

Well, we capture the sequence first, and then "add" the conditions manually around the certain parts of it. IF-ELSEs, LOOPs or collection-iterations are available. It's quite easy and natural, as you can see it as "capturing" all the different execution scenarios...

We decided NOT TO ALLOW nesting of those structures! Of course, overlapping and shpagetti-style is absolutely out-of question. Just like you said it yourself, we also consider that good code is simple and that there method-code should be trivial.

We are trying to somehow make the developers think on the model-level and put the complexity over there, instead in the complex validations inside the methods. Conceptual modeling surely permits this.

Methods are only for "filling gaps".

The next build will incorporate UI prototype and will demostrate all the power of conceptual modeling. And its first version will not even consider methods! :)
Looks interesting. Please let us know when you get a video showing this feature. Cheers,





© 2019   Created by Mark Dalgarno.   Powered by

Badges  |  Report an Issue  |  Terms of Service