YAKINDU Statechart Tools
User Guide

What is a state machine?

A state machine is a behavior model. It consists of a finite number of states and is therefore also called finite-state machine (FSM). Based on the current state and a given input the machine performs state transitions and produces outputs. There are basic types like Mealy and Moore machines and more complex types like Harel and UML statecharts.

What are YAKINDU Statechart Tools?

YAKINDU Statechart Tools (YAKINDU SCT) is a modular toolkit for developing, simulating, and generating executable finite-state machines (FSM) or simply state machines.

Quick reference

This chapter gives an overview of the building blocks a statechart consists of and their semantics. It also shows the textual syntax used to express behavior inside the graphical model. If you are new to YAKINDU Statechart Tools, this is a good starting point to learn the main concepts.

Editing statecharts

This section explains how you can edit statecharts using YAKINDU Statechart Tools.

Simulating statecharts

Simulating a statechart model means to execute it, raise events manually, have time-based and other events being triggered automatically, and observe the model’s behavior.

Generating state machine code

Ultimately, you will need your state machine not only as a nice graphical statechart model. This chapter explains how to generate it as executable code.

Testing state machines

Learn more about test-driven statechart modelling and how to use SCTUnit to develop your statechart model step by step using a test-driven approach.

Using C/C++ code in statecharts

The YAKINDU Statechart Tools Professional Edition comes with a Deep C/C++ Integration feature, which allows for using C/C++ types, variables, and operations directly within the statechart model. C/C++ header files located in your workspace are automatically recognized by the tool, and all contained type and operation declarations are made accessible in the statechart editor with all its editing features like code completion and validation. In addition to your custom C/C++ types, the C99 standard primitive types, like int16_t, are also available out of the box.

SCXML domain

YAKINDU Statechart Tools Professional Edition comes with an SCXML domain which allows to generate SCXML code from your statechart, as well as to simulate and test it in a way that is compliant to the SCXML execution semantics.

Statechart language reference

The statechart language is used to describe statecharts. It consists both of graphical and of textual elements.

Multi state machine modeling

The behavior of large systems is often too complex to be captured by a single statechart. So if a statechart gets too large you should think about splitting it into two or more smaller parts. Beside the fact that the smaller state machines are easier to handle and maintain there are additional reasons for using multiple state machines instead of single monolithic ones:

Embedded Systems Integration Guide

This chapter demonstrates how to integrate generated C code from YAKINDU Statechart Tools on your device and ends up by referring to according examples for each scenario. State machine code generated by YAKINDU Statechart Tools can effectively be used on embedded systems. The integration contains different parts, but can mostly be described in a generic way, as most steps of the integration are platform independent.
The differences of the integration mostly stem from the selected execution semantics – cycle based or event driven – as well as the used functionalities, such as in, out and timed events. Other best practice implementation patterns can be based on whether a bare metal microcontroller or an operating system is used. So, there are different factors which may have an impact on the integration:

YET debugging and testing state machines on target using execution traces

YAKINDU statechart models are executable. There are many use cases that require information about the execution itself. Examples are remote debugging of state machines, execution analysis, testing, co-simulation and others. This information may be provided live during the execution or it could be used post-mortem when the execution of the system already finished. In any case this information must be explicit and it must be possible to store it persistently and provide other tools access to this information.

Lab features

Researching, prototyping, and putting our ideas into code, aside from the day-to-day business, is an essential part of our development culture. YAKINDU Labs is a collection of projects that are currently in beta phase and therefore not yet released with any YAKINDU product bundles. As we love early feedback, we regularly blog about what’s going on behind the scenes. So try it, and get in touch with us!

Installing YAKINDU Statechart Tools

In order to start working with YAKINDU Statechart Tools, you have to install the software on your computer. The installation process is pretty simple, just download the archive, unpack it, and start the executable.

Migration guide to 4.x

Every new version of YAKINDU Statecharts Tools contains a lot of new features and improvements. Since today, every new released version was fully backward compatible to older versions due to careful design.
However, with the new major release of version 4.0, we decided to leave some old perceptions behind. This document will cover all incompatible changes that were introduced from version 3.x to version 4. Read this document carefully to ensure a seamless migration from your existing 3.x models to the latest version 4.0.

Release notes

A list of new and noteworthy features as well as bugs we have tackled down in the particular releases.

Appendix Release 3.x specific topics

The user guide addresses all features up to the most recent tool version. Most topics covered are valid for all YAKINDU Statechart Tools versions including 3.x and even 2.x releases. Nevertheless there are some topics which are specific topics which are relevant for users of 3.x releases.