YAKINDU, Statecharts, Embedded, State Machine, english

New and noteworthy: YAKINDU Statechart tools august release

Today we released YAKINDU Statechart Tools Standard and Professional Edition in version 3.4.0. Among several bug fixes, the 3.4.0 release comes with a pile of new cool features:

  • Model Search (Standard and Professional Edition):
    You can now search for statechart elements; even better, you can search for references of events, variables and so on.
  • SCXML Domain (Professional Edition):
    The SCXML domain allows to generate SCXML files from your statechart. Also, the statechart execution semantics during simulation is the same as specified in the SCXML Standard. And of course you can use SCTUnit for testing out of the box.
  • SCTUnit for C Domain (Professional Edition):
    You can now use the SCTUnit testing framework together with C domain statecharts, i.e. in your unit tests you can access all C elements which your statechart can access via its imported header files.


Model Search

The larger the model, the greater the need to quickly search for elements, for example, all states with a given name resp. name pattern, all occurrences of a certain variable etc. This is now possible with the new model search integrated in the Eclipse search dialog:


The model search allows you to use regular expressions and to filter for the kind of elements you want to search for. Once the search is performed, its results are listed in the search view where you can quickly navigate to the corresponding statechart elements.

A similar but slightly different use case is to search for all references of an element. You can find this option now in the context menu. The results will be listed in the same view as for the standard model search.


SCXML Domain

This version of YAKINDU Statechart Tools comes with an SCXML domain made to facilitate generating SCXML files from YAKINDU statecharts. SCXML, short for Statechart XML, is a statechart interchange format based on XML, standardized by the W3C. All states, events, variables and so on are defined in the XML. SCXML relies on external engines to execute the statechart according to the standard, which allows a statechart defined in SCXML to be highly portable. Like other XML based formats, it is only an interchange format and hence not really suitable for direct editing.

YAKINDU Statechart Tools Professional Edition with its SCXML domain allows you to design and verify statecharts exactly according to the SCXML standard. The built-in simulation engine of YAKINDU Statechart Tools Professional Edition was adopted to reflect the execution semantics of SCXML correctly. And of course, the SCTUnit framework takes the SCXML domain into account as well, so you can be sure that the test results reflect the behavior of the SCXML engine of your choice. 

To see everything in action we have added an example to our example wizard. This example was taken from the Qt examples and modeled with YAKINDU Statechart Tools. It contains a traffic light statechart which is on-the-fly transformed into an SCXML file. You can edit, simulate and test the statechart as you are used to in YAKINDU. Additionally, the example comes with some Qt code, so you can run it in your Qt environment and see the traffic light in action.


Speaking of our example wizard, we also put some effort here to provide a cleaner, more structured appearance. You should give it a try and get inspired by our increasing amount of examples!

SCTUnit for C Domain

We have adopted our testing framework SCTUnit to also work with C domain statecharts. This means, you can now write unit tests for your C statecharts in SCTUnit, execute them, and also generate GTests, for execution on a build server, for example.

In SCTUnit you can easily mock the environment your state machine is interacting with by raising events or mocking operation results and then verify corresponding state changes or outgoing events. When writing SCTUnit tests for your C statechart you can access all C elements (variables, operations, datastructures) that are also made accessible in your C statechart by the imported header files. 

We have added an SCTUnit test suite to our coffee machine example which you can find in our example wizard. Executing the test suite will also reveal our coverage view showing you which states and transitions have been covered by your tests.





Apart from these new features we also worked on many smaller improvements, bug fixes and better performance:


  • Added a new page to the statechart creation wizard that shows a description text for the selected statechart domain, so you can better understand what this domain stands for (#2097)
  • Improved error message when generator model refers to non-existing statechart (#2117)
  • Show error message if region contains an unnamed and a 'default' named entry (#2051)
  • Add validations and content assist for entry/exit points (#2088, #2068)
  • New statecharts will be now annotated with @EventDriven and @ChildFirstExecution per default (#2073)
  • Added validation rule for synchronization nodes that contain outgoing triggers (#2071)


  • Fixed strange positioning of transition arrows at exit nodes (#2158)
  • Fixed a bug which in certain situations made synchronization nodes being traversed while not all incoming states were active (#1386)
  • Fixed several problems with toggling the documentation mode (#1939)
  • Fixed usage of equally named Java operations from different interfaces during simulation (#2095)
  • Fixed “<” and “>” signs being replaced with 0 and 2 in C# code generation (#2066)
  • Removed unused functions from generated event driven Java code (#2020)
  • Removed unused functions from generated event driven C++ code (#2019)
  • Fixed rename refactoring via context menu for Linux (#2023)
  • Fixed several scoping issues in SCTUnit
  • Fixed problem in SCTUnit when used with cycle-based statecharts
  • Several improvements for SCTUnit C++ generator
  • Make C++ methods defined inline in class definition available in C/C++ domain
  • Fixed calling function pointers from structs in C/C++ domain

Performance / Stabilization

  • Some performance improvements for pinned definition section (#1976, #2030)
  • Fixed a problem that caused a deadlock in certain situations
  • Fixed refreshing/updating of references when files get deleted/added

About Thomas Kutz

Thomas Kutz works as a software engineer at itemis AG in Lünen, Germany. Holding a master's degree in computer science and artificial intelligence, his main interest is in developing tools that make software development more efficient and enjoyable.