Architectural viewpoint: Programming technology and paradigms for QP/C++ Framework.
Purpose
The architectural technology Viewpoint classifies the elements of the problem and the solution around well-known software technologies and paradigms.
Architectural Views
This architectural viewpoint frames the following views:
The following traceable architectural views explain the applied programming technologies and paradigms:
Architectural view: Event-Driven Architecture (EDA) for QP/C++ Framework.
Description
The QP/C++ Framework component is a reusable event-driven architecture (EDA), where all interactions are triggered by events, which are delivered asynchronously and are processed without blocking.
Concerns
Anti-Concerns
The non-blocking EDA architecture underlying the QP/C++ Framework component is in contrast to the sequential architectures, such as a traditional "shared-state concurrency with blocking" in the Real-Time Operating System (RTOS), where the application explicitly awaits events in-line in the hard-coded blocking calls to the RTOS (e.g., time-delay, semaphore, etc).
Backward Traceability
Forward Traceability (truncated to 2 level(s))
Architectural view: Object-Oriented (OO) paradigm for QP/C++ Framework.
Description
This architecture specification of the QP/C++ Framework component assumes an object-oriented view, utilizing the concepts such as:
These concepts are known to promote modularity, layering, and overall organization of the software.
Concerns
Anti-Concerns
The object-oriented view does not restrict the choice of the programming language to only those commonly considered "object-oriented". In traditionally procedural languages, such as C, object-oriented concepts can be applied as design patterns. A set of such patterns for the C programming language is described in the reference Object-Oriented Programming in C [OO-in-C:23].
Backward Traceability
Forward Traceability (truncated to 2 level(s))
Architectural view: Application framework software architecture for QP/C++ Framework component.
Description
The QP/C++ Framework component is an application framework that provides a reusable architectural substrate for a well-defined problem domain: embedded, real-time, event-driven systems. A defining property of any application framework is inversion of control, where the framework, not the application, owns the main control flow. The QP/C++ architecture incorporates this principle by orchestrating event delivery, event queuing, state machine execution, and timing services while applications supply only domain-specific behavior (the state machine specification).
This architectural view aligns naturally with the Event-Driven Architecture (ARCH_QP_EDA) and the Object-Oriented Architecture (ARCH_QP_OOA). Together, these views show how QP/C++ provides a structured, deterministic runtime that instantiates the OO abstractions and enforces the event-driven execution semantics required for safety-critical embedded systems.
Concerns
An application framework has the following key characteristics:
Anti-concerns
Software organized as a framework significantly differs from software organized as a "toolkit", such as a traditional Real-Time Operating System (RTOS).
Backward Traceability
Forward Traceability (truncated to 2 level(s))