Frequently asked questions for the state machine tools.

General questions:

What kind of state machine tools to you provide ?

  • state machine code generators for C#, C++ and Java, they transform a state machine xml description into source code, whhich is an extended version of the state pattern.
  • state diagram editor: an online and a desktop application to visualize and edit state diagrams.

Who is it for ?

Software developers/engineers/designers, programmers, coders, students in science and technology, etc ...

Who kind of problems these software are trying to solved ?

Implementing, maintaining and visualizing large state machines is time consuming and error prone. These state machines tools aims at building quality software quicker.

Finite State Machine Modeling Language (FsmML)

What is FsmML ?

FsmML stands for Finite State Machine Modeling Language. It is a language to describe state machines in a simple XML format.

What FsmML is used for ?

State machines described in FsmML are the input of the state machine code & diagram generators. A unique description is used to generate the diagram and the source code.

Where are the examples ?

Visit the state machine examples page to find out.

What kind of state machines can be described ?

Real world state machine can described, FsmML supports hierarchical, concurrent, asynchronous state machines. More FsmML features here ...

What is the difference between FsmML and XMI (the UML file format) ?

FsmML is human readable and writable, XMI not.

State machine code generators

How is the generated code implemented ?

The generated code is implemented according to an extended version of the state pattern.

In which programming language the code can be generated

C#, C++, Java

StateBuilderDotNet - State machine code generator for C# and VB.NET

Which Visual Studio version is supported ?

Visual Studio 2005, 2008 and 2010

Which .Net framework is needed to run the code generator ?

The .Net framework version 4.0 is required to run the code generated

Which .Net framework the generated code can be targeted ?

The generated can be targeted to the .Net framework version 2.0, 3.5 and 4.0

Does the generated code run on Windows Phone 7 ?

Yes, the generated code runs on Windows Phone 7.

StateBuilderCpp - State machine code generator for C++

On which platform does StateBuilderCpp run ?

StateBuilderCpp runs on Windows XP/Vista/7, MacOSX and Linux.

Which C++ compiler can compile the generated code ?

The C++ generated code has been tested with all majors C++ compilers: Visual Studio 2005/2008/2010, GCC on Windows, MacOSX, Linux and Android.

Is the state machine library source code available ?

Yes, the source code of state machine library used by the generated code is provided.

Does the generated code depends on a third party library ?

It depends, for synchronous state machine, only the standard c++ library is required. For asynchronous state machine, either Qt, Boost or libev is required.

Can the C++ generated code be cross-compiled, i.e embedded system ?

Yes, the C++ generated code be cross compiled.

StateBuilderJava - State machine code generator for Java

On which platform does StateBuilderJava run ?

StateBuilderJava runs on Windows XP/Vista/7, MacOSX and Linux.

How to generate state machines in Java ?

StateBuilderJava can be invoked from the command line , from an ant task or from a maven plugin.

I double click on StateBuilderJava, what do I do now ?

The StateBuilderJava GUI is only used to install a licence.

State diagram editor

Why another state diagram editor ?

The state diagram layout is completely automatic, no time is wasted to organize and place states on the diagram.

Is there a desktop version of the state diagram editor ?

Yes, a Windows version of the state diagram editor is available. This desktop application allows to open and save state machines from the disk.

Transitions are not represented by arrows ?

Unlike traditional state machine graphical notation, transitions are not represented by arrows but by a table, this optimizes the space on the diagram, allowing to fit more information on the screen.