It was already some time ago when we realized that YAKINDU Statechart Tools need a fundamental overhaul to facilitate the development of further features our users have been asking for. But as every software developer knows, huge refactorings are never easy and need proper precautions to ensure the same quality is delivered afterwards. And so we took our time, went down some paths we had to go back again, listened to our users’ feedback and finally found a solution of which we think it will make the usage of state machines much more efficient and enjoyable.
So here are the highlights of the new major version 4 of YAKINDU Statechart Tools:
Modeling editor reworked
One of the most prevalent comments about version 3 was that modeling state machines can be very cumbersome, especially when rearranging states and transitions. That is why we put a lot of effort into reworking the graphical editor.
In particular, the live feedback function and the more intelligent transition routing make statechart modeling much more enjoyable. This all comes with a cleaner look and feel and plenty of smaller improvements here and there, like the multi selection function.
Multi state machine support
When modeling complex systems you might want to modularize parts and reuse them. This is now possible on a state machine level with the multi state machine support. State machines can reference other state machines and communicate with them by raising events or by reacting to events. In that way, it is easy to set up a system of collaborating state machines.
Learn more about that feature in our documentation.
Super step semantics
A super step executes a sequence of single steps until a stable state configuration is reached. A statechart can activate super step execution with the new @SuperStep annotation. Super step semantic is supported by the built-in simulator as well as all major code generators (C, C++, Python, and Java).
YET – YAKINDU Execution Trace
The YAKINDU Execution Trace (YET) infrastructure supports interoperability between state machines running in a target application and the YAKINDU tooling. It supports model-level debugging and testing of the state machines based on execution traces.
Model-level debugging may cover two variants. First, a bidirectional online integration based on streams (YET stream). Second, a file-based integration (YET file) which covers offline post-mortem analysis of execution traces.
Python code generator
Until now, the Python code generator was “only” a lab feature and had to be installed separately. With version 4, this generator has the same quality and supports the same features as the other major code generators C,C++ and Java. Consequently, it is now part of the official download bundle.
Migration from version 3.x
With this new major version we decided to leave some old perceptions behind. The statechart models have new defaults when it comes to their execution schemes, and also the generated API has slightly changed for all code generators.
Everything you need to know to make your 3.x models and code work as before, is listed in our migration guide. However, in most cases, your 3.x statecharts will behave as before and the required changes in your code are moderate.