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.

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


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?
-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."

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

Reply via email to