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.

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:

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.

Release notes

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