YAKINDU Statechart Tools 3.0.0 (Jul 18, 2017)

This release is the first major release introducing the YAKINDU Statechart Tools Standard and Professional Editions.

In the last years, YAKINDU Statechart Tools has become more and more popular. This is shown by an ever increasing number of users who use the tool for both commercial and non-commercial purposes, e.g. in academic research. This goes hand in hand with increasing demand for new features and professional support.

In addition to this continuous growth, we also want to ensure sustainable support for the future. So the Standard Edition complements the Professional Edition and we believe that both editions better address our users demand for statechart modeling and development solutions. Both editions are intended for commercial use. For academic and non-commercial use free licenses are available.

The Standard Edition comes with:

  • statechart unit testing support – a widely requested feature (BETA)
  • support for declarative execution semantics
  • usability improvements
  • code generator improvements

The Professional Edition is built on top of the Standard Edition. Thus, all the new features available in the Standard Edition, like our testing framework SCTUnit , are also available in the Professional Edition. In addition to that, the Professional Edition provides a tight integration of statecharts with C code as well as the possibility to use breakpoints and snapshots for debugging your state machine.

The Professional Edition and comes with the following new features and improvements:

  • possibility to import C system headers using the deep C integration
  • very large header file support (also deep C integration)
  • statechart unit testing support - a widely requested feature (BETA)
  • support for declarative execution semantics
  • usability improvements
  • code generator improvements

System Header Imports

Besides fixing several smaller issues, we took our time in reworking some internals of the deep C integration, especially when it comes to handling header imports. The most notable difference for the user is the possibility to include systems headers in your statechart model.

As you may have noticed the import syntax slightly changed. The preferred way now is to use a string literal to import a header file. However, the old syntax is still supported, but deprecated.

Very Large Header File Support

YAKINDU Statechart Tools are used in many different application domains with different project sizes. Especially in the automotive domain, when dealing with large AUTOSAR models, it is not uncommon to have thousands of source files with sizes up to several MBs with hundreds of thousand of declarations. In order to provide a very good user experience while editing statecharts and also for the code generators, we reworked our indexing infrastructure which is now remarkably faster while using less memory.

SCTUnit - The Testing Framework for State Machines

With this release, we introduce a beta version of our testing framework SCTUnit. SCTUnit allows test-driven development of YAKINDU Statechart Models. These tests can be executed directly within your IDE to check if the model behaves as expected. It also generates unit tests for Java, C and C++.

Features that can be used in SCTUnit are:

  • Execute tests directly in your IDE
  • Code generators for C/C++ ( GTest & GMock ) and Java ( JUnit & Mockito )
  • Mocking operation return values
  • Verifying operation calls and their parameters
  • Virtual Time - easy testing of time triggers

For more information, see our online documentation .

Statechart Execution Semantics

Users now specify the concrete variant of execution semantics in the statechart itself. In previous versions you specified cycle based or event driven semantics using run configurations. Now this is specified using so called annotations. Annotations are also used to specify if the execution order in a hierarchical statechart chart should be parents-first or child-first. For more information, see our online documentation .

Filter for Generator Models

In some cases it might be inconvenient to execute all generator models during a project build, especially if you have different generator models for different use-cases, for example, headless execution. To provide a more fine-grained control of which ones should be executed, it is now possible to exclude particular generator models or entire folders from the automatic build execution in the project’s properties.

Deep C Integration Improvements

  • Support for variadic functions (variable length argument lists)
  • Simulation of C statecharts only shows used elements in simulation view

Usability Improvements

  • Choice nodes can now be resized with a fix aspect ratio
  • Perspective switches back to modeling view when simulation terminates
  • Note attachments can be deleted now
  • In simulation view, operations have a distinctive icon now
  • In generator model creation wizard, the order of statechart models is aligned with the one in project explorer
  • Fading time for snap-to-grid support lines is reduced for better user experience
  • Warning for sgen files that do not contain any entries
  • It is now possible to use binary literals like ‚0b01011’ as integer values
  • Hint for content assist in definition section
  • Double click drag tracker added for notes
  • Color of active states in simulation is changed to yellow now
  • Disabled auto reveal on selection

Code Generation Improvements

  • Removed magic numbers in generated C code
  • Fixed isActive() method to return correct values for inactive state machines
  • For C++ code generation, StatemachineInterface.h is placed into library target folder

Bug Fixes

  • Fix display of error markers
  • Fix TODO and FIXME markers
  • Bug in AbstractTypeSystem.remove(Type)