HI Sebastian,

Marked below with [HS].

-----Original Message-----
From: Sebastian Huber [mailto:sebastian.hu...@embedded-brains.de] 
Sent: quarta-feira, 1 de abril de 2020 06:31
To: Helder Silva; RTEMS
Subject: Re: Traceability from specification to source code?

Hello Helder,

On 31/03/2020 20:11, Helder Silva wrote:

> Hi Sebastian,
>
> The traceability (e.g. ECSS and also DO) have several layers:
> -From the requirements specification (and/or interface requirements) to the 
> architectural components (and/or interfaces).
the proposal is to use Doxygen groups for architectural components and 
use an @satisfy Doxygen custom command to link to the requirement.
> -From the architectural components to detailed design components.

The proposal is to use Doxygen groups for architectural components and 
use an @satisfy Doxygen custom command to link to the requirement.

> -From the detailed design components to source code.

This is partly also done via Doxygen means (@ingroup, @defgroup, 
@addtogroup, @file):

https://docs.rtems.org/branches/master/eng/req-eng.html#traceability-between-software-requirements-architecture-and-design

>
> The traceability to the source code line number is too much, not required and 
> increases significantly the future maintainability of the source code and 
> specification.
>
> In the specification of the interface requirement 
> (RTEMS-ACFG-OPT-MAXBARRIERS.yml) I would put the reference to the RTEMS API 
> Architecture Component (or whatever architecture component). From the RTEMS 
> API Architecture Component to the Barrier Detailed Design Component (defined 
> in the Doxygen annotations in the source code). In this way we will have the 
> full traceability from requirements to the source code.

I would like to use this example to work out a solution for the 
traceability:

https://git.rtems.org/sebh/rtems-qual.git/tree/spec/acfg/opt/RTEMS-ACFG-OPT-MAXBARRIERS.yml

there is a requirement included which says that the default value of 
this configuration option is 0. There are two code places involved here:

https://git.rtems.org/rtems/tree/cpukit/include/rtems/confdefs/objectsclassic.h#n86

#if CONFIGURE_MAXIMUM_BARRIERS > 0
   BARRIER_INFORMATION_DEFINE( CONFIGURE_MAXIMUM_BARRIERS );
#endif

https://git.rtems.org/rtems/tree/cpukit/rtems/src/barrier.c#n42

OBJECTS_INFORMATION_DEFINE_ZERO(
   _Barrier,
   OBJECTS_CLASSIC_API,
   OBJECTS_RTEMS_BARRIERS,
   OBJECTS_NO_STRING_NAME
);

The source file barrier.c is linked to the software architecture 
component "Barrier Handler" through the @file @ingroup. The 
_Barrier_Information is included in the software architecture component 
through @addtogroup:

https://git.rtems.org/rtems/tree/cpukit/include/rtems/rtems/barrierdata.h#n50

It has potentially more than implementation, one in barrier.c

https://git.rtems.org/rtems/tree/cpukit/rtems/src/barrier.c#n42

and optionally one in the application configuration via

https://git.rtems.org/rtems/tree/cpukit/include/rtems/confdefs/objectsclassic.h#n86

Both implementations have no Doxygen markup since it is only placed to 
the declaration in barrierimpl.h.

[HS] I am not understanding the sentence above: 
- https://git.rtems.org/rtems/tree/cpukit/rtems/src/barrier.c#n42 - Has 
@ingroup ClassicBarrier
- 
https://git.rtems.org/rtems/tree/cpukit/include/rtems/confdefs/objectsclassic.h#n86
  - Has @ingroup RTEMSApplicationConfiguration

Helder, what do you propose to link these two code places to the 
requirement that the default value of this configuration is 0?

[HS] Maybe I am not understanding your point, but you can make traceability 
from one requirement to two componentes. That's no problem. 

>
> Comments to the 
> https://git.rtems.org/sebh/rtems-qual.git/tree/spec/acfg/opt/RTEMS-ACFG-OPT-BDBUFBUFFERMAXSIZE.yml
>  :
> -Please take into mind the future maintainability of the specification and 
> source code. Do we need all these options?
I guess this depends on who is we. Having an approach in the RTEMS 
Project which covers only a subset of the application configuration with 
respect to a pre-qualification is not really great. The application 
configuration glues everything together. For example we don't want to 
pre-qualify bdbuf, however, the bdbuf configuration influences the 
maximum Classic API tasks value. I don't want a specialized confdefs.h 
for the pre-qualified RTEMS. Also ESA would likes to have the 
non-pre-qualified parts of RTEMS as an add-on package. Both parts meet 
in the application configuration. This makes it necessary to pre-qualify 
all of the application configuration from my point of view. Helder, what 
would be your approach?

[HS] I did not said that I would suggest a partial specification of the 
Application Configuration. My point was regarding the amount of options (e.g., 
SPDX-License-Identifier, copyrights, derived, header) in the requirements 
specification template. They are a lot, maybe we do not need all of them and 
they will be hard to maintain. Imagine that you have several hundreds of them. 

> -The appl-config-option-description should be something like "The 
> CONFIGURE_BDBUF_BUFFER_MAX_SIZE (or value if you wish) shall define the 
> maximum size of the buffer in bytes".

This is the problem 1. I mentioned here:

https://lists.rtems.org/pipermail/devel/2020-March/058745.html

We need a requirement and a description for the configuration option. 
The description

"The value of this configuration option defines the maximum number of 
Classic
   API Barriers that can be concurrently active."

is close to a requirement formulation. Should we use the descriptions as 
is as a requirement? Should we add some text like this for each option:

"The system shall provide an application configuration option which 
defines the maximum number of Classic
   API Barriers that can be concurrently active."

[HS] Yes, we should have the requirements specification similar to requirements 
wording. Please remember the required requirement verbal form in the 
ECSS-E-ST-10-06C, section 8.3.2. The standards have usually this requirement. 

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to