On 20/04/2020 15:20, Joel Sherrill wrote:



On Sun, Apr 19, 2020 at 10:14 AM Sebastian Huber <sebastian.hu...@embedded-brains.de <mailto:sebastian.hu...@embedded-brains.de>> wrote:

    Hello,

    I am about to add the next couple of hundred specification items
    for the
    RTEMS pre-qualification activity. Before I do this, I would like to
    present some issues that popped up during my daily work with
    Doorstop.
    Doorstop is a requirements management tool which was selected for the
    pre-qualification activity:

    
https://docs.rtems.org/branches/master/eng/req-eng.html#selected-tool-doorstop

    I am quite happy that Jan Sommer suggested to use this tool. I has
    some
    pretty nice features. In particular, I think the file based
    organization
    in YAML format forming a directed acyclic graph is really the right
    thing for this project. However, it turned out that it lacks the
    required flexibility.

    1. Its use case is requirements management. So it has some standard
    attributes useful in this domain, like derived, header, level,
    normative, ref, reviewed, and text. However, I want to use it more
    generally for specification items and these attributes make not
    always
    sense. Having them in every item is just overhead and may cause
    confusion.


If they are documented well and their flow through the process is clear,
there should not be huge confusion. Performance overhead maybe.

I have seen project requirements that had schedule phase or HW/SW associated with each requirement. On those projects, it seemed to me that the primary
problem was that the tooling couldn't check that parent requirement
custom attributes had an relationship to those of the children. Schedule
phases and HW/SW didn't match across the levels of requirements and
there was no way to know if it was intentional or just 100s of mistakes.


    2. The links cannot have custom attributes, e.g. role, enabled-by.


i assume by enabled-by you are tracking to an RTEMS compile or condefs.h
configure option.
Yes, the enabled-by stuff mostly relates to the RTEMS CPU options, e.g. RTEMS_SMP, RTEMS_POSIX_API, etc.

The FACE Technical Standard uses the term conditional to describe capabilities an implementation of the standard may provide. The term optional is also used in the general requirements community but these. I recall that is what POSIX calls them. Interestingly, neither standard uses will or may in those requirements as the textbooks suggest but collects them under optional feature categories.


    3. Inside a document (directory) items are supposed to have a common
    type. I would like to store at a hierarchy level also distinct
    specializations.

    4. The verification if the items is quite limited. We need
    verification
    with type-based rules.


This sounds like you have found the problem I was referring to above.
Parent and child should follow rules on custom attributes.
Yes, I think it is a must to verify basic things, e.g. proper relationships, the right set of attributes, proper values for the attributes, etc.


    5. The UIDs in combination with the document hierarchy lead to
    duplication, e.g. a/b/c/a-b-c-d.yml. You have the path (a/b/c)
    also in
    the file name (a-b-c). You cannot have relative UIDs in links (e.g.
    ../parent-req) . The specification items may contain multiple
    requirements, e.g. min/max attributes. There is no way to identify
    them.


This seems fixable.


    I will probably stop using Doorstop and use a custom tooling. With
    Python, this is quite easy. I already have the infrastructure for
    this in:

    https://git.rtems.org/sebh/rtems-qual.git/

    I will try this out with the new build system.


You are indeed pushing beyond what a requirements management tool
is usually scoped to do. Which is funny because some of the commercial
tools have capabilities not discussed so far. They are usually metrics,
static analysis, and/or code coverage. We address two of the three with
custom tools.

I agree with Chris that you should discuss this with the Doorstop project.
RTEMS has certainly grown with odd requirements thrown at it. It would
be rude to not give another open source project the same opportunity.
Of course, that may not change the end result.

https://github.com/doorstop-dev/doorstop/issues/471


If we do end up beyond Doorstop's mission, then it is worth considering
a sibling tool to do the generation. But I also know that Doorstop is not
a huge body of Python either.

I converted the specification of the new build system using path-like UIDs. Python is really nice here, since you can simply use the os.path support. The transformation to the new format was pretty easy now that everything is contained in a machine readable format that ends up with a bunch of Python lists, dicts, and scalars.

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

Reply via email to