Browse Source
Add documentation to point to the requirements repository and give the contributors a guideline how to add requirements to that repository. Signed-off-by: Simon Hein <Shein@baumer.com>pull/74227/head
3 changed files with 122 additions and 1 deletions
@ -0,0 +1,120 @@ |
|||||||
|
.. _safety_requirements: |
||||||
|
|
||||||
|
Safety Requirements |
||||||
|
################### |
||||||
|
|
||||||
|
Introduction |
||||||
|
************ |
||||||
|
|
||||||
|
The safety committee leads the effort to gather requirements that reflect the **actual** state of |
||||||
|
the implementation, following the `route 3s <https://docs.zephyrproject.org/latest/safety/safety_overview.html#general-safety-scope>`_ |
||||||
|
approach of the project's safety effort. The goal is **NOT** to create new requirements to request |
||||||
|
additional features for the project. |
||||||
|
|
||||||
|
The requirements are gathered in the separate repository: |
||||||
|
`Requirement repository |
||||||
|
<https://github.com/zephyrproject-rtos/reqmgmt>`__ |
||||||
|
|
||||||
|
Guidelines |
||||||
|
********** |
||||||
|
|
||||||
|
Below are the guidelines for the requirements repository and the expectations of the safety |
||||||
|
committee when adding requirements to the repository. |
||||||
|
|
||||||
|
Scope |
||||||
|
===== |
||||||
|
|
||||||
|
The scope of the requirements covers the KERNEL functionalities. |
||||||
|
|
||||||
|
Consistency |
||||||
|
=========== |
||||||
|
|
||||||
|
Maintain consistency across all requirements. The language and choice of words shall be consistent. |
||||||
|
(See: `Syntax`_) |
||||||
|
|
||||||
|
Levels of requirements in the repository |
||||||
|
======================================== |
||||||
|
|
||||||
|
System Requirements |
||||||
|
System requirements describe the behaviour of the Zephyr RTOS (= the system here). |
||||||
|
They describe the functionality of the Zephyr RTOS from a very high-level perspective, |
||||||
|
without going into details of the functionality itself. |
||||||
|
The purpose of the system requirements is to get an overview of the currently implemented features |
||||||
|
of the Zephyr RTOS. |
||||||
|
In other words a person writing these requirements usually has some knowledge of the Zephyr RTOS |
||||||
|
Project as the requirements are specific to an RTOS. |
||||||
|
|
||||||
|
Software Requirements |
||||||
|
Software requirements refine the system-level requirements at a more granular level so |
||||||
|
that each requirement can be tested. |
||||||
|
These requirements define the specific actions the feature shall be able to execute and the |
||||||
|
behavior of the feature. |
||||||
|
|
||||||
|
Requirement UID (Unique identifier) Handling |
||||||
|
============================================ |
||||||
|
|
||||||
|
The tool used to manage requirements, `strictDoc <https://strictdoc.readthedocs.io/en/stable/>`_, is |
||||||
|
responsible for handling the Unique Identifier (UID) associated with each requirement. To manage |
||||||
|
UIDs, follow these steps: |
||||||
|
|
||||||
|
#. Don't add a requirement UID and UID field for new requirements |
||||||
|
#. After completing work on the new requirements execute: ``strictDoc manage auto-uid .`` |
||||||
|
#. Establish links between the requirements with the new attributed UIDs if needed |
||||||
|
|
||||||
|
After doing this, the requirements are ready and a pull request can be created. |
||||||
|
The CI in the PR will check if the requirements UIDs are valid or if there are duplicates in it. |
||||||
|
If there are duplicates in the PR, these need to be resolved by rebasing and re-executing |
||||||
|
the steps above. |
||||||
|
|
||||||
|
Requirement Types |
||||||
|
================= |
||||||
|
|
||||||
|
* Functional |
||||||
|
* Non-Functional |
||||||
|
|
||||||
|
Requirement title convention |
||||||
|
============================ |
||||||
|
|
||||||
|
Use short and succinct requirement titles. |
||||||
|
|
||||||
|
Pull Request requirement repository |
||||||
|
=================================== |
||||||
|
|
||||||
|
* Adhere to the :ref:`contribute_guidelines` of the Zephyr Project. |
||||||
|
|
||||||
|
* As long as they are applicable to the requirements repository. |
||||||
|
|
||||||
|
* Avoid creating large commits that contain both trivial and non-trivial changes. |
||||||
|
|
||||||
|
* Avoid moving and changing requirements in the same commit. |
||||||
|
|
||||||
|
Characteristics of a good requirement |
||||||
|
===================================== |
||||||
|
|
||||||
|
* Unambiguous |
||||||
|
* Verifiable (e.g. testable for functional requirements) |
||||||
|
* Clear (concise, succinct, simple, precise) |
||||||
|
* Correct |
||||||
|
* Understandable |
||||||
|
* Feasible (realistic, possible) |
||||||
|
* Independent |
||||||
|
* Atomic |
||||||
|
* Necessary |
||||||
|
* Implementation-free (abstract) |
||||||
|
|
||||||
|
Characteristics of a set of requirements |
||||||
|
======================================== |
||||||
|
|
||||||
|
* Complete |
||||||
|
* Consistent |
||||||
|
* Non redundant |
||||||
|
|
||||||
|
Syntax |
||||||
|
====== |
||||||
|
|
||||||
|
* Use of a recognized Requirements Syntax is recommended. |
||||||
|
|
||||||
|
* `EARS <https://alistairmavin.com/ears/>`_ is a good reference. Particularly if you are |
||||||
|
unfamiliar with requirements writing. |
||||||
|
|
||||||
|
* Other formats are accepted as long as the characteristics of a requirement from above are met. |
Loading…
Reference in new issue