Low Ceremony State Machine Tool
Quantum Leaps QM™ is a free graphical modeling tool for designing and implementing real-time embedded software based on advanced hierarchical state machines (UML statecharts). QM™ runs on Windows, Linux and Mac OS-X and allows you to:
- break down your software into concurrent, event-driven components called active objects;
- to graphically design the hierarchical state machines associated with these active objects; and
- to automatically generate production-quality, MISRA-compliant, C or C++ code that is fully traceable from your design.
Compared to most other “hi ceremony” modeling tools on the market today, QM™ is much simpler, code-centric, and relatively low-level. This characterization is not pejorative. It simply means that QM™ maps the design unambiguously and directly to C or C++ code, without intermediate layers of "Platform-Independent Models" (PIMs), "Platform-Specific Models" (PSMs), complex "Model-Transformations", or "Action Languages". All actions executed by state machines are entered into the model directly in C or C++.
Built-in Real-Time Frameworks
As most other tools capable of code generation, the models you create with QM™ are based on an event-driven, real-time framework. This is because such a framework provides well-defined "framework extension points" designed for customizing the framework into applications, which in turn provide well-defined rules for generating code. However, much of the simplicity of QM™ derives from the fact that it comes with the built-in lightweight QP™ frameworks (QP/C, QP/C++, and QP-nano), as opposed to supporting an open-ended number of yet-to-be-defined frameworks and programming languages.
Capturing the Physical Design
QM™ is a unique modeling tool on the market that allows you to capture the physical design of your code as an integral part of the model, whereas "physical design" is the partitioning of the code into directories and files, such as header files (.h) and implementation files (.c or .cpp files). This unique approach gives you the ultimate flexibly in the source code structure and mitigates the needs to make manual changes to the generated code in order to combine it with hand-written code or existing third-party code. Also, QM™ provides mechanisms to quickly go back and forth between the model and the generated code so that any changes can be conveniently applied directly to the model rather than the code.
No more "Fighting the Tool"
The primary design objective in QM™ was to respect your design decisions as much as possible and leave you in control, not only in the physical design of the generated code, but down to the exact details of arranging your states and routing your transitions. Noting is more frustrating as a tool that suddenly changes the arrangement of your diagrams, after you spent hours arranging the states and routing the transitions.