1 | .. SPDX-License-Identifier: CC-BY-SA-4.0 |
---|
2 | |
---|
3 | .. Copyright (C) 2019, 2020 embedded brains GmbH (http://www.embedded-brains.de) |
---|
4 | |
---|
5 | .. _ReqEngTrace: |
---|
6 | |
---|
7 | Traceability of Specification Items |
---|
8 | =================================== |
---|
9 | |
---|
10 | The standard ECSS-E-ST-10-06C demands that requirements shall be under |
---|
11 | configuration management, backwards-traceable and forward-traceable |
---|
12 | :cite:`ECSS_E_ST_10_06C`. Requirements are a specialization of specification |
---|
13 | items in RTEMS. |
---|
14 | |
---|
15 | .. _ReqEngTraceHistory: |
---|
16 | |
---|
17 | History of Specification Items |
---|
18 | ------------------------------ |
---|
19 | |
---|
20 | The RTEMS specification items should placed in the RTEMS sources using Git for |
---|
21 | version control. The history of specification items can be traced with Git. |
---|
22 | Special commit procedures for changes in specification item files should be |
---|
23 | established. For example, it should be allowed to change only one |
---|
24 | specification item per commit. A dedicated Git commit message format may be |
---|
25 | used as well, e.g. use of ``Approved-by:`` or ``Reviewed-by:`` lines which |
---|
26 | indicate an agreed statement (similar to the |
---|
27 | `Linux kernel patch submission guidelines <https://www.kernel.org/doc/html/latest//process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>`_). |
---|
28 | Git commit procedures may be ensured through a server-side pre-receive hook. |
---|
29 | The history of requirements may be also added to the specification items |
---|
30 | directly in a *revision* attribute. This would make it possible to generate |
---|
31 | the history information for documents without having the Git repository |
---|
32 | available, e.g. from an RTEMS source release archive. |
---|
33 | |
---|
34 | .. _ReqEngTraceBackward: |
---|
35 | |
---|
36 | Backward Traceability of Specification Items |
---|
37 | -------------------------------------------- |
---|
38 | |
---|
39 | Providing backward traceability of specification items means that we must be |
---|
40 | able to find the corresponding higher level specification item for each refined |
---|
41 | specification item. A custom tool needs to verify this. |
---|
42 | |
---|
43 | .. _ReqEngTraceForward: |
---|
44 | |
---|
45 | Forward Traceability of Specification Items |
---|
46 | ------------------------------------------- |
---|
47 | |
---|
48 | Providing forward traceability of specification items means that we must be |
---|
49 | able to find all the refined specification items for each higher level |
---|
50 | specification item. A custom tool needs to verify this. The links from |
---|
51 | parent to child specification items are implicitly defined by links from a |
---|
52 | child item to a parent item. |
---|
53 | |
---|
54 | .. _ReqEngTraceReqArchDesign: |
---|
55 | |
---|
56 | Traceability between Software Requirements, Architecture and Design |
---|
57 | ------------------------------------------------------------------- |
---|
58 | |
---|
59 | The software requirements are implemented in custom YAML files, see |
---|
60 | :ref:`ReqEngSpecItems`. The software architecture and design is written in |
---|
61 | Doxygen markup. Doxygen markup is used throughout all header and source files. |
---|
62 | A Doxygen filter program may be provided to place Doxygen markup in assembler |
---|
63 | files. The software architecture is documented via Doxygen groups. Each |
---|
64 | Doxygen group name should have a project-specific name and the name should be |
---|
65 | unique within the project, e.g. RTEMSTopLevel\ MidLevel\ LowLevel. The link |
---|
66 | from a Doxygen group to its parent group is realized through the ``@ingroup`` |
---|
67 | special command. The link from a Doxygen group or :term:`software component` |
---|
68 | to the corresponding requirement is realized through a ``@satisfy{req}`` |
---|
69 | `custom command <http://www.doxygen.nl/manual/custcmd.html>`_ which needs the |
---|
70 | identifier of the requirement as its one and only parameter. Only links to |
---|
71 | parents are explicitly given in the Doxygen markup. The links from a parent to |
---|
72 | its children are only implicitly specified via the link from a child to its |
---|
73 | parent. So, a tool must process all files to get the complete hierarchy of |
---|
74 | software requirements, architecture and design. Links from a software component |
---|
75 | to another software component are realized through automatic Doxygen references |
---|
76 | or the ``@ref`` and ``@see`` special commands. |
---|