mirror of
https://github.com/QuantumLeaps/qpc.git
synced 2025-01-14 06:43:19 +08:00
166 lines
5.7 KiB
Plaintext
166 lines
5.7 KiB
Plaintext
/*! @page sas_toc SAS
|
|
|
|
<h1>Software Architecture Specification (SAS)</h1>
|
|
<p>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:
|
|
</p>
|
|
|
|
- @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
|
|
<p>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.
|
|
</p>
|
|
|
|
<strong>QP/C</strong> (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
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_conv_num Numbering of Requirements
|
|
|
|
|
|
<div class="separate"></div>
|
|
@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
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_qf Active Object Framework
|
|
The software shall support hierarchical state nesting
|
|
|
|
<div class="separate"></div>
|
|
@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}
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_qv Cooperative Run-to-Completion Kernel
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_qk Preemptive Run-to-Completion Kernel
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_qxk Preemptive Blocking Kernel
|
|
|
|
------------------------------------------------------------------------------
|
|
@section sas_non-fun Non-functional Requirements
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_quality Software Quality Attributes
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_perform Performance Requirements
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_port Portability Requirements
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_safe Safety Requirements
|
|
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_secure Security Requirements
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
@section sas_constr Constraints
|
|
|
|
<div class="separate"></div>
|
|
@subsection sas_standards Compliance with Standards
|
|
|
|
*/
|