/*! @page sas_toc SAS

Software Architecture Specification (SAS)

This document specifies the software architecture for the **QP/C** @termref{ao} @termref{framework}. This document describes the intended features of the QP/C framework, as well as the interfaces to other software, hardware, and various other technical dependencies. The quick links to the main sections of this SRS are given below:

- @subpage sas_intro + @ref sas_purpose + @ref sas_conv + @ref sas_scope + @ref sas_audience + @ref sas_refs - @subpage sas_descr + @ref sas_prod + @ref sas_funct + @ref sas_user + @ref sas_assume - @subpage sas + @ref sas_fun - @ref sas_qf - @ref sas_qep - @ref sas_qv - @ref sas_qk - @ref sas_qxk + @ref sas_non-fun + @ref sas_constr @next{sas_intro} */ /*##########################################################################*/ /*! @page sas_intro Introduction Embedded software developers from different industries are independently re-discovering patterns for building concurrent software that is safer, more responsive and easier to understand than naked threads and various blocking mechanisms of a traditional Real-Time Operating System (RTOS). These best practices universally favor event-driven, asynchronous, non-blocking, encapsulated state machines instead of naked, blocking RTOS threads. ------------------------------------------------------------------------------ @section sas_purpose Purpose

The specification of the QP/C @termref{ao} @termref{framework} is to represent a reusable @termref{architecture}, which supports efficient implementation of the @termref{ao} model of computation for deeply embedded applications, such as single-chip microcontrollers.

QP/C (Quantum Platform in C) is a lightweight software @termref{framework, framework} for building responsive and modular real-time embedded applications as systems of cooperating, event-driven @termref{ao, active objects} (@termref{ao, actors}). ------------------------------------------------------------------------------ @section sas_conv Document Conventions
@subsection sas_conv_num Numbering of Requirements
@subsection sas_conv_shall Use of "Shall" and "Should" Requirement definitions use consistent terminology to indicate whether something is mandatory or desirable. _Shall_ is used to denote **mandatory** behavior. _Should_ is used to denote a **desirable** behavior that should typically take place, but might not happen all the time or might be optional in uncommon cases. ------------------------------------------------------------------------------ @section sas_scope Project Scope ------------------------------------------------------------------------------ @section sas_audience Intended Audience This SRS document is primarily intended for **embedded software engineers**, who develop applications based on the QP/C framework. This SRS can be also of interest to test engineers, software architects, system engineers, quality-assurance engineers, hardware engineers, as well as managers overseeing the software development. ------------------------------------------------------------------------------ @section sas_refs References @next{sas_descr} */ /*##########################################################################*/ /*! @page sas_descr Overall Description ------------------------------------------------------------------------------ @section sas_prod Product Perspective ------------------------------------------------------------------------------ @section sas_funct Product Functions - @reqref{RQPC101} - @reqref{RQPC102} ------------------------------------------------------------------------------ @section sas_user User Characteristics The main users of the QP/C framework are **embedded software engineers**, who develop applications based on the QP/C framework. ------------------------------------------------------------------------------ @section sas_assume Assumptions and Dependencies @next{sas} */ /*##########################################################################*/ /*! @page sas Architecture Elements ------------------------------------------------------------------------------ @section sas_fun Functional Requirements
@subsection sas_qf Active Object Framework The software shall support hierarchical state nesting
@subsection sas_qep State Machine Event Processor @reqdef{RQPC101, The software shall support hierarchical state nesting} @par Amplification State hierarchy is the primary mechanism of behavioral reuse in state machines. @par Rationale This is a useful thing to have @reqdef{RQPC102, The software shall support manual coding}
@subsection sas_qv Cooperative Run-to-Completion Kernel
@subsection sas_qk Preemptive Run-to-Completion Kernel
@subsection sas_qxk Preemptive Blocking Kernel ------------------------------------------------------------------------------ @section sas_non-fun Non-functional Requirements
@subsection sas_quality Software Quality Attributes
@subsection sas_perform Performance Requirements
@subsection sas_port Portability Requirements
@subsection sas_safe Safety Requirements
@subsection sas_secure Security Requirements ------------------------------------------------------------------------------ @section sas_constr Constraints
@subsection sas_standards Compliance with Standards */