namespace QP { /*! @page design Design @tableofcontents @section oop Object-Orientation As most C++ frameworks, QP/C++ uses classes, inheritance, and polymorphism as the main mechanisms for customizing the framework into applications. The framewok is also layered and consists of components with well defined responsibilities. ------------------------------------------------------------------------------ @section comp Components of QP/C++ The QP/C++ active object framework is comprised of the following components: @image html qp_components.jpg "Components of the QP Framework"
@subsection comp_qep QEP Hierarchical Event Processor QEP is a universal, UML-compliant event processor that enables developers to code UML state machines in highly readable ANSI-C, in which every state machine element is mapped to code precisely, unambiguously, and exactly once (traceability). QEP fully supports hierarchical state nesting, which is the fundamental mechanism for reusing behavior across many states instead of repeating the same actions and transitions over and over again. (See also @ref qep).
@subsection comp_qf QF Active-Object Framework QF is a portable, event-driven, active-object (actor) framework for execution of **active objects** (concurrent state machines) specifically designed for real-time embedded (RTE) systems. (See also @ref qf).
@subsection comp_qk QK Preemptive Kernel QK is a tiny **preemptive**, priority-based, non-blocking, real-time kernel designed specifically for executing active objects. QK meets all the requirement of the Rate Monotonic Scheduling (a.k.a. Rate Monotonic Analysis — RMA) and can be used in hard real-time systems. (See also @ref qk).
@subsection comp_qv QV Cooperative Kernel QV is a simple **cooperative** kernel (previously called "Vanilla" kernel). This kernel executes active objects one at a time, with priority-based scheduling performed before processing of each event. Due to naturally short duration of event processing in state machines, the simple QV kernel is often adequate for many real-time systems. (See also @ref qv).
@subsection comp_qs QS Software Tracing System QS is software tracing system that enables developers to monitor live event-driven QP applications with minimal target system resources and without stopping or significantly slowing down the code. QS is an ideal tool for testing, troubleshooting, and optimizing QP applications. QS can even be used to support acceptance testing in product manufacturing. (See also @ref qs). ------------------------------------------------------------------------------ @section classes Classes in QP/C++ The figure below shows the main classes comprising the QP/C++ framework and their relation to the application-level code, such as the @ref game example application. @image html qp_classes.png "Main Classes in the QP Framework" @next{exa} */ } // namespace QP