This section contains requirements for the system.
High-Level Requirements:
- req(analyze) ... Contains requirements about analyzing trace and coverage data
- req(cli) ... Contains requirements about mantra's CLI
- req(coverage) ... Contains requirements about collecting requirement coverage data
- req(filter) ... Contains the requirement to ignore files and folders for referencing
- req(qa) ... Contains requirements about general quality assurance
- req(report) ... Contains requirements for reports from collected data
- req(requirement) ... Contains requirements about storing requirement information
- req(safety) ... Contains requirements about safety-critical aspects for mantra
- req(trace) ... Contains requirements about tracing requirements in code
Important Requirements:
- req(analyze) ... Contains requirements about analyzing trace and coverage data
- req(coverage) ... Contains requirements about collecting requirement coverage data
- req(req.id) ... Contains requirements about the requirement ID
- req(trace) ... Contains requirements about tracing requirements in code
Every requirement must start the heading with the ID assigned to the requirement to be able to reference it.
The ID must be wrapped in backticks `
, to prevent wrongful ID detection.
Example:
# `req_id`: Some title
Some description...
In addition to the general structure, requirements may contain sub-requirements to create a hierarchy of requirements. Sub-requirements are created by dot-like notation, starting with the ID of the parent requirement.
Note: The heading level should also be increased.
Example:
# `req_id`: Some title
The description of the high-level requirement.
## `req_id.sub_req`: Sub-requirement title
The description of the sub-requirement.
A requirement goes through the following phases:
-
proposed ... Requirements are proposed, by creating feature-request issues
The issue should be used as a central place to clarify the intent of the feature-request. At this stage, the requirement should not yet be documented in the wiki, because it is highly likely that the content of the requirement will change.
-
ready ... Once a requirement has enough information available to be implemented, it may be considered ready
The Definition of Ready defines minimum criteria a requirement must fulfill before it may be considered ready. Before the requirement is implemented, it must be documented in the wiki with a unique ID to be used for tracing.
To keep the wiki small, requirements should not be documented too far ahead of the planned implementation. This also makes it easier to react to changes to the requirement. As result, the wiki then only contains implemented or soon-to-be implemented requirements.
-
Optional: declined ... A requirement in proposed or ready state may be declined, meaning that it will not be implemented
A declined requirement must be removed from the wiki if it already exists. This keeps the wiki small, and focused to implemented or soon-to-be implemented requirements.
-
active ... When the implementation of a requirement is merged, the requirement gets active
mantra may be used during testing to check what requirements are covered through tests.
-
deprecated ... If a requirement is replaced or removed by another requirement, the requirement gets deprecated.
Note that requirements might still be active in some projects, but deprecated in others. The requirement should be deleted if the requirement is deprecated in all projects, to keep the wiki small.
Note: A link should be added in the deprecated requirement, pointing to the new requirement for better traceability.
A requirement may be considered ready if it fulfills the following statements:
-
General:
- It is clear where the requirement must be placed in the wiki
- The ID for the requirement is decided and unique in the wiki
- All currently raised concerns by stakeholders are resolved
- Active quality assurance requirements were considered (see req(qa))
-
For high-level requirements:
- The intent of the requirement is covered by the existing sub-requirements
- All sub-requirements fulfill their Definition of Ready
Note: If the requirement does not fulfill these statements, try refining existing sub-requirements, or create additional ones.
-
For low-level requirements:
- At least one developer understands how to implement it
- Implementation is estimated to take less than two weeks for one developer
Note: If the requirement does not fulfill these statements, consider creating sub-requirements for it.