Software Requirements

Requirements for mlx.traceability

System shall implement a plugin for the sphinx documentation system. It shall add tracebility within the documentation.

The plugin shall allow for splitting the documentation in parts.

A documentation part shall have a unique identification.

A documentation part shall have a optional brief description.

A documentation part shall have optional content. The content shall be parseable reStructuredText (RST), and passed through the configured sphinx parser/renderer.

It shall be possible to add attributes to the documentation parts. Attributes have a key and an optional value. The set of attributes and the validness of the attribute values shall be configurable.

It shall be possible to link documentation parts to other documentation parts. The set of relations shall be configurable.

When a documentation part <A> is related to a documentation part <B> (forward relation), the reverse relation from documentation part <B> to documentation part <A> shall be automatically created.

It shall be possible to generate a list of documentation parts matching a certain query.

It shall be possible to calculate the coverage for a certain type of relation between documentation parts.

It shall be possible to query the relations between documentation parts. It shall be possible to generate overview matrix of these relations.

It shall be possible to query the relations between documentation parts. It shall be possible to generate overview tree of these relations.

An overview table of the attribute values for documentation parts shall be generated.

The plugin shall be able to allow configurability of the order of items’ attributes.

The plugin shall be optimized for performance to minimize its impact on the documentation’s build time. For example, unneeded sorting should be avoided.

Traceability matrix

Tree of requirements

Design coverage

Trace requirements to design

Statistics: 15 out of 16 covered: 93%

Requirement

Design

RQT-ATTRIBUTES : Documentation parts can have attributes

DESIGN-ATTRIBUTES : Documentation parts can have attributes

RQT-ATTRIBUTES_MATRIX : Overview of attributes on documentation parts

DESIGN-ATTRIBUTES : Documentation parts can have attributes

DESIGN-ATTRIBUTES_MATRIX : Overview of attributes on documentation parts

RQT-ATTRIBUTE_SORT : Custom sorting of items' attributes

DESIGN-ATTRIBUTE_SORT : Custom sorting of items' attributes

RQT-AUTO_REVERSE : Automatic creation of reverse relations

DESIGN-AUTO_REVERSE : Automatic creation of reverse relations

RQT-CAPTION : Brief description of documentation part

DESIGN-CAPTION : Brief description of documentation part

RQT-CONTENT : Content of documentation part

DESIGN-CONTENT : Content of documentation part

RQT-COVERAGE : Calculation of coverage for relations between documentation parts

DESIGN-COVERAGE : Calculation of coverage for relations between documentation parts

RQT-DOCUMENTATION_ID : Identification of documentation part

DESIGN-DOCUMENTATION_ID : Identification of documentation part

RQT-DUMMY : Dummy requirement that is not covered by a test

DESIGN-ATTRIBUTES : Documentation parts can have attributes

DESIGN-ITEMIZE : Allow splitting the documentation in parts

RQT-ITEMIZE : Allow splitting the documentation in parts

DESIGN-ITEMIZE : Allow splitting the documentation in parts

RQT-LIST : Listing documentation parts

DESIGN-LIST : Listing documentation parts

RQT-MATRIX : Auto-generation of a traceability matrix

DESIGN-MATRIX : Auto-generation of a traceability matrix

RQT-PERFORMANCE : The plugin shall be performant

RQT-RELATIONS : Documentation parts can be linked to each other

DESIGN-RELATIONS : Documentation parts can be linked to each other

RQT-TRACEABILITY : A plugin for sphinx documentation system, adding traceability

DESIGN-TRACEABILITY : Top level design for mlx.traceability

RQT-TREE : Auto-generation of a traceability tree

DESIGN-TREE : Auto-generation of a traceability tree

Design coverage chart of functional requirements

_images/piechart-df1942cc8363baced976512b4c0ff1b8a51ed0e534c5b4637c5e4c8e3e05e534.svg

RQT

DESIGN

Covered

RQT-ATTRIBUTESDocumentation parts can have attributes

DESIGN-ATTRIBUTESDocumentation parts can have attributes

RQT-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

DESIGN-ATTRIBUTESDocumentation parts can have attributes

DESIGN-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

RQT-ATTRIBUTE_SORTCustom sorting of items' attributes

DESIGN-ATTRIBUTE_SORTCustom sorting of items' attributes

RQT-AUTO_REVERSEAutomatic creation of reverse relations

DESIGN-AUTO_REVERSEAutomatic creation of reverse relations

RQT-CAPTIONBrief description of documentation part

DESIGN-CAPTIONBrief description of documentation part

RQT-CONTENTContent of documentation part

DESIGN-CONTENTContent of documentation part

RQT-COVERAGECalculation of coverage for relations between documentation parts

DESIGN-COVERAGECalculation of coverage for relations between documentation parts

RQT-DOCUMENTATION_IDIdentification of documentation part

DESIGN-DOCUMENTATION_IDIdentification of documentation part

RQT-DUMMYDummy requirement that is not covered by a test

DESIGN-ATTRIBUTESDocumentation parts can have attributes

DESIGN-ITEMIZEAllow splitting the documentation in parts

RQT-ITEMIZEAllow splitting the documentation in parts

DESIGN-ITEMIZEAllow splitting the documentation in parts

RQT-LISTListing documentation parts

DESIGN-LISTListing documentation parts

RQT-MATRIXAuto-generation of a traceability matrix

DESIGN-MATRIXAuto-generation of a traceability matrix

RQT-RELATIONSDocumentation parts can be linked to each other

DESIGN-RELATIONSDocumentation parts can be linked to each other

RQT-TRACEABILITYA plugin for sphinx documentation system, adding traceability

DESIGN-TRACEABILITYTop level design for mlx.traceability

RQT-TREEAuto-generation of a traceability tree

DESIGN-TREEAuto-generation of a traceability tree

Test coverage

Trace requirements to test cases

Statistics: 12 out of 16 covered: 75%

Requirement

Test case

RQT-ATTRIBUTESDocumentation parts can have attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_NO_OVERWRITE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_OVERWRITE

UTEST_TRACEABLE_ITEM-GET_ATTRIBUTES

UTEST_TRACEABLE_ITEM-REMOVE_ATTRIBUTE

UTEST_TRACEABLE_ITEM-REMOVE_INVALID_ATTRIBUTE

RQT-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

ITEST-ATTRIBUTES_MATRIXTests overview of attributes on documentation parts

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-ATTRIBUTE_SORTCustom sorting of items' attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-AUTO_REVERSEAutomatic creation of reverse relations

ITEST-AUTO_REVERSETests automatic creation of reverse relations

RQT-CAPTIONBrief description of documentation part

ITEST-CAPTIONTests caption

UTEST_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_TRACEABLE_ITEM-SET_CAPTION

RQT-CONTENTContent of documentation part

UTEST_TRACEABLE_ITEM-SET_CONTENT

RQT-COVERAGECalculation of coverage for relations between documentation parts

ITEST-COVERAGETests calculation of coverage for relations between documentation parts.

RQT-DOCUMENTATION_IDIdentification of documentation part

UTEST_TRACEABLE_ITEM-INIT

RQT-DUMMYDummy requirement that is not covered by a test

RQT-ITEMIZEAllow splitting the documentation in parts

RQT-LISTListing documentation parts

ITEST-LISTTests listing of documentation parts

RQT-MATRIXAuto-generation of a traceability matrix

ITEST-MATRIXTests auto-generation of traceability matrix.

UTEST_ITEM_MATRIX-STORE_ROW

RQT-PERFORMANCEThe plugin shall be performant

RQT-RELATIONSDocumentation parts can be linked to each other

UTEST_TRACEABLE_COLLECTION-RELATED

RQT-TRACEABILITYA plugin for sphinx documentation system, adding traceability

RQT-TREEAuto-generation of a traceability tree

ITEST-TREETests auto-generation of a traceability tree.

ITEST-TREE_SCOPETests scope of a traceability tree.

Trace requirements to test case reports

Statistics: 6 out of 16 covered: 37%

Requirement

Test case

Test case report

Result

RQT-ATTRIBUTESDocumentation parts can have attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_NO_OVERWRITE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_OVERWRITE

UTEST_TRACEABLE_ITEM-GET_ATTRIBUTES

UTEST_TRACEABLE_ITEM-REMOVE_ATTRIBUTE

UTEST_TRACEABLE_ITEM-REMOVE_INVALID_ATTRIBUTE

RQT-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

ITEST-ATTRIBUTES_MATRIXTests overview of attributes on documentation parts

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-ATTRIBUTE_SORTCustom sorting of items' attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-AUTO_REVERSEAutomatic creation of reverse relations

ITEST-AUTO_REVERSETests automatic creation of reverse relations

ITEST_REP-AUTO_REVERSE

pass

RQT-CAPTIONBrief description of documentation part

ITEST-CAPTIONTests caption

ITEST_REP-CAPTIONReport with attribute missing from priority list

skip

UTEST_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_REP_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_TRACEABLE_ITEM-SET_CAPTION

UTEST_REP_TRACEABLE_ITEM-SET_CAPTION

pass

RQT-CONTENTContent of documentation part

UTEST_TRACEABLE_ITEM-SET_CONTENT

RQT-COVERAGECalculation of coverage for relations between documentation parts

ITEST-COVERAGETests calculation of coverage for relations between documentation parts.

ITEST_REP-COVERAGE

error

RQT-DOCUMENTATION_IDIdentification of documentation part

UTEST_TRACEABLE_ITEM-INIT

RQT-DUMMYDummy requirement that is not covered by a test

RQT-ITEMIZEAllow splitting the documentation in parts

RQT-LISTListing documentation parts

ITEST-LISTTests listing of documentation parts

ITEST_REP-LIST

skip

RQT-MATRIXAuto-generation of a traceability matrix

ITEST-MATRIXTests auto-generation of traceability matrix.

ITEST_REP-MATRIX

pass

UTEST_ITEM_MATRIX-STORE_ROW

RQT-PERFORMANCEThe plugin shall be performant

RQT-RELATIONSDocumentation parts can be linked to each other

UTEST_TRACEABLE_COLLECTION-RELATED

RQT-TRACEABILITYA plugin for sphinx documentation system, adding traceability

RQT-TREEAuto-generation of a traceability tree

ITEST-TREETests auto-generation of a traceability tree.

ITEST_REP-TREE

PASS

ITEST-TREE_SCOPETests scope of a traceability tree.

ITEST_REP-TREE_SCOPE

ERROR

Chart fetching third label from defaults

_images/piechart-6af9f5f3727a4ae819602fb3f44a523909629dc4b8cd360bb454ac3aa968859a.svg

Statistics: 12 out of 16 covered: 75%

RQT

[IU]TEST

[IU]TEST_REP

not covered

RQT-DUMMYDummy requirement that is not covered by a test

RQT-ITEMIZEAllow splitting the documentation in parts

RQT-PERFORMANCEThe plugin shall be performant

RQT-TRACEABILITYA plugin for sphinx documentation system, adding traceability

covered

RQT-ATTRIBUTESDocumentation parts can have attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_NO_OVERWRITE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_OVERWRITE

UTEST_TRACEABLE_ITEM-GET_ATTRIBUTES

UTEST_TRACEABLE_ITEM-REMOVE_ATTRIBUTE

UTEST_TRACEABLE_ITEM-REMOVE_INVALID_ATTRIBUTE

RQT-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

ITEST-ATTRIBUTES_MATRIXTests overview of attributes on documentation parts

ITEST_REP-ATTRIBUTES_MATRIX

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-ATTRIBUTE_SORTCustom sorting of items' attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-CONTENTContent of documentation part

UTEST_TRACEABLE_ITEM-SET_CONTENT

RQT-DOCUMENTATION_IDIdentification of documentation part

UTEST_TRACEABLE_ITEM-INIT

RQT-MATRIXAuto-generation of a traceability matrix

ITEST-MATRIXTests auto-generation of traceability matrix.

ITEST_REP-MATRIX

UTEST_ITEM_MATRIX-STORE_ROW

RQT-RELATIONSDocumentation parts can be linked to each other

UTEST_TRACEABLE_COLLECTION-RELATED

executed

RQT-AUTO_REVERSEAutomatic creation of reverse relations

ITEST-AUTO_REVERSETests automatic creation of reverse relations

ITEST_REP-AUTO_REVERSE

RQT-CAPTIONBrief description of documentation part

ITEST-CAPTIONTests caption

ITEST_REP-CAPTIONReport with attribute missing from priority list

UTEST_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_REP_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_TRACEABLE_ITEM-SET_CAPTION

UTEST_REP_TRACEABLE_ITEM-SET_CAPTION

RQT-COVERAGECalculation of coverage for relations between documentation parts

ITEST-COVERAGETests calculation of coverage for relations between documentation parts.

ITEST_REP-COVERAGE

RQT-LISTListing documentation parts

ITEST-LISTTests listing of documentation parts

ITEST_REP-LIST

RQT-TREEAuto-generation of a traceability tree

ITEST-TREETests auto-generation of a traceability tree.

ITEST_REP-TREE

ITEST-TREE_SCOPETests scope of a traceability tree.

ITEST_REP-TREE_SCOPE

Test coverage chart with test results, based on the :targettype: option

_images/piechart-3968be35139f033dd2fbd704a9ff8938f8a535ce46ec4a7da958e648ef698d25.svg

Statistics: 12 out of 16 covered: 75%

RQT

[IU]TEST

[IU]TEST_REP

not covered

RQT-DUMMYDummy requirement that is not covered by a test

RQT-ITEMIZEAllow splitting the documentation in parts

RQT-PERFORMANCEThe plugin shall be performant

RQT-TRACEABILITYA plugin for sphinx documentation system, adding traceability

covered

RQT-ATTRIBUTESDocumentation parts can have attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_NO_OVERWRITE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_OVERWRITE

UTEST_TRACEABLE_ITEM-GET_ATTRIBUTES

UTEST_TRACEABLE_ITEM-REMOVE_ATTRIBUTE

UTEST_TRACEABLE_ITEM-REMOVE_INVALID_ATTRIBUTE

RQT-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

ITEST-ATTRIBUTES_MATRIXTests overview of attributes on documentation parts

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-ATTRIBUTE_SORTCustom sorting of items' attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-CONTENTContent of documentation part

UTEST_TRACEABLE_ITEM-SET_CONTENT

RQT-DOCUMENTATION_IDIdentification of documentation part

UTEST_TRACEABLE_ITEM-INIT

RQT-MATRIXAuto-generation of a traceability matrix

ITEST-MATRIXTests auto-generation of traceability matrix.

ITEST_REP-MATRIX

UTEST_ITEM_MATRIX-STORE_ROW

RQT-RELATIONSDocumentation parts can be linked to each other

UTEST_TRACEABLE_COLLECTION-RELATED

fails

RQT-COVERAGECalculation of coverage for relations between documentation parts

ITEST-COVERAGETests calculation of coverage for relations between documentation parts.

ITEST_REP-COVERAGE

RQT-TREEAuto-generation of a traceability tree

ITEST-TREETests auto-generation of a traceability tree.

ITEST_REP-TREE

ITEST-TREE_SCOPETests scope of a traceability tree.

ITEST_REP-TREE_SCOPE

passes

RQT-AUTO_REVERSEAutomatic creation of reverse relations

ITEST-AUTO_REVERSETests automatic creation of reverse relations

ITEST_REP-AUTO_REVERSE

RQT-CAPTIONBrief description of documentation part

ITEST-CAPTIONTests caption

ITEST_REP-CAPTIONReport with attribute missing from priority list

UTEST_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_REP_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_TRACEABLE_ITEM-SET_CAPTION

UTEST_REP_TRACEABLE_ITEM-SET_CAPTION

skipped

RQT-LISTListing documentation parts

ITEST-LISTTests listing of documentation parts

ITEST_REP-LIST

Test coverage chart with test results, based on the :result: attribute

_images/piechart-cffdf965df199a907c899b9dcf384d3f2acd0fd988473075ddc2e36b0d703ad6.svg

Statistics: 12 out of 16 covered: 75%

RQT

[IU]TEST

[IU]TEST_REP

uncovered

RQT-DUMMYDummy requirement that is not covered by a test

RQT-ITEMIZEAllow splitting the documentation in parts

RQT-PERFORMANCEThe plugin shall be performant

RQT-TRACEABILITYA plugin for sphinx documentation system, adding traceability

covered

RQT-ATTRIBUTESDocumentation parts can have attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_NO_OVERWRITE

UTEST_TRACEABLE_ITEM-ADD_ATTRIBUTE_OVERWRITE

UTEST_TRACEABLE_ITEM-GET_ATTRIBUTES

UTEST_TRACEABLE_ITEM-REMOVE_ATTRIBUTE

UTEST_TRACEABLE_ITEM-REMOVE_INVALID_ATTRIBUTE

RQT-ATTRIBUTES_MATRIXOverview of attributes on documentation parts

ITEST-ATTRIBUTES_MATRIXTests overview of attributes on documentation parts

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_ATTRIBUTE

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-ATTRIBUTE_SORTCustom sorting of items' attributes

UTEST_TRACEABLE_COLLECTION-GET_ITEMS_SORTATTRIBUTES

RQT-CONTENTContent of documentation part

UTEST_TRACEABLE_ITEM-SET_CONTENT

RQT-DOCUMENTATION_IDIdentification of documentation part

UTEST_TRACEABLE_ITEM-INIT

RQT-MATRIXAuto-generation of a traceability matrix

ITEST-MATRIXTests auto-generation of traceability matrix.

ITEST_REP-MATRIX

UTEST_ITEM_MATRIX-STORE_ROW

RQT-RELATIONSDocumentation parts can be linked to each other

UTEST_TRACEABLE_COLLECTION-RELATED

has report

RQT-CAPTIONBrief description of documentation part

ITEST-CAPTIONTests caption

ITEST_REP-CAPTIONReport with attribute missing from priority list

UTEST_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_REP_ITEM_DIRECTIVE-MAKE_INTERNAL_ITEM_REF_SHOW_CAPTION

UTEST_TRACEABLE_ITEM-SET_CAPTION

UTEST_REP_TRACEABLE_ITEM-SET_CAPTION

ERROR

RQT-COVERAGECalculation of coverage for relations between documentation parts

ITEST-COVERAGETests calculation of coverage for relations between documentation parts.

ITEST_REP-COVERAGE

RQT-TREEAuto-generation of a traceability tree

ITEST-TREETests auto-generation of a traceability tree.

ITEST_REP-TREE

ITEST-TREE_SCOPETests scope of a traceability tree.

ITEST_REP-TREE_SCOPE

pass

RQT-AUTO_REVERSEAutomatic creation of reverse relations

ITEST-AUTO_REVERSETests automatic creation of reverse relations

ITEST_REP-AUTO_REVERSE

skip

RQT-LISTListing documentation parts

ITEST-LISTTests listing of documentation parts

ITEST_REP-LIST

Test coverage chart with test results, based on the :targettype: option (in bad order)

_images/piechart-5ec6e0eb4b074125a9a8074407f44744edf1f02fcabdc1d71915371af8453c9f.svg

Statistics: 12 out of 16 covered: 75%

Test cases as source using sourcetype to label with the :splitsourcetype: flag

_images/piechart-2f066ea93978f427be687a062d87217c025badb98cef6b8f7ac51df08a4a718e.svg

Statistics: 9 out of 33 covered: 27%

All uncovered as the bad sourcetype results in 0 links

_images/piechart-22da45f4656ad9b08d6f93e380d3d544c2f5ac49e62808d4663a84e6105344e4.svg

All uncovered as there is no direct relationship

_images/piechart-11cc89d722a85f0caf68b2d57c521155bba9a6bd17500559334725afe5aa9c6b.svg

Chart with only one color configured to trigger warning

_images/piechart-bd56a647fc6cc74392d803c5520e1cd993e75297369954efd19af26b5a7a10ed.svg

Chart without any items: no image or warning shall be generated

Statistics: 0 out of 0 covered: 0%