[PATCH v2 1/3] docs: Introduce Fusa Requirement and define maintainers

Ayan Kumar Halder posted 3 patches 3 months, 3 weeks ago
There is a newer version of this series
[PATCH v2 1/3] docs: Introduce Fusa Requirement and define maintainers
Posted by Ayan Kumar Halder 3 months, 3 weeks ago
The FUSA folder is expected to contain requirements and other documents
to enable safety certification of Xen hypervisor.
Added a README to explain how the requirements are categorized, written
and their supported status.

Added maintainers for the same.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes from :-

v1 - 1. Added a comment from Stefano.
2. Added Ack.

 MAINTAINERS              |  9 +++++
 docs/fusa/reqs/README.md | 78 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 87 insertions(+)
 create mode 100644 docs/fusa/reqs/README.md

diff --git a/MAINTAINERS b/MAINTAINERS
index 7c524a8a93..0d328e065c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -314,6 +314,15 @@ F:	xen/arch/x86/include/asm/x86_*/efi*.h
 F:	xen/common/efi/
 F:	xen/include/efi/
 
+FUSA
+M:	Stefano Stabellini <sstabellini@kernel.org>
+M:	Bertrand Marquis <bertrand.marquis@arm.com>
+M:	Michal Orzel <michal.orzel@amd.com>
+M:	Ayan Kumar Halder <ayan.kumar.halder@amd.com>
+M:	Artem Mygaiev <artem_mygaiev@epam.com>
+S:	Supported
+F:	docs/fusa/
+
 GDBSX DEBUGGER
 M:	Elena Ufimtseva <elena.ufimtseva@oracle.com>
 S:	Supported
diff --git a/docs/fusa/reqs/README.md b/docs/fusa/reqs/README.md
new file mode 100644
index 0000000000..651f0a4e00
--- /dev/null
+++ b/docs/fusa/reqs/README.md
@@ -0,0 +1,78 @@
+This folder contains a set of requirements describing Xen and its implementation
+in a form suitable for a safety certification process.
+
+The status is experimental and it is maintained on a best effort basis. The
+requirements may get slightly out of sync with the code. We are actively working
+on a process to keep them updated, more details to follow.
+
+The requirements writing style is inspired from the ANSI/IEEE guide to Software
+Requirements Standard 830-1984.
+
+The requirements are categorized as follows :-
+
+1. Market requirements - They define the high level functionalities of the
+hypervisor without going into concepts specific to Xen. Those should allow a
+system architect to understand wether Xen is providing the functionalities it
+needs for its system. This is the top level of the requirements.
+
+2. Product requirements - They define the Xen specific concepts and interfaces
+provided by Xen without going into implementation details. One or several of
+those requirements are linked to each market requirement. An Architect can use
+them understand how Xen fulfils a market need and design how Xen should be used
+in his system.
+
+3. Design requirements - They describe what the software implementation is doing
+from a technical point of view. One or several design requirement together
+define how product requirements are fulfilled technically and are linked to
+them. An implementer can use them to know how to write or understand the Xen
+code.
+
+The requirements are linked using OpenFastTrace
+(https://github.com/itsallcode/openfasttrace/blob/main/doc/user_guide.md).
+OpenFastTrace parses through the requirements and generates a traceability
+report.
+
+The following is the skeleton for a requirement.
+
+Title  /* Title of the requirement */
+-----
+
+`unique_tag`
+/*
+ * Each requirement needs to have a unique tag associated. The format is
+ * req_type~name~revision.
+ *
+ * Thus, it consists of three components :-
+ * requirement type - This denotes the category of requirement. Thus, it shall
+ * be 'XenMkt', 'XenProd' or 'XenSwdgn' to denote market, product or design
+ * requirement.
+ * name - This denotes name of the requirement. In case of architecture specific
+ * requirements, this starts with the architecture type (ie x86_64, arm64).
+ * revision number - This gets incremented each time the requirement is modified.
+ */
+
+Description:
+This shall describe the requirement in a definitive tone. In other words,
+the requirement begins with 'Xen shall ...'. Further, the description is
+expected to be unambiguous and consistent.
+
+Rationale:
+This describes a rationale explaining the reason of the presence of the
+requirement when this can help the reader. This field can be left blank.
+
+Comments:
+This describes the use cases for the requirement when this can help the
+reader. This field can be left blank as well.
+
+Covers:
+This denotes the unique_tag of the parent. This field is non existent for the
+market requirement as it is the top level.
+
+Needs:
+This denotes the requirement type of its children. This field is non existent
+for the design requirements as there are no subsequent requirements linked to
+them.
+
+
+The requirements are expected to the technically correct and follow the above
+guidelines.
-- 
2.25.1
Re: [PATCH v2 1/3] docs: Introduce Fusa Requirement and define maintainers
Posted by Michal Orzel 3 months, 2 weeks ago
Hi Ayan,

On 02/08/2024 11:46, Ayan Kumar Halder wrote:
> The FUSA folder is expected to contain requirements and other documents
> to enable safety certification of Xen hypervisor.
> Added a README to explain how the requirements are categorized, written
> and their supported status.
> 
> Added maintainers for the same.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes from :-
> 
> v1 - 1. Added a comment from Stefano.
> 2. Added Ack.
> 
>  MAINTAINERS              |  9 +++++
>  docs/fusa/reqs/README.md | 78 ++++++++++++++++++++++++++++++++++++++++
I have 2 questions:
1) Most of our docs are written in RST, same will be true for requirements docs. Any specific reason for using markdown?
2) In the current form of this patch, docs/fusa won't be part of the generated Xen docs. Is this intended? Don't we want to
include it?

Apart from that:
Acked-by: Michal Orzel <michal.orzel@amd.com>

~Michal
Re: [PATCH v2 1/3] docs: Introduce Fusa Requirement and define maintainers
Posted by Ayan Kumar Halder 3 months, 2 weeks ago
On 05/08/2024 10:46, Michal Orzel wrote:
> Hi Ayan,
Hi Michal,
>
> On 02/08/2024 11:46, Ayan Kumar Halder wrote:
>> The FUSA folder is expected to contain requirements and other documents
>> to enable safety certification of Xen hypervisor.
>> Added a README to explain how the requirements are categorized, written
>> and their supported status.
>>
>> Added maintainers for the same.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>
>> ---
>> Changes from :-
>>
>> v1 - 1. Added a comment from Stefano.
>> 2. Added Ack.
>>
>>   MAINTAINERS              |  9 +++++
>>   docs/fusa/reqs/README.md | 78 ++++++++++++++++++++++++++++++++++++++++
> I have 2 questions:
> 1) Most of our docs are written in RST, same will be true for requirements docs. Any specific reason for using markdown?
No specific reason as such. I am happy for this filename to be renamed 
on commit.
> 2) In the current form of this patch, docs/fusa won't be part of the generated Xen docs. Is this intended? Don't we want to
> include it?
docs/fusa will become a part of the generated Xen docs when the 
requirements (see patch 2) are added.
>
> Apart from that:
> Acked-by: Michal Orzel <michal.orzel@amd.com>
- Ayan
>
> ~Michal
Re: [PATCH v2 1/3] docs: Introduce Fusa Requirement and define maintainers
Posted by Michal Orzel 3 months, 2 weeks ago

On 05/08/2024 14:45, Ayan Kumar Halder wrote:
> 
> On 05/08/2024 10:46, Michal Orzel wrote:
>> Hi Ayan,
> Hi Michal,
>>
>> On 02/08/2024 11:46, Ayan Kumar Halder wrote:
>>> The FUSA folder is expected to contain requirements and other documents
>>> to enable safety certification of Xen hypervisor.
>>> Added a README to explain how the requirements are categorized, written
>>> and their supported status.
>>>
>>> Added maintainers for the same.
>>>
>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>> Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>
>>> ---
>>> Changes from :-
>>>
>>> v1 - 1. Added a comment from Stefano.
>>> 2. Added Ack.
>>>
>>>   MAINTAINERS              |  9 +++++
>>>   docs/fusa/reqs/README.md | 78 ++++++++++++++++++++++++++++++++++++++++
>> I have 2 questions:
>> 1) Most of our docs are written in RST, same will be true for requirements docs. Any specific reason for using markdown?
> No specific reason as such. I am happy for this filename to be renamed 
> on commit.
If we want RST, I'm afraid it would involve more changes than it can be done on commit (rstcheck reports quite a few).
Also, renaming to RST would result in this file being picked up by sphinx build and it would report a warning too.

>> 2) In the current form of this patch, docs/fusa won't be part of the generated Xen docs. Is this intended? Don't we want to
>> include it?
> docs/fusa will become a part of the generated Xen docs when the 
> requirements (see patch 2) are added.
If you want docs/fusa to be included, why not doing this right away?

~Michal
Re: [PATCH v2 1/3] docs: Introduce Fusa Requirement and define maintainers
Posted by Stefano Stabellini 3 months, 3 weeks ago
On Fri, 2 Aug 2024, Ayan Kumar Halder wrote:
> The FUSA folder is expected to contain requirements and other documents
> to enable safety certification of Xen hypervisor.
> Added a README to explain how the requirements are categorized, written
> and their supported status.
> 
> Added maintainers for the same.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Changes from :-
> 
> v1 - 1. Added a comment from Stefano.
> 2. Added Ack.
> 
>  MAINTAINERS              |  9 +++++
>  docs/fusa/reqs/README.md | 78 ++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 87 insertions(+)
>  create mode 100644 docs/fusa/reqs/README.md
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 7c524a8a93..0d328e065c 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -314,6 +314,15 @@ F:	xen/arch/x86/include/asm/x86_*/efi*.h
>  F:	xen/common/efi/
>  F:	xen/include/efi/
>  
> +FUSA
> +M:	Stefano Stabellini <sstabellini@kernel.org>
> +M:	Bertrand Marquis <bertrand.marquis@arm.com>
> +M:	Michal Orzel <michal.orzel@amd.com>
> +M:	Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> +M:	Artem Mygaiev <artem_mygaiev@epam.com>
> +S:	Supported
> +F:	docs/fusa/
> +
>  GDBSX DEBUGGER
>  M:	Elena Ufimtseva <elena.ufimtseva@oracle.com>
>  S:	Supported
> diff --git a/docs/fusa/reqs/README.md b/docs/fusa/reqs/README.md
> new file mode 100644
> index 0000000000..651f0a4e00
> --- /dev/null
> +++ b/docs/fusa/reqs/README.md
> @@ -0,0 +1,78 @@
> +This folder contains a set of requirements describing Xen and its implementation
> +in a form suitable for a safety certification process.
> +
> +The status is experimental and it is maintained on a best effort basis. The
> +requirements may get slightly out of sync with the code. We are actively working
> +on a process to keep them updated, more details to follow.
> +
> +The requirements writing style is inspired from the ANSI/IEEE guide to Software
> +Requirements Standard 830-1984.
> +
> +The requirements are categorized as follows :-
> +
> +1. Market requirements - They define the high level functionalities of the
> +hypervisor without going into concepts specific to Xen. Those should allow a
> +system architect to understand wether Xen is providing the functionalities it
> +needs for its system. This is the top level of the requirements.
> +
> +2. Product requirements - They define the Xen specific concepts and interfaces
> +provided by Xen without going into implementation details. One or several of
> +those requirements are linked to each market requirement. An Architect can use
> +them understand how Xen fulfils a market need and design how Xen should be used
> +in his system.
> +
> +3. Design requirements - They describe what the software implementation is doing
> +from a technical point of view. One or several design requirement together
> +define how product requirements are fulfilled technically and are linked to
> +them. An implementer can use them to know how to write or understand the Xen
> +code.
> +
> +The requirements are linked using OpenFastTrace
> +(https://github.com/itsallcode/openfasttrace/blob/main/doc/user_guide.md).
> +OpenFastTrace parses through the requirements and generates a traceability
> +report.
> +
> +The following is the skeleton for a requirement.
> +
> +Title  /* Title of the requirement */
> +-----
> +
> +`unique_tag`
> +/*
> + * Each requirement needs to have a unique tag associated. The format is
> + * req_type~name~revision.
> + *
> + * Thus, it consists of three components :-
> + * requirement type - This denotes the category of requirement. Thus, it shall
> + * be 'XenMkt', 'XenProd' or 'XenSwdgn' to denote market, product or design
> + * requirement.
> + * name - This denotes name of the requirement. In case of architecture specific
> + * requirements, this starts with the architecture type (ie x86_64, arm64).
> + * revision number - This gets incremented each time the requirement is modified.
> + */
> +
> +Description:
> +This shall describe the requirement in a definitive tone. In other words,
> +the requirement begins with 'Xen shall ...'. Further, the description is
> +expected to be unambiguous and consistent.
> +
> +Rationale:
> +This describes a rationale explaining the reason of the presence of the
> +requirement when this can help the reader. This field can be left blank.
> +
> +Comments:
> +This describes the use cases for the requirement when this can help the
> +reader. This field can be left blank as well.
> +
> +Covers:
> +This denotes the unique_tag of the parent. This field is non existent for the
> +market requirement as it is the top level.
> +
> +Needs:
> +This denotes the requirement type of its children. This field is non existent
> +for the design requirements as there are no subsequent requirements linked to
> +them.
> +
> +
> +The requirements are expected to the technically correct and follow the above
> +guidelines.
> -- 
> 2.25.1
>