我曾对Miro Samek的“量子层次状态机”进行过大量介绍,但我想知道它与Boost StateCharts相比有何不同-曾与两者合作的人都告诉过。有没有人?
最佳答案
我知道他们两个,尽管细节级别不同。但是我们可以从我遇到的差异开始,也许还有更多:-)。
范围
首先,Quantum平台为UML状态机提供了完整的执行框架,而boost::statechart仅帮助实现状态机。因此,boost::statechart提供与Quantum Platform(QEP)的事件处理器相同的机制。
UML符合性
两种方法都被设计为符合UML。但是,Quantum平台在相应状态的退出 Action 之前执行过渡 Action 。这与UML相矛盾,但是实际上,这很少有问题(如果开发人员知道的话)。
Boost::statechart是根据UML 1.4设计的,但是据我所知,在UML 2.0中执行语义并没有以不兼容的方式发生变化(如果我错了,请纠正我),所以这也不应该成为问题。 。
支持的UML功能
两种实现都不支持完整的UML状态机功能集。例如,在QP中不直接支持并行状态(即AND状态)。它们必须由用户手动实现。 Boost::statechart不支持内部转换,因为它们是UML 2.0中引入的。
我认为每种技术支持的确切功能都很容易在文档中找到,因此在此不列出它们。
事实上,两者都支持最重要的状态图功能。
其他差异
另一个区别是QP适用于嵌入式应用程序,而boost::statechart也许是,也许不是。常见问题解答说“这取决于”(请参阅http://www.boost.org/doc/libs/1_44_0/libs/statechart/doc/faq.html#EmbeddedApplications),但是对我来说这已经是一个很大的警告信号。
另外,您必须进行特殊测量才能获得boost::statechart实时功能(请参阅FAQ)。
我所知道的差异是如此之多,告诉我,如果您找到更多,我会很感兴趣!