Highly-responsive event-driven architecture. There is an event queue associated with every active object. It helps them receive all the events exclusively through this queue. Whenever there are events like user actions, such as a mouse click, sensor outputs or messages from other threads, an event will be posted to the event queue asynchronously. The event producer need not wait in line for the actual processing of event. The QP framework takes up the responsibility of safely delivering and queuing of events in the queue to the thread of recipient active object where the processing takes place. In the event-driven approach, the processor is busy only at the occurrence of the event. There is a better utilisation of resources and saving of power.
The event-driven approach seen in QP modeler is quite different from that seen in the traditional graphical user interface (GUI) development tools and architectures. Here, the actors not only make use of the nature of the event but also the context (state) of the system. All relevant aspects of the system’s history are very efficiently captured by the state.
Using the tool
A wide range of products in various domains that include consumer electronics, telecommunications, industrial automation, transportation, medical devices, aerospace and robotics already make use of this highly-efficient tool.
The software is licensed under dual-licensing model. If you are developing and distributing open source applications under GNU general public licence (GPL), as published by the free software foundation, then you are free to use Quantum Leaps software under GPL version 3 of the licence, or any later version.
If you are developing and distributing traditional closed source applications, you must purchase one of Quantum Leaps’ commercial licences, which are specifically designed for users interested in retaining the proprietary status of their code.
What to expect
Before going for any tool, it is important to know what the current users feel about it. A user who reviewed the product on the company website says, “The QP implementation is very compact and efficient, yet provides you with lots of features for such a small package. The QP framework code is well-organised and the port files allowed us to easily make any customisations that we needed. All of this has allowed us to focus on our design and functionality instead of reinventing the wheel with another custom-state machine. One of the best parts about this model is that the maintenance code can be easily added, without adding lots of spaghetti code to add in something new. Without using QF, I do not believe we could have delivered on our given schedule dates with the same level of quality.”
Another user feels, “Early versions, of what is today QP, were developed and used by IntegriNautics (now Novariant) in its core GPS receiver technology. A GPS receiver is an ideal test bed for the concepts of QP, having significant domain complexity and requiring hard real-time determinism, small footprint and low power. Subsequently, QP has been adopted across the company and is used in all products on a variety of OS platforms.”
Some users also have a different view on CPU utilisation by using QP. They feel, “Ideally, when QP is used with an operating system, it should have lower CPU utilisation rates and more efficiency. But, in some practical case studies we see, it proves to be just the opposite. We also feel complexities in porting and implementation.”
Most users have given high ratings for the product and found the product to be very useful. But, some users feel that the product did not meet their expectation in certain aspects. The decision on whether the user should go for QP framework should be based on case study, taking into consideration the unique constraints of the system being built.
Download latest version of the software: click here
The author works at EFY