QP/C++ Real-Time Event Framework 8.1.5
Loading...
Searching...
No Matches
Technology Viewpoint

IntroductionContext Viewpoint

Architectural Viewpoint


ARCH_QP_TECH_VP

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:


Architectural Views

The following traceable architectural views explain the applied programming technologies and paradigms:


ARCH_QP_EDA

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

  • programming paradigm
  • software organization
  • real-time processing

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

  • REQ_QP_NF_21: QP/C++ Framework component shall be deterministic in CPU utilization.
  • REQ_QP_NF_24: QP/C++ Framework component shall facilitate deterministic real-time performance analysis (such as Rate-Monotonic Scheduling/Analysis).

Forward Traceability (truncated to 2 level(s))



ARCH_QP_OOA

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:

  • encapsulation (classes)
  • inheritance
  • polymorphism
  • object-oriented design patterns
  • UML notation and semantics

These concepts are known to promote modularity, layering, and overall organization of the software.

Concerns

  • programming paradigm
  • software organization
  • software modularity
  • software interfaces
  • information hiding

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))



ARCH_QP_AF

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:

  • inversion of control: In a framework, unlike in a toolkit or a standard end-application, the overall program's flow of control is not dictated by the application, but by the framework (the framework calls the application, not the other way around).
  • extensibility: application developers can extend the framework by deriving and specializing the base classes provided inside the framework.
  • non-modifiable framework code: the framework code is not supposed to be modified, while accepting application-implemented extensions. In other words, developers can extend the framework, but cannot modify the framework.

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))


IntroductionContext Viewpoint