Feature Higlights
- Graphical modeling tool based on the UML state machine subset
- Automatic generation of production-quality C or C++ code
- Automatic model verification during the code generation
- Built-in support for QP/C, QP/C++, and QP-nano frameworks
- 100% traceability from design to code
- Ultimate flexibility in generated code design
- Friendly to version control systems (VCS)
- Intuitive diagramming environment for making clean, good-looking diagrams
- Export of diagrams to EMF vector format for direct pasting into MS-Office and Open Office applications
- Modern user interface with docking windows with the layout saved across sessions
- State of the art editors for action code with syntax highlighting
- Undo/redo of all model edits
- Quick Clipboard-based navigation between the model and third-party tools
- Support for user-generated model templates
- Ready-made project examples and online tutorials
- Available on Windows, Linux, and Mac OS X
- Completely free to download and free to use
- Some feature missing? Make a feature request...
What is QM™?
QM™ (QP™ Modeler) is a free, cross-platform, graphical UML modeling tool for designing and implementing real-time embedded applications based on the QP™ state machine frameworks. QM™ provides best-in-class, intuitive diagramming environment and generates very compact C or C++ code that is 100% traceable from your design. QM™ is available for Windows, Linux, and Mac OS X.
The main objective of QM™ is to empower your designs without standing in your way. The tool achieves this at several levels. At the high level, QM™ gives you complete control over all aspects of your design, both the logical structure and physical partitioning into directories and files. The tool respects your design decisions and lets you determine the generated code structure, directory names, file names, and elements that go into every file. You can mix your own code with the synthesized code and use QM to generate as much or as little of the overall code as you see fit. At the low level, QM™ respects your graphical layout as much as possible and will not re-attach or re-route connectors, resize nodes, or adjust text annotations. You will find that you don't need to "fight" the tool.
QM™ is designed as a strictly forward-engineering tool without reverse-engineering capabilities. This means that the code generated by QM™ is not to be modified in any way, because the changes won't be incorporated back into the model. However, the tool provides special mechanisms to very quickly locate any model element from any third-party editor by copying special comments placed in the synthesized code into the clipboard and pasting them into the tool.
QM™ is designed to support fast development cycle and is very friendly to version control systems (VCS). The QM model itself is stored in XML, so it is easy to maintain in a VCS. The code generator is careful not to touch files that have not changed (it always compares the generated file with the file on disk and replaces the latter only when the new file is different.) This avoids unnecessary churn of the code and avoids recompilations to keep the development cycle as short as possible.
Licensing QM™
The QM™ graphical modeling tool is free to download and free to use, but is not open source. During the installation you will need to accept a basic End-User License Agreement (EULA), which legally protects Quantum Leaps from any warranty claims, prohibits removing any copyright notices from QM, selling it, and creating similar competitive products. The EULA also prohibits distributing QM™ from third-party websites. The only legitimate source of QM™ is the state-machine.com website.
Download QM™ for Windows and Linux
You have nothing to lose—it's free!
QM™ Tutorials
Quick overview of the QM™ user interface
Working with third-party tools
Screenshots
QM™ user interface |
Code generation |
Copy-and-paste diagrams in EMF vector format |
Bug Reports and Feature Requests
Last updated: August 11, 2011
日本語
中文
한국어
Français
Deutsch
English
QP™ Frameworks
QM™ Modeling Tool
Companion page to PSiCC2
Companion page to PSiCC1


