Modeling and Execution Semantics

New File Extension

Since version 4.0 we changed the file extension from .sct to .ysc to avoid conflicts with other tools using this extension. The old sct file extension can still be used, but we recommend to rename existing models to the new file extension .ysc.

Event-Driven vs. Cycle-Based

YAKINDU Statechart Tools supports two different execution schemes, Event-Driven and Cycle-Based. If you are not familiar with the difference between the execution semantics, you can read more about that topic here. You can select the execution scheme via the @CycleBased or @EventDriven annotations in the statechart declaration section:

Event Driven Annotation

It turns out that the @EventDriven execution semantics is used more often than the @CycleBased semantics, so we decided to use @EventDriven as the new default.
That means, if your model does not have any of the both annotations, you should add @CycleBased(200) to ensure it behaves the same as before.


With the new version 4.0, YAKINDU Statechart Tools support superstep semantics. A super step executes a sequence of single steps until a stable state configuration is reached. You can read more about super steps in our documentation.

Superstep semantics

You can select whether to use superstep semantics via the @SuperSteps(yes) or @SuperSteps(no) annotations. Since the default is superstep semantics turned off, you do not have to change anything for migrating older models. However, it is recommended to add @SuperSteps(no) to your model to make things more explicit.

ChildFirst/ParentFirst execution

YAKINDU Statechart Tools allow to configure the way composite states are executed. It can be configured whether the parent state or its child state(s) are checked first by setting either the @ParentFirstExecution annotation or the @ChildFirstExecution annotation. You can read about this topic in our documentation.
With YAKINDU Statechart Tools 4.0, we changed the default from @ParentFirstExecution to @ChildFirstExecution . So if your model does not define any of these annotations and you are using composite states, you have to add @ParentFirstExecution to ensure that the model behaves like the way before.

Event buffering

Yakindu Statechart Tools 4.0 introduces event buffering for cycle based statecharts and makes it consistent with the event buffering that was already available for event driven statecharts in form of event queues. Event buffering is now activated by default. If you want to preserve the behavior of your 3.x statecharts you have to:

  • specify @EventBuffering(false,false) in cycle based statecharts.
  • specify @Eventbuffering(false,true) for your event driven statecharts if you did not activate the (now removed) inEventQueue code generator option.

In most (but not all) cases keeping the new defaults will have no impact. Read more about event buffering.