有可能在MagicDraw中从状态机生成完整的C/C++/Java代码吗



我想在Magic Draw中从我的状态机生成代码。MagicDraw支持类的代码生成,但不包括状态机选项。我试过使用SinelaboreRT软件。但是,它生成的代码有限。我们需要手动添加"Main"函数和其他在状态中定义的函数。我想知道是否可以生成一个可执行文件或C/C++/Java代码文件,其中包含所有提到的内部状态代码以及"Main"函数?

是的,我知道有三个主要选项:1(制作自己的代码生成器,2(购买商业代码生成器,例如LieberLieber提供了一个看起来相当复杂的代码生成器;或者3(使用一个开源代码生成器,如Papyrus-RT

根据你的目标语言和框架,第一个选项实际上并没有那么难。对于我在MITRE的工作,我已经编写了一个生成器来获取正确形成的Magicdraw模型,并创建可部署的Spring微服务。我使用Spring状态机库来简化STM代码的生成。

我个人发现,从模型创建状态机最方便的方法是UML或任何其他DSL是的组合

Eclipse Papyrus/Eclipse XText/Eclipse XTend

如果你不想使用基于Eclipse的,块中也有新的类型

Langium

但他们现在有点新,但我建议你每6个月检查一次,他们看起来很有希望。

如果你想看看它是如何完成的,我有几个关于它的博客。

基于UML的

Akka有限状态机生成博客2纸莎草和弹簧状态机

基于DSL:

XText和弹簧状态机

最新更新