Doorstop Issues

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Apr 20 18:14:18 UTC 2020


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

>
>
> On Sun, Apr 19, 2020 at 10:14 AM Sebastian Huber 
> <sebastian.huber at embedded-brains.de 
> <mailto:sebastian.huber at 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.



More information about the devel mailing list