QM  3.3.0
About QM™

What is it?

QM™ (QP™ Modeler) is a freeware graphical modeling tool for designing and implementing real-time embedded software based on UML state machines (UML statecharts) and the lightweight QP™ active object frameworks. QM™ is available for Windows 64-bit, Linux 64-bit, and Mac OSX.


What is it good for?

The main goals of the QM™ modeling tool are:

What's special about it?

Compared to most other "high 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++.

Main Components of the QP Active Object Framework

As most other tools capable of code generation, the models you create with QM™ are based on an event-driven software 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 limits itself to C or C++, and the QP™ frameworks, as opposed to supporting an open-ended number of programming languages and yet-to-be-defined frameworks.

In QM™ you don't need to re-invent a new architecture for your software from scratch. Instead, you re-use the active-object architecture provided by the QP™ frameworks. This high-level architectural-reuse, as well as low-level reuse of services provided by QP™, lead to a dramatic improvement of your productivity.

Another simplifying aspect is that QM™ is a strictly forward-engineering tool without attempts to support round-trip-engineering. Instead, QM™ is a unique 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 3rd-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.

Keeping the QM™ tool small and simple has many real benefits. Once you learn the architecture of the underlying QP™ frameworks, you can learn the tool quickly without constantly "fighting the tool". You can understand, and indeed regularly use most of the QM™ features.

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.

The code generated by QM™ is licensed under the same terms as the underlying QP™ framework, for which the code has been generated. Please also refer to the section Generating Comments in this document and online to QP licensing for more information.

QM™ internally uses the Qt Toolkit under the Lesser GNU General Public License (LGPL v2.1). Please refer to Section Compliance with LGPL v2.1 in the QM™ License for more information on how to obtain, install, and build the Qt toolkit from sources.

Contact Information

Web: state-machine.com
Email: info@state-machine.com
Support: Free Support Forum


Copyright © 2002-2015 Quantum Leaps, LLC. All Rights Reserved.

Next: QM™ License