Skip to content

Commit 0800443

Browse files
docs: add folder_templates
Ref: closes #1106
1 parent bcaf2cb commit 0800443

File tree

36 files changed

+2162
-1280
lines changed

36 files changed

+2162
-1280
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2025 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
.. _feature_architecture_template:
16+
17+
Feature Architecture
18+
====================
19+
20+
Overview
21+
--------
22+
Brief summary
23+
24+
Description
25+
-----------
26+
27+
General Description
28+
29+
Design Decisions
30+
31+
Design Constraints
32+
33+
Requirements
34+
------------
35+
36+
.. code-block:: none
37+
38+
.. needtable:: Overview of Feature Requirements
39+
:style: table
40+
:columns: title;id
41+
:filter: search("feat_arch_sta__archdes$", "fulfils_back")
42+
:colwidths: 70,30
43+
44+
45+
Rationale Behind Architecture Decomposition
46+
*******************************************
47+
mandatory: a motivation for the decomposition
48+
49+
.. note:: Common decisions across features / cross cutting concepts is at the high level.
50+
51+
Static Architecture
52+
-------------------
53+
54+
.. feat_arc_sta:: Static View
55+
:id: feat_arc_sta__feature_name__static_view
56+
:security: YES
57+
:safety: ASIL_D
58+
:status: invalid
59+
:fulfils: feat_req__feature_name__some_title
60+
:includes: logic_arc_int__feature_name__interface_name
61+
62+
.. needarch::
63+
:scale: 50
64+
:align: center
65+
66+
{{ draw_feature(need(), needs) }}
67+
68+
Dynamic Architecture
69+
--------------------
70+
71+
.. feat_arc_dyn:: Dynamic View
72+
:id: feat_arc_dyn__feature_name__dynamic_view
73+
:security: YES
74+
:safety: ASIL_D
75+
:status: invalid
76+
:fulfils: feat_req__feature_name__some_title
77+
78+
put here a sequence diagram
79+
80+
Logical Interfaces
81+
------------------
82+
83+
.. logic_arc_int:: Interface Name
84+
:id: logic_arc_int__feature_name__interface_name
85+
:security: YES
86+
:safety: ASIL_D
87+
:status: invalid
88+
89+
.. needarch::
90+
:scale: 50
91+
:align: center
92+
93+
{{ draw_interface(need(), needs) }}
94+
95+
.. logic_arc_int_op:: Operation
96+
:id: logic_arc_int_op__feature_name__operation
97+
:security: YES
98+
:safety: ASIL_D
99+
:status: invalid
100+
:included_by: logic_arc_int__feature_name__interface_name
101+
102+
Module Viewpoint
103+
----------------
104+
105+
The following modules are needed to be defined to be able to draw the static feature view.
106+
They will be replaced by linking the proper module definitions in the used module's repositories as soon as those exist.
107+
108+
.. mod_view_sta:: Module Name
109+
:id: mod_view_sta__feature_name_module_name
110+
:includes: comp_arc_sta__feature_name_component_name
111+
112+
.. needarch::
113+
:scale: 50
114+
:align: center
115+
116+
{{ draw_module(need(), needs) }}
117+
118+
Used Components
119+
---------------
120+
121+
The following components are needed to be defined to be able to draw the static feature view.
122+
They will be replaced by linking the proper SW component definitions in the used module's repositories as soon as those exist.
123+
124+
.. comp_arc_sta:: Component Name
125+
:id: comp_arc_sta__feature_name_component_name
126+
:safety: ASIL_D
127+
:security: YES
128+
:status: invalid
129+
:implements: logic_arc_int__feature_name__interface_name
130+
131+
.. note::
132+
Architecture can be split into multiple files, it is an High level architecture_design
133+
which can be shown without actual c++/rust interfaces and data types
134+
and there will be link to lower level architecture till code to get actual api descriptions.
135+
136+
.. needextend:: "feature_name/architecture" in docname
137+
:+tags: feature_name
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2025 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
.. _feature_template:
16+
17+
[Your Feature Name]
18+
###################
19+
20+
.. note:: Document header
21+
22+
.. document:: [Your Feature Name]
23+
:id: doc__feature_name
24+
:status: draft
25+
:safety: ASIL_B
26+
:tags: template
27+
28+
.. attention::
29+
The above directive must be updated according to your Feature.
30+
31+
- Modify ``document`` to be your Feature Name
32+
- Modify ``id`` to be your Feature Name in upper snake case preceded by ``doc__``
33+
- Adjust ``status`` to be ``valid``
34+
- Adjust ``safety`` and ``tags`` according to your needs
35+
36+
Feature flag
37+
============
38+
39+
To activate this feature, use the following feature flag:
40+
41+
``experimental_[your_feature_name]``
42+
43+
.. note::
44+
The feature flag must reflect the feature name in snake_case. Further, it is prepended with ``experimental_``, as
45+
long as the feature is not yet stable.
46+
47+
Abstract
48+
========
49+
50+
[A short (~200 word) description of the contribution being addressed.]
51+
52+
53+
Motivation
54+
==========
55+
56+
[Clearly explain why the existing platform/project solution is inadequate to address the topic that the CR solves.]
57+
58+
.. note::
59+
The motivation is critical for CRs that want to change the existing features or infrastructure.
60+
It should clearly explain why the existing solution is inadequate to address the topic that the CR solves.
61+
Motivation may based on criteria as resource requirements, scheduling issues, risks, benefits, etc.
62+
CRs submissions without sufficient motivation may be rejected.
63+
64+
65+
66+
Rationale
67+
=========
68+
69+
[Describe why particular design decisions were made.]
70+
71+
72+
.. note::
73+
The rationale should provide evidence of consensus within the community and discuss important objections or concerns raised during discussion.
74+
75+
76+
Specification
77+
=============
78+
79+
[Describe the requirements, architecture of any new feature.] or
80+
[Describe the change to requirements, architecture, implementation, process, documentation, infrastructure of any change request.]
81+
82+
.. note::
83+
A CR shall specify the stakeholder requirements as part of our platform/project.
84+
Thereby the :need:`rl__technical_lead` will approve these requirements as part of accepting the CR (e.g. merging the PR with the CR).
85+
86+
87+
88+
Backwards Compatibility
89+
=======================
90+
91+
[Describe potential impact (especially including safety and security impacts) and severity on pre-existing platform/project elements.]
92+
93+
94+
Security Impact
95+
===============
96+
97+
[How could a malicious user take advantage of this new/modified feature?]
98+
99+
.. note::
100+
If there are security concerns in relation to the CR, those concerns should be explicitly written out to make sure reviewers of the CR are aware of them.
101+
102+
Which security requirements are affected or has to be changed?
103+
Could the new/modified feature enable new threat scenarios?
104+
Could the new/modified feature enable new attack paths?
105+
Could the new/modified feature impact functional safety?
106+
If applicable, which additional security measures must be implemented to mitigate the risk?
107+
108+
.. note::
109+
Use Trust Boundary, Defense in Depth Analysis and/or Security Software Critically Analysis,
110+
Vulnerability Analysis.
111+
[Methods will be defined later in Process area Security Analysis]
112+
113+
Safety Impact
114+
=============
115+
116+
[How could the safety be impacted by the new/modified feature?]
117+
118+
.. note::
119+
If there are safety concerns in relation to the CR, those concerns should be explicitly written out to make sure reviewers of the CR are aware of them.
120+
Link here to the filled out :need:`Impact Analysis Template <gd_temp__change__impact_analysis>` or copy the template in this chapter.
121+
122+
Which safety requirements are affected or has to be changed?
123+
Could the new/modified feature be a potential common cause or cascading failure initiator?
124+
If applicable, which additional safety measures must be implemented to mitigate the risk?
125+
126+
.. note::
127+
Use Dependency Failure Analysis and/or Safety Software Critically Analysis.
128+
[Methods will be defined later in Process area Safety Analysis]
129+
130+
For new feature contributions:
131+
132+
[What is the expected ASIL level?]
133+
134+
135+
License Impact
136+
==============
137+
138+
[How could the copyright impacted by the license of the new contribution?]
139+
140+
141+
How to Teach This
142+
=================
143+
144+
[How to teach users, new and experienced, how to apply the CR to their work.]
145+
146+
.. note::
147+
For a CR that adds new functionality or changes behavior, it is helpful to include a section on how to teach users, new and experienced, how to apply the CR to their work.
148+
149+
150+
151+
Rejected Ideas
152+
==============
153+
154+
[Why certain ideas that were brought while discussing this CR were not ultimately pursued.]
155+
156+
.. note::
157+
Throughout the discussion of a CR, various ideas will be proposed which are not accepted.
158+
Those rejected ideas should be recorded along with the reasoning as to why they were rejected.
159+
This both helps record the thought process behind the final version of the CR as well as preventing people from bringing up the same rejected idea again in subsequent discussions.
160+
In a way this section can be thought of as a breakout section of the Rationale section that is focused specifically on why certain ideas were not ultimately pursued.
161+
162+
163+
164+
Open Issues
165+
===========
166+
167+
[Any points that are still being decided/discussed.]
168+
169+
.. note::
170+
While a CR is in draft, ideas can come up which warrant further discussion.
171+
Those ideas should be recorded so people know that they are being thought about but do not have a concrete resolution.
172+
This helps make sure all issues required for the CR to be ready for consideration are complete and reduces people duplicating prior discussion.
173+
174+
175+
176+
Footnotes
177+
=========
178+
179+
[A collection of footnotes cited in the CR, and a place to list non-inline hyperlink targets.]
180+
181+
182+
.. toctree::
183+
:hidden:
184+
185+
requirements/index.rst
186+
architecture/index.rst
187+
safety_planning/index.rst
188+
safety_analysis/fmea.rst
189+
safety_analysis/dfa.rst
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
..
2+
# *******************************************************************************
3+
# Copyright (c) 2025 Contributors to the Eclipse Foundation
4+
#
5+
# See the NOTICE file(s) distributed with this work for additional
6+
# information regarding copyright ownership.
7+
#
8+
# This program and the accompanying materials are made available under the
9+
# terms of the Apache License Version 2.0 which is available at
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# SPDX-License-Identifier: Apache-2.0
13+
# *******************************************************************************
14+
15+
Requirements
16+
############
17+
18+
<Headlines (for the list of requirements if structuring is needed)>
19+
===================================================================
20+
21+
.. feat_req:: Some Title
22+
:id: feat_req__feature_name__some_title
23+
:reqtype: Process
24+
:security: YES
25+
:safety: ASIL_D
26+
:satisfies: stkh_req__requirements__as_code
27+
:status: invalid
28+
29+
The Feature shall do xyz to the user to bring him to this condition at this time
30+
31+
Note: (optional, not to be verified)
32+
33+
.. aou_req:: Some Other Title
34+
:id: aou_req__feature_name__some_other_title
35+
:reqtype: Process
36+
:security: YES
37+
:safety: ASIL_D
38+
:status: invalid
39+
40+
The Feature User shall do xyz to use the feature safely
41+
42+
.. attention::
43+
The above directives must be updated according to your feature requirements.
44+
45+
- Replace the example content by the real content for your first requirement
46+
- Set the status to valid and start the review/merge process
47+
- Add other needed requirements for your feature
48+
49+
.. needextend:: "feature_name/requirements" in docname
50+
:+tags: feature_name

0 commit comments

Comments
 (0)