Enhanced State Machine Generator for BOUML
BOUML is a free UML 2 tool box including a modeler allowing you to specify and generate code in C++, Java, Idl, Php, Python and MySQL.
BOUML is extensible, and the external tools named plug-outs can be written in C++ or Java, using BOUML for their definition as any other program. Plug-outs interact with BOUML via a network socket. In particular BOUML contains built-in State Machine Generator that generates C++ classes implementing a behavioral state machine from a state machine diagram.
Unfortunately, generated behavioral state machines are not fully compliant with OMG Unified Modelling Language (hereafter UML) and Precise Semantics of UML State Machines (hereafter PSSM) specifications as shown in the table below. Enhanced State Machine Generators aims to improve that situation. The current status of the effort is shown in the table too.
Test | Built-in State Machine Generator | Enhanced State Machine Generator |
---|---|---|
UML-Compound Transition Example | ❌ | ✔️ |
UML-Choice 001 | ❌ | ✔️ |
PSSM-Transition 010 | ✔️ | ✔️ |
PSSM-Transition 011-A | ❌ | ✔️ |
PSSM-Transition 011-B | ❌ | ✔️ |
PSSM-Transition 011-C | ❌ | ❌ |
PSSM-Transition 011-E | ❌ | ❌ |
PSSM-Entering 004 | ❌ | ✔️ |
PSSM-Entering 005 | ❌ | ✔️ |
PSSM-Entering 009 | ❌ | ✔️ |
PSSM-Event 016 | ❌ | ✔️ |
PSSM-Event 018 | ✔️ | ✔️ |
PSSM-Exiting 001 | ❌ | ✔️ |
PSSM-Exiting 004 | ✔️ | ✔️ |
PSSM-Exit 001 | ✔️ | ✔️ |