104104Stakeholder Requirements
105105------------------------
106106
107+ {#- Reference coverage: a stakeholder requirement is "referenced" when at least
108+ one in-scope feature requirement is ``derived_from`` it. Only references
109+ from requirements inside ``report_version`` scope are counted. -#}
110+ {% set ns_stkh_ref = namespace(referenced=[], missing=[]) %}
111+ {% for req_id in ns_stkh_reqs.list %}
112+ {% set ns_low = namespace(found=false) %}
113+ {% for low in linked_needs(req_id, "derived_from_back") %}
114+ {% if low["type"] == "feat_req" and req_in_report_version(low, report_version) %}
115+ {% set ns_low.found = true %}
116+ {% endif %}
117+ {% endfor %}
118+ {% if ns_low.found %}
119+ {% set ns_stkh_ref.referenced = ns_stkh_ref.referenced + [req_id] %}
120+ {% else %}
121+ {% set ns_stkh_ref.missing = ns_stkh_ref.missing + [req_id] %}
122+ {% endif %}
123+ {% endfor %}
107124.. grid:: 1 2 2 2
108125 :gutter: 3
109126
@@ -128,14 +145,24 @@ Stakeholder Requirements
128145 type == "stkh_req" and partially_verifies_back and not fully_verifies_back and {{ stkh_req_filter }}
129146 type == "stkh_req" and not fully_verifies_back and not partially_verifies_back and {{ stkh_req_filter }}
130147
148+ .. grid-item::
149+
150+ .. needpie:: Stakeholder Requirements Reference Coverage
151+ :labels: referenced by lower, not referenced
152+ :colors: #37a12d, #ca2828
153+ :legend:
154+
155+ id in {{ id_filter_list(ns_stkh_ref.referenced) }}
156+ id in {{ id_filter_list(ns_stkh_ref.missing) }}
157+
131158.. dropdown:: Show requirements table
132159 :animate: fade-in
133160
134161 .. needtable::
135162 :filter: type == "stkh_req" and {{ stkh_req_filter }}
136163 :style: table
137- :columns: id;title;safety;status;testlink
138- :colwidths: 13,22,8,10,47
164+ :columns: id;title;safety;status;testlink;derived_from_back as "Referenced by"
165+ :colwidths: 12,20,7,9,32,20
139166 :sort: id
140167
141168{# ===================================================================== #}
@@ -181,6 +208,22 @@ Feature Overview
181208{% endif %}
182209{% endfor %}
183210{% set feature_req_filter = 'id in ' ~ id_filter_list(ns.req_ids) %}
211+ {#- Reference coverage: a feature requirement is "referenced" when at least one
212+ in-scope component requirement is ``derived_from`` it. -#}
213+ {% set ns_feat_ref = namespace(referenced=[], missing=[]) %}
214+ {% for req_id in ns.req_ids %}
215+ {% set ns_low = namespace(found=false) %}
216+ {% for low in linked_needs(req_id, "derived_from_back") %}
217+ {% if low["type"] == "comp_req" and req_in_report_version(low, report_version) %}
218+ {% set ns_low.found = true %}
219+ {% endif %}
220+ {% endfor %}
221+ {% if ns_low.found %}
222+ {% set ns_feat_ref.referenced = ns_feat_ref.referenced + [req_id] %}
223+ {% else %}
224+ {% set ns_feat_ref.missing = ns_feat_ref.missing + [req_id] %}
225+ {% endif %}
226+ {% endfor %}
184227Requirements Statistics
185228^^^^^^^^^^^^^^^^^^^^^^^
186229
@@ -208,14 +251,24 @@ Requirements Statistics
208251 type == "feat_req" and "{{ feature_id }}" in satisfied_by and partially_verifies_back and not fully_verifies_back and {{ feature_req_filter }}
209252 type == "feat_req" and "{{ feature_id }}" in satisfied_by and not fully_verifies_back and not partially_verifies_back and {{ feature_req_filter }}
210253
254+ .. grid-item::
255+
256+ .. needpie:: {{ feature_title }} Requirements Reference Coverage
257+ :labels: referenced by lower, not referenced
258+ :colors: #37a12d, #ca2828
259+ :legend:
260+
261+ id in {{ id_filter_list(ns_feat_ref.referenced) }}
262+ id in {{ id_filter_list(ns_feat_ref.missing) }}
263+
211264.. dropdown:: Show requirements table
212265 :animate: fade-in
213266
214267 .. needtable::
215268 :filter: type == "feat_req" and "{{ feature_id }}" in satisfied_by and {{ feature_req_filter }}
216269 :style: table
217- :columns: id;title;safety;status;testlink
218- :colwidths: 13,22,8,10,47
270+ :columns: id;title;safety;status;testlink;derived_from_back as "Referenced by"
271+ :colwidths: 12,20,7,9,32,20
219272 :sort: id
220273
221274Architecture Statistics
0 commit comments