Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparison of Boost StateCharts vs. Samek's "Quantum Statecharts"

I've had heavy exposure to Miro Samek's "Quantum Hierarchical State Machine," but I'd like to know how it compares to Boost StateCharts - as told by someone who has worked with both. Any takers?

like image 530
Brent Arias Avatar asked Aug 25 '10 21:08

Brent Arias


1 Answers

I know them both, although at different detail levels. But we can start with the differences I've came across, maybe there are more :-) .

Scope

First, the Quantum Platform provides a complete execution framework for UML state machines, whereas boost::statechart only helps the state machine implementations. As such, boost::statechart provides the same mechanism as the event processor of the Quantum Platform (QEP).

UML Conformance

Both approaches are designed to be UML conform. However, the Quantum Platform executes transition actions before exit actions of the respective state. This contradicts the UML, but in practice this is seldom a problem (if the developer is aware of it).

Boost::statechart is designed according to UML 1.4, but as far as I know the execution semantics did not change in UML 2.0 in an incompatible way (please correct me if I'm wrong), so this shouldn't be a problem either.

Supported UML features

Both implementations do not support the full UML state machine feature set. For example, parallel states (aka AND states) are not supported directly in QP. They have to be implemented manually by the user. Boost::statechart does not support internal transitions, because they were introduced in UML 2.0.

I think the exact features that each technique supports are easy to figure out in the documentation, so I don't list them here.

As a fact, both support the most important statechart features.

Other differences

Another difference is that QP is suitable for embedded applications, whereas boost::statechart maybe is, maybe not. The FAQ says "it depends" (see http://www.boost.org/doc/libs/1_44_0/libs/statechart/doc/faq.html#EmbeddedApplications), but to me this is already a big warning sign.

Also, you have to take special measurements to get boost::statechart real-time capable (see FAQ).

So much to the differences that I know, tell me if you find more, I'd be interested!

like image 135
theDmi Avatar answered Nov 15 '22 02:11

theDmi