哪个状态机器执行框架用于C ++实现UML语义?
-
04-10-2019 - |
题
我正在寻找一个框架,该框架可以执行层次结构机器(HSM)。
这些是该框架的要求:
- 符合UML状态机的语义(尽可能多)
- 至少支持
- 运行到完成语义
- 等级状态
- 进入和退出行动
- 过渡动作
- 警卫
- 带有自定义参数的事件
- 面向对象或至少不禁止OO设计
目标平台是具有OS的中型至大型嵌入式系统。
您知道满足上述要求的框架吗?您的框架有什么利弊?
解决方案
查看 量子平台.
我在几个嵌入式项目(从非常小到非常大)上使用了它,它支持您需要的所有子弹项目等等。
QP的网页比我在这里做的更好地解释了自己。
请注意,QP并未实施UML规范中指定的功能的100%,但是清楚地解释了出发性,并且在我对QP的所有经验中,它们都不是该项目的问题。
您似乎还知道2个Boost Statechart软件包。
其他提示
你应该去检查 提升MSM, ,对于Boost 1.44来说是新的,但似乎很完整。我自己还没有尝试过,但看起来很有希望。
截至今天,有一个新的 C ++ (支持C ++ 11和C ++ 03具有Boost)可用的替代方案。叫做 Yasmine (我是建筑师)。它满足了上述所有要求。
一些优点和缺点(从Yasmine网页引用):
使用Yasmine的优点
- 她提供了UML状态机语义学的完整实现。
- Yasmine是使用C ++ 11的现代C ++实现(也可以使用C ++ 03支持)。
- 因为它是c ++(而不是c)代码很好地集成到OO代码中。
- 她有据可查[...
- 因为她是开源的,您可以检查她的实现。这也保证了长期的可用性和可用性。
- 该库使您可以在运行时创建状态机。
- [...]
Yasmine不是什么
她不是一个最小脚印库,无论可用的资源很少,在每个系统上都可以优先运行。 Yasmine并不是资源的饥饿,但她不能(也不想)与基于开关案例的裸机无抗曲库竞争。
笔记
我知道这是一个古老的问题,但这是“ C ++ UML状态机”的Google#1,这使其非常相关。
如果您正在寻找一个支持层次和并发状态机的框架,则使用UML语义(条目/退出,过渡,警卫,带有参数的事件,异步/同步),请查看我的 状态机代码和图生成器.
相反,在“手动”实现状态计算机时,请在简单的人类可读且可写的XML描述中描述状态计算机,并让状态计算机生成器在C ++,C#或Java中编写代码源。
实际上,对于C ++版本,对于中/大尺寸嵌入式系统,可以轻松地对生成的代码进行交叉编译。它已经完成了。