Feature Higlights

  • Graphical modeling 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

About QM™

What is it?

QM™ (QP™ Modeler) is a free, cross-platform, graphical UML modeling tool for designing and implementing real-time embedded applications based on the QP™ active object 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.

What's special about it?

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.

How does it work?

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.

How is it licensed?

The QM™ graphical modeling tool is freeware. It is free to download and free to use for any purpose, including commercial projects, 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.

Best ROI in the Industry

The ultimate criterion for success of a modeling tool is the return on investment (ROI) you get from using it. As it turns out, the ROI of software modeling is lousy unless the models are used to generate substantial portions of the production code. For example, according to the UML Modeling Maturity Index (UMMI), without code generation UML can reach at most 30% of its potential, and this is assuming correct use of behavioral modeling (i.e., state machines). Without it, the benefits are below 10%. This is just too low to outweigh all the costs.

Consequently, the main philosophy of QM™ is to provide the most effective code generation at the lowest overall cost to you, whereas the term "cost" is understood here much more broadly than the cost of the tool itself and also includes: the learning curve, the added maintenance costs, as well as the hidden costs of "fighting the tool". QM drastically reduces the complexity of the code engineering process compared to other "high ceremony" tools on the market, such as IBM Rhapsody, Mentor Graphics Bridgepoint, Sparx Systems Enterprise Architect, or IAR VisualSTATE. The biggest difference of QM™ is that in QM you skip several layers of indirection (such as creating Platform Independent Models) and you work much closer to the code than in most other tools. Any code that you enter into your QM model (and every model regardless of the tool has a lot of textual information, such as actions executed by state machines) is directly in C or C++, depending on your initial choice of the QP framework type. Specifically, no indirection of an "Action Language" is used. Also, QM generates code for a specific framework (QP/C, QP/C++, or QP-nano). Again, this drastically simplifies code generation, because all the mechanisms you need inside state machine actions, such as generating events, posting or publishing events, requesting timeouts, etc. are provided by the external framework and don't need to be duplicated in the tool.

QM™ Tutorials

Related Blog Posts

Screenshot Gallery

QM user interface Code generation Copy-and-paste diagrams in EMF vector format

QM on dual monitors

The QM™ graphical modeling tool can handle massive models and works best in this case with a lot of screen real estate. The following screen shot shows QM™ on dual, full HD monitors (3840x1080 pixels total). QM™ remembers the most recently used arrangement of the dock windows and toolbars, so it is easy to customize it for any screen arrangement. In the screen shot below, you can see from the left: the QM online help, the Model Explorer, the Property Editor, the Bidrd's Eye view, the Log window (below), and the main MDI-window with diagrams and code on the right. (Click on the image below to see the original size).

Bug Reports and Feature Requests

QM™ Help

Last updated: April 17, 2014