We have a first cut at supporting traceability into requirements. This consists of two parts.
Part one is a DSL for specifying requirements. A requirement has an ID, a summary, a prose text and any number of child requirements. A requirement also has a kind (e.g. functional or operational). The kind determines which additional specifications have to be provided. Any DSL can be “plugged into” the requirements framework to provide formally specified data to requirements. Requirements can also have constraints among each other. And of course, the requirements themselves, the kinds and the constraints can be extended by users of the system.
The second part of the system is traceability. A requirements trace annotation can be added to any other program element, expressed in any language. A trace points to one or more requirements and includes a trace kind (such as implements or tests).
Using this approach (and an importer from other requirements management tools we’ll build in the future), flexible and extensible requirements traceability is supported for the mbeddr project.