QM is available for Windows, Linux, and macOS.
The main goals of the QM™ modeling tool are:
- to help you break down your software into event-driven components called active objects;
- to help you graphically design the hierarchical state machines associated with these active objects, and
- to automatically generate code that is of production-quality and is fully traceable from your design.
The main design objectives for QM™ are simplicity and minimizing the need to "fight the tool". 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++.
As most other tools capable of code generation, the models you create with QM™ are based on an event-driven 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 family of 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.
Note
QM™ assumes a specific overall architecture of your application, which combines object-orientation with the particular model of concurrency, known as active objects (a.k.a. "actors"). In this architecture, software application consists of collaborating, event-driven active objects, which collectively deliver the desired behavior.