1. SDoc data model
-
12.1. Text files for storing documentation and requirements SDOC-SSS-88 The Requirements Tool shall allow storage of documentation and requirements content using text files.
-
6.2. ReqIF export/import SDOC-SSS-58 The Requirements Tool shall support exporting/importing requirements content from/to ReqIF format.
-
6. ReqIF export ZEP-6 Requirements specification shall be exportable to ReqIF.
-
StrictDoc shall be based on a data model.
-
3.1. Requirements CRUD SDOC-SSS-4 The Requirements Tool shall enable the main requirements management operations:
- Create a requirement
- Read / view / browse a requirement
- Update / edit a requirement
- Delete a requirement.
StrictDoc's data model shall support modeling requirements.
-
3.3. Custom fields SDOC-SSS-62 The requirements tool shall support configuring a requirement item with an arbitrary set of fields.
NOTE: Examples of typical fields include: UID, Title, Statement, Rationale, Comment. Other fields that are used very often are: Status, Tags, Criticality level, Priority, etc.
-
3. Custom fields ZEP-3 Requiremements objects shall be configurable to create several types with a number of custom fields.
-
StrictDoc's "Requirement" model shall support configurable fields system.
-
3.2. Minimal requirement field set SDOC-SSS-61 The Requirements Tool shall support at least the following requirement field set:
- UID
- STATUS
- TITLE
- STATEMENT
- RATIONALE
- COMMENT
- RELATIONS (connections with other requirements).
-
10. Minimal requirement field set ZEP-10 A requirements object shall at least comprise the following fields (or similar):
- title
- ID
- Description
- Status
- Outbound links
- Inbound links (optional?)
-
14. Status field ZEP-14 Each requirements object type shall have a configurable status workflow.
By default, the Requirement shall support the following fields:
- MID
- UID
- STATUS
- TITLE
- STATEMENT
- RATIONALE
- COMMENT.
-
3.4. Structuring requirements in documents SDOC-SSS-64 The Requirements Tool shall support structuring requirements in documents.
-
13. Structuring requirements in documents ZEP-13 Requirements objects shall be structurable in a document like manner (with requirements ordering, and organized in chapters).
-
StrictDoc's data model shall support modeling documents.
-
2.5. Document meta information (UID, version, authors, signatures, etc) SDOC-SSS-53 The Requirements Tool shall support management of document meta information.
-
2.6. Document versioning SDOC-SSS-75 The Requirements Tool shall provide capabilities for document versioning.
StrictDoc's data model shall support a Document metadata model including at least:
- UID
- Document version
- Document classification
- Document authors.
-
2.5. Document meta information (UID, version, authors, signatures, etc) SDOC-SSS-53 The Requirements Tool shall support management of document meta information.
-
2.6. Document versioning SDOC-SSS-75 The Requirements Tool shall provide capabilities for document versioning.
StrictDoc's data model shall support configuring the document options:
- Enable/disable MID
- Markup choice, e.g., RST, HTML, etc.
- Levels (automatic or manual)
- Node style
- Default presentation view.
-
2.3. Documents with nested sections/chapters structure SDOC-SSS-51 The Requirements Tool shall allow management of documents with nested sections/chapters structure.
StrictDoc's data model shall support a concept of a "Section" which nests other Sections, Requirements, Texts.
-
2.1. Documents (CRUD) SDOC-SSS-3 The Requirements Tool shall provide the CRUD operations for document management:
- Create document
- Read document
- Update document
- Delete document.
StrictDoc's data model shall support a "Free Text" model, representing non-normative documentation content.
-
2.4. Assembling documents from fragments SDOC-SSS-52 The Requirements Tool shall allow composing documents from other documents or fragments.
NOTE: If a Requirements Tool implements stores documents in a file system, the composition can be arranged at a file level when a parent document file includes the child fragment files and produces a composite document.
-
1. Multiple files / include mechanism ZEP-1 Requirements or groups of requirements shall be distributable over several files and still form a full specification (document) via some kind of include mechanism.
-
-
1.5. Document fragments in separate files DO178-4 StrictDoc shall support assembly of documents from multiple files.
StrictDoc's data model shall allow composing a Document from other Documents.
-
3.8. Link requirements together SDOC-SSS-7 The Requirements Tool shall allow bi-directional linking of requirements nodes together using Parent or Child relations.
-
4. Links ZEP-4 Linking shall in general be supported between any requirement object of any object type in a 1:n manner.
-
-
4.4. Compliance matrices SDOC-SSS-48 The Requirements Tool shall allow generating a Compliance Matrix document.
The StrictDoc data model shall support connecting requirements using Parent and Child relations.
-
3.9. Multiple link roles SDOC-SSS-8 The Requirements Tool shall support the link roles.
Example of roles for a child-to-parent link: "verifies", "implements", "satisfies", etc.
-
5. Multiple link roles ZEP-5 Links shall be configurable to create multiple link roles.
-
Each SDoc relation shall be optionally configurable with a relation role.
NOTE: A relation role is a string value. Typical examples: "refines", "verifies", "implements".
StrictDoc shall support referencing any node by embedding a hyperlink within the text content of another node.
StrictDoc shall support adding anchors within the text content of any node, such that these anchors can be referenced by inline links from other nodes.
2. SDoc text markup
-
12.1. Text files for storing documentation and requirements SDOC-SSS-88 The Requirements Tool shall allow storage of documentation and requirements content using text files.
StrictDoc shall implement its own text markup language called S-Doc (strict-doc).
-
9.1. Data integrity of documentation/requirements SDOC-SSS-94 The Requirements Tool shall ensure the integrity of stored documentation and requirements data throughout its lifecycle.
StrictDoc shall ensure that identical SDoc content is produced every time StrictDoc reads an SDoc file and then writes it to another SDoc file.
-
10.10. Programmatic access to requirements data SDOC-SSS-87 The Requirements Tool shall provide programmatic access to requirements data.
-
11.5. Version control (Git) SDOC-SSS-33 The Requirements Tool shall support the software version control systems (e.g., Git).
-
10.7. Requirements database SDOC-SSS-84 The Requirements Tool shall store documentation and requirements data in a database.
-
9.1. Data integrity of documentation/requirements SDOC-SSS-94 The Requirements Tool shall ensure the integrity of stored documentation and requirements data throughout its lifecycle.
StrictDoc shall assume and implement capabilities for storage of SDoc files using Git version control system.
-
10.3. Easy user experience SDOC-SSS-80 The Requirements Tool shall provide a smooth user experience.
NOTE: Documentation and requirements management are composite activities that consist of several types of repetitive tasks. A requirements tool user experience should assist in automating these tasks as far as possible and make the overall workflow efficient and precise.
The SDoc markup content shall be stored in files with .sdoc extension.
-
3.4. Structuring requirements in documents SDOC-SSS-64 The Requirements Tool shall support structuring requirements in documents.
-
13. Structuring requirements in documents ZEP-13 Requirements objects shall be structurable in a document like manner (with requirements ordering, and organized in chapters).
-
-
1.1. Document concept DO178-1 StrictDoc shall store requirements in document files.
StrictDoc's SDoc file shall represent content of a single document.
-
1.2. Strict specified grammar DO178-2 StrictDoc shall feature a specified document grammar.
-
12.2. Strict text language syntax SDOC-SSS-55 The Requirements Tool shall provide a strict syntax for its text language.
-
12.3. Machine-readable format SDOC-SSS-54 The Requirement Tool's text language shall be machine-readable.
-
2. Clear separation of requirements (machine-readable) ZEP-2 Requirements objects shall be clearly separated from each other, also when organized in the same file.
-
-
9.1. Data integrity of documentation/requirements SDOC-SSS-94 The Requirements Tool shall ensure the integrity of stored documentation and requirements data throughout its lifecycle.
StrictDoc's markup language shall be based on a well-defined grammar.
-
3.2. Minimal requirement field set SDOC-SSS-61 The Requirements Tool shall support at least the following requirement field set:
- UID
- STATUS
- TITLE
- STATEMENT
- RATIONALE
- COMMENT
- RELATIONS (connections with other requirements).
-
10. Minimal requirement field set ZEP-10 A requirements object shall at least comprise the following fields (or similar):
- title
- ID
- Description
- Status
- Outbound links
- Inbound links (optional?)
-
14. Status field ZEP-14 Each requirements object type shall have a configurable status workflow.
The StrictDoc grammar shall have at least the following fields activated by default:
- UID
- STATUS
- TITLE
- STATEMENT
- RATIONALE
- COMMENT
- RELATIONS (references to other requirements)
-
3.3. Custom fields SDOC-SSS-62 The requirements tool shall support configuring a requirement item with an arbitrary set of fields.
NOTE: Examples of typical fields include: UID, Title, Statement, Rationale, Comment. Other fields that are used very often are: Status, Tags, Criticality level, Priority, etc.
-
3. Custom fields ZEP-3 Requiremements objects shall be configurable to create several types with a number of custom fields.
-
The SDoc markup shall support custom grammars.
-
1.11. Project-level grammar DO178-9 StrictDoc shall support creation of a project-level grammar.
-
2.4. Assembling documents from fragments SDOC-SSS-52 The Requirements Tool shall allow composing documents from other documents or fragments.
NOTE: If a Requirements Tool implements stores documents in a file system, the composition can be arranged at a file level when a parent document file includes the child fragment files and produces a composite document.
-
1. Multiple files / include mechanism ZEP-1 Requirements or groups of requirements shall be distributable over several files and still form a full specification (document) via some kind of include mechanism.
-
StrictDoc shall support an inclusion of a grammar stored in a separate file.
-
3.11. Unique identification of requirements SDOC-SSS-89 The Requirements Tool shall provide means for unique identification of every requirement.
The SDoc markup shall only accept UID identifiers that consist of alphanumeric characters separated by a limited set of ("_", "-", ".") characters (TBD).
-
2.7. Text formatting capabilities SDOC-SSS-63 The Requirements Tool shall provide "rich text" formatting capabilities which includes but not limited to:
- Headings
- Lists
- Tables
- UML diagrams
- etc.
-
9. Text formatting capabilities ZEP-9 The description field shall allow for formatting such as:
- lists
- tables
- headings
- UML diagrams
- etc.
StrictDoc shall render supported markup formats (at least RST and Markdown) to HTML fragments via dedicated format-specific writers selected by markup type.
-
2.7. Text formatting capabilities SDOC-SSS-63 The Requirements Tool shall provide "rich text" formatting capabilities which includes but not limited to:
- Headings
- Lists
- Tables
- UML diagrams
- etc.
-
9. Text formatting capabilities ZEP-9 The description field shall allow for formatting such as:
- lists
- tables
- headings
- UML diagrams
- etc.
StrictDoc's markup language shall support integration with MathJax.
-
12.2. Strict text language syntax SDOC-SSS-55 The Requirements Tool shall provide a strict syntax for its text language.
SDoc text markup blocks shall all start from column 1, i.e., the nesting of the blocks is not allowed.
-
12.2. Strict text language syntax SDOC-SSS-55 The Requirements Tool shall provide a strict syntax for its text language.
-
9.1. Data integrity of documentation/requirements SDOC-SSS-94 The Requirements Tool shall ensure the integrity of stored documentation and requirements data throughout its lifecycle.
SDoc markup shall provide "type safety" for all fields.
NOTE: "Type safety" means that each field has a type and a corresponding set of validation checks.
3. Markdown markup
StrictDoc shall support Markdown markup.
-
1.1. Read Markdown markup SDOC-LLR-183 StrictDoc shall support reading Markdown files into in-memory SDoc documents.
-
1.2. Write Markdown markup SDOC-LLR-197 StrictDoc shall support writing in-memory SDoc documents to Markdown files.
-
1.3. Markdown files discovery SDOC-LLR-192 StrictDoc shall discover Markdown files *.md and *.markdown using the same mechanism as used for SDoc files.
4. Graph database
-
3.8. Link requirements together SDOC-SSS-7 The Requirements Tool shall allow bi-directional linking of requirements nodes together using Parent or Child relations.
-
4. Links ZEP-4 Linking shall in general be supported between any requirement object of any object type in a 1:n manner.
-
StrictDoc shall maintain a complete Traceability Index of all documentation- and requirements-related information available in a project tree.
-
3.11. Unique identification of requirements SDOC-SSS-89 The Requirements Tool shall provide means for unique identification of every requirement.
-
9.1. Data integrity of documentation/requirements SDOC-SSS-94 The Requirements Tool shall ensure the integrity of stored documentation and requirements data throughout its lifecycle.
For each requirement node, the Traceability Index shall ensure its uniqueness throughout the node's lifecycle.
-
3.12. Requirements database consistency checks SDOC-SSS-47 The Requirements Tool shall provide a validation mechanism that ensures the integrity of requirements and connections between them.
NOTE: Examples of integrity checks:
- Requirements have correct fields.
- Requirements do not form cycles.
- Requirements only link to other requirements as specified in a project configuration.
-
9.1. Data integrity of documentation/requirements SDOC-SSS-94 The Requirements Tool shall ensure the integrity of stored documentation and requirements data throughout its lifecycle.
The Traceability Index shall detect cycles between requirements.
-
3.12. Requirements database consistency checks SDOC-SSS-47 The Requirements Tool shall provide a validation mechanism that ensures the integrity of requirements and connections between them.
NOTE: Examples of integrity checks:
- Requirements have correct fields.
- Requirements do not form cycles.
- Requirements only link to other requirements as specified in a project configuration.
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
The Traceability Index shall recognize and maintain the relations between all documents of a project tree.
-
3.10. Reverse parent links SDOC-SSS-71 The Requirements Tool shall support the Reverse Parent relationship.
-
4.4. Compliance matrices SDOC-SSS-48 The Requirements Tool shall allow generating a Compliance Matrix document.
The StrictDoc's graph database shall maintain the requirement relations and their reverse relations as follows:
- For a Parent relation, the database shall calculate the reverse Child relation.
- For a Child relation, the database shall calculate the reverse Parent relation.
5. Documentation tree
-
12.4. Requirements data from multiple repositories SDOC-SSS-34 The Requirement Tool shall allow reading requirements files from multiple folders or repositories.
NOTE: The folders/repositories can be arbitrarily nested.
-
1.4. Multiple git repositories document assembly DO178-3 StrictDoc shall support generating requirement trees from multiple Git repositories.
StrictDoc shall discover SDoc documents recursively based on a specified input path.
-
1.3. Markdown files discovery SDOC-LLR-192 StrictDoc shall discover Markdown files *.md and *.markdown using the same mechanism as used for SDoc files.
6. Web/HTML frontend
6.1. General export requirements
-
11.1. Static HTML export SDOC-SSS-30 The Requirements Tool shall support generation of documentation to static HTML.
StrictDoc shall support generating requirements documentation into static HTML.
-
11.2. Graphical user interface (GUI) SDOC-SSS-31 The Requirements Tool shall provide a graphical user interface.
-
1.7. Graphical user interface (GUI) DO178-6 StrictDoc shall support a graphical user interface.
-
10.1. General usability SDOC-SSS-79 The Requirements Tool shall be accessible to a broad spectrum of users.
NOTE: Factors to consider:
- The cost of a tool.
- The easy of installation.
- The availability of a graphical user interface.
- The availability of a programmatic access to the functions of a tool.
- The interoperability of the tool with other tools.
-
10.3. Easy user experience SDOC-SSS-80 The Requirements Tool shall provide a smooth user experience.
NOTE: Documentation and requirements management are composite activities that consist of several types of repetitive tasks. A requirements tool user experience should assist in automating these tasks as far as possible and make the overall workflow efficient and precise.
StrictDoc shall provide a web interface.
-
2.7. Multi-user editing of documents DO178-17 StrictDoc shall allow multi-user editing of documents.
-
10.4. Support projects with a large number of users SDOC-SSS-81 The Requirements Tool shall be capable of supporting a large number of users.
StrictDoc shall support concurrent use and editing of a single StrictDoc web server instance by multiple users.
-
10.3. Easy user experience SDOC-SSS-80 The Requirements Tool shall provide a smooth user experience.
NOTE: Documentation and requirements management are composite activities that consist of several types of repetitive tasks. A requirements tool user experience should assist in automating these tasks as far as possible and make the overall workflow efficient and precise.
For all export operations, StrictDoc shall maintain the original filenames of the documents when producing output files.
6.2. Screen: Project tree
-
2.2. Browsing documentation tree SDOC-SSS-91 The Requirements Tool shall provide browsing of the documentation tree.
StrictDoc's "Project tree" screen shall provide browsing of a documentation project tree.
-
2.1. Documents (CRUD) SDOC-SSS-3 The Requirements Tool shall provide the CRUD operations for document management:
- Create document
- Read document
- Update document
- Delete document.
StrictDoc's Project Tree screen shall allow creating documents.
-
2.1. Documents (CRUD) SDOC-SSS-3 The Requirements Tool shall provide the CRUD operations for document management:
- Create document
- Read document
- Update document
- Delete document.
StrictDoc's Project Tree screen shall allow deleting documents.
6.3. Screen: Document (DOC)
-
2.1. Documents (CRUD) SDOC-SSS-3 The Requirements Tool shall provide the CRUD operations for document management:
- Create document
- Read document
- Update document
- Delete document.
StrictDoc's Document screen shall arrange all CRUD operations according to the input document format.
Example: If an SDoc document is read from a Markdown file using a dedicated reader, it shall be written back using a Markdown writer.
-
2.1. Documents (CRUD) SDOC-SSS-3 The Requirements Tool shall provide the CRUD operations for document management:
- Create document
- Read document
- Update document
- Delete document.
StrictDoc's Document screen shall allow reading documents.
-
2.1. Documents (CRUD) SDOC-SSS-3 The Requirements Tool shall provide the CRUD operations for document management:
- Create document
- Read document
- Update document
- Delete document.
StrictDoc's Document screen shall allow creating document nodes.
StrictDoc shall support cloning nodes from existing nodes.
-
3.1. Requirements CRUD SDOC-SSS-4 The Requirements Tool shall enable the main requirements management operations:
- Create a requirement
- Read / view / browse a requirement
- Update / edit a requirement
- Delete a requirement.
StrictDoc's Document screen shall allow update document content.
StrictDoc's Document screen shall support the deletion of document nodes.
-
3.8. Link requirements together SDOC-SSS-7 The Requirements Tool shall allow bi-directional linking of requirements nodes together using Parent or Child relations.
-
4. Links ZEP-4 Linking shall in general be supported between any requirement object of any object type in a 1:n manner.
-
StrictDoc's Document screen shall creating updating node relations.
-
3.8. Link requirements together SDOC-SSS-7 The Requirements Tool shall allow bi-directional linking of requirements nodes together using Parent or Child relations.
-
4. Links ZEP-4 Linking shall in general be supported between any requirement object of any object type in a 1:n manner.
-
StrictDoc's Document screen shall allow updating node relations.
-
3.5. Move requirement nodes within document SDOC-SSS-5 The Requirements Tool shall allow moving nodes (sections, requirements) within the containing document.
StrictDoc's Document screen shall provide a capability to move the nodes within a document.
-
3.3. Custom fields SDOC-SSS-62 The requirements tool shall support configuring a requirement item with an arbitrary set of fields.
NOTE: Examples of typical fields include: UID, Title, Statement, Rationale, Comment. Other fields that are used very often are: Status, Tags, Criticality level, Priority, etc.
-
3. Custom fields ZEP-3 Requiremements objects shall be configurable to create several types with a number of custom fields.
-
StrictDoc's screen shall allow editing a document's grammar.
-
7.2. Document-level configuration SDOC-SSS-93 The Requirements Tool shall provide a solution for configuring the document-level options.
NOTE: Examples of document-level options:
- Document title
- Requirement prefix.
- Other options local to the content and the presentation of a given document.
StrictDoc's Document screen shall provide controls for configuring the document-specific options.
-
3.7. Auto-provision of Requirement UIDs SDOC-SSS-6 The Requirements Tool shall provide controls for automatic generation of requirements UIDs.
-
8. Unique ID management ZEP-8 Requirements objects shall allow unique ID management when adding new requirements on different branches.
Options could be:
- UUID: no checking required, but not handy
- Manually assigned: collision checking required
- Centralized: when not affected by branching".
-
-
10.3. Easy user experience SDOC-SSS-80 The Requirements Tool shall provide a smooth user experience.
NOTE: Documentation and requirements management are composite activities that consist of several types of repetitive tasks. A requirements tool user experience should assist in automating these tasks as far as possible and make the overall workflow efficient and precise.
StrictDoc's Document screen shall provide controls for automatic generation of requirements UIDs.
-
3.7. Auto-provision of Requirement UIDs SDOC-SSS-6 The Requirements Tool shall provide controls for automatic generation of requirements UIDs.
-
8. Unique ID management ZEP-8 Requirements objects shall allow unique ID management when adding new requirements on different branches.
Options could be:
- UUID: no checking required, but not handy
- Manually assigned: collision checking required
- Centralized: when not affected by branching".
-
-
1.3. Requirement UID autocompletion DO178-14 StrictDoc shall provide autocompletion feature for requirement UID identifiers.
Note: Most immediate use case: adding/editing parent requirements.
-
10.3. Easy user experience SDOC-SSS-80 The Requirements Tool shall provide a smooth user experience.
NOTE: Documentation and requirements management are composite activities that consist of several types of repetitive tasks. A requirements tool user experience should assist in automating these tasks as far as possible and make the overall workflow efficient and precise.
StrictDoc's Document screen shall provide controls for automatic completion of requirements UIDs.
-
10.3. Easy user experience SDOC-SSS-80 The Requirements Tool shall provide a smooth user experience.
NOTE: Documentation and requirements management are composite activities that consist of several types of repetitive tasks. A requirements tool user experience should assist in automating these tasks as far as possible and make the overall workflow efficient and precise.
StrictDoc shall provide a "copy text to buffer" button for all requirement's text fields.
6.4. Screen: Table (TBL)
-
4.1. Excel-like viewing and editing of requirements SDOC-SSS-73 The Requirements Tool shall provide an Excel-like user interface for viewing and editing requirements.
NOTE: This interface does not have to be the only or a default interface.
StrictDoc's Table screen shall allow reading documents in a table-like manner.
6.5. Screen: Traceability (TR)
-
4.3. Traceability matrices SDOC-SSS-28 The Requirements Tool shall support generation of traceability matrices.
StrictDoc shall provide a single document-level traceability screen.
NOTE: This screen helps to read a document like a normal document while the traceability to this document's parent and child elements is visible at the same time.
6.6. Screen: Deep traceability (DTR)
-
2.5. Uncovered requirement report DO178-12 StrictDoc shall support generation of uncovered requirement report.
Note: An uncovered requirement is one that has no children.
StrictDoc shall provide a deep traceability screen.
6.7. Screen: HTML2PDF
-
1.6. PDF and HTML publishing DO178-5 StrictDoc shall support publication of documents to HTML and PDF formats.
-
6.1. PDF export SDOC-SSS-96 The Requirements Tool shall support exporting documentation content to PDF, both individual documents and complete documentation trees.
StrictDoc shall allow exporting documents and entire documentation trees to PDF.
When exporting multiple HTML documents from a same project tree into PDF, StrictDoc shall preserve all cross-document linking in the output PDF documents.
-
2.2. Use of PyPDF for PDF postprocessing SDOC-LLR-204 StrictDoc shall employ the PyPDF library for the following tasks:
- Rewriting all StrictDoc's LINK/ANCHOR to documents of the same project tree into the PDF anchors.
-
2.3. Cross-linking PDF documents from one project tree SDOC-LLR-205 When exporting HTML documents to PDF, StrictDoc shall rewrite all LINK/ANCHOR to documents of the same project tree into the PDF document links/anchors according to the following rule:
- The Chrome Driver resolves the relative links to other documents with full paths, e.g., file:///<full-path-to-another-SDoc-document>-PDF.html#<anchor>.
- The PDF postprocessing step shall convert these absolute file:///...` links to just relative paths: ``<relative-path-to-another-SDoc-document>.pdf without the leading slash character.
- If one PDF is in a nested folder compared to another PDF, the link to this PDF anchor shall have relative ../ path components.
StrictDoc shall support the customization of the PDF export template.
6.8. Screen: Project statistics
-
4.6. Progress report SDOC-SSS-49 The Requirements Tool shall allow generating a Progress Report document.
NOTE: A progress report document shall include at least the following Key Performance Indicators.
Project-level KPIs:
- Total number of requirements
- Total number of requirements without parent (excluding top-level and derived)
- Total number of TBD/TBC
- Total number of requirements without rationale
- Tags breakdown
Document-level KPIs: the same but per document.
-
2.5. Uncovered requirement report DO178-12 StrictDoc shall support generation of uncovered requirement report.
Note: An uncovered requirement is one that has no children.
-
4.5. Requirements coverage SDOC-SSS-29 The Requirements Tool shall provide means for getting information about the requirements coverage of a given project.
NOTE: The requirements coverage can be presented in a tabular form or visualized with a set of graphs.
StrictDoc shall provide a Project Statistics screen that displays the following project information:
- Project title
- Date of generation
- Git revision
- Total documents
- Total requirements
- Requirements status breakdown
- Total number of TBD/TBC found in documents.
-
4.6. Progress report SDOC-SSS-49 The Requirements Tool shall allow generating a Progress Report document.
NOTE: A progress report document shall include at least the following Key Performance Indicators.
Project-level KPIs:
- Total number of requirements
- Total number of requirements without parent (excluding top-level and derived)
- Total number of TBD/TBC
- Total number of requirements without rationale
- Tags breakdown
Document-level KPIs: the same but per document.
StrictDoc shall support customization of the project statistics screen, enabling users to define and display their own project-specific statistics.
6.9. Screen: Document tree map
-
4.5. Requirements coverage SDOC-SSS-29 The Requirements Tool shall provide means for getting information about the requirements coverage of a given project.
NOTE: The requirements coverage can be presented in a tabular form or visualized with a set of graphs.
StrictDoc shall provide a tree map screen, visualizing the following information:
- Document tree map
- Requirements coverage by source code
- Requirements coverage by test files.
6.10. Screen: Source coverage
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
-
1.10. Source file coverage DO178-13 StrictDoc shall support generation of source code coverage information.
StrictDoc shall generate project source code coverage information.
NOTE: Source code information can be visualized using both web or CLI interfaces.
6.11. Screen: Single source file coverage
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc shall generate single file traceability information.
6.12. Screen: Traceability matrix
-
4.3. Traceability matrices SDOC-SSS-28 The Requirements Tool shall support generation of traceability matrices.
-
2.3. Traceability matrices DO178-10 StrictDoc shall support generation of forward and backward traceability matrices.
-
2.5. Uncovered requirement report DO178-12 StrictDoc shall support generation of uncovered requirement report.
Note: An uncovered requirement is one that has no children.
StrictDoc shall provide a traceability matrix screen.
6.13. Screen: Project tree diff
-
2.6. Document versioning SDOC-SSS-75 The Requirements Tool shall provide capabilities for document versioning.
-
4.7. Change management SDOC-SSS-74 The Requirements Tool shall provide capabilities for change management:
- Visualizing changes between project tree versions.
- Visualizing changes between document versions.
- Visualizing the impact that a changed requirement has on a project tree.
-
2.2. Diff between document trees DO178-15 StrictDoc shall allow calculating Diff between two document trees.
Note: The primary use case is calculating a diff between two Git revisions.
StrictDoc shall provide a project tree diff screen.
6.14. Content search
-
2.8. Content search SDOC-SSS-95 The Requirements Tool shall provide functionality to search content in the documentation tree.
StrictDoc shall provide searching documentation content with queries via a search bar.
-
6.1. Static HTML search SDOC-SRS-156 The static HTML search is implemented using a custom JavaScript solution that consumes a search index JS file generated by the same StrictDoc Python pipeline that produces all other artifacts.
The following requirements are relevant in the StrictDoc context:
- The JS library must start up quickly, so search indexes need to be generated in advance. Since StrictDoc is based on Python, index generation must be done in Python rather than in JS/NPM.
- The Python code must generate indexes incrementally and allow caching, e.g., one index per document.
- The JS library must support matching search terms using OR by default and AND when the terms are enclosed in quotes, e.g., "foo bar".
- The JS library must support incremental and decremental search terms.
Several existing solutions, such as Lunr and FlexSearch, were considered, but none were found to support all of the above features.
Note
Incremental/decremental search means that a search index maintains the following additional terms for a word "foo" found in a document node with MID "abc":
- "foo" => "abc"
- "f" => "abc"
- "fo" => "abc"
- "o" => "abc"
- "oo" => "abc"
The current implementation builds per-document indexes immediately after parsing the SDoc documents from .sdoc files. The generated index is cached along with the overall document content, significantly speeding up tree generation once the document caches are available. StrictDoc generates a JSON file containing a search index { search term => node MID } as well as a map { MID => SDoc node }.
The corresponding JS file has access to the pre-built search indexes generated by Python. The JavaScript algorithms are simple but enable basic search functionality:
- Incremental/decremental search for terms using OR when multiple terms are provided without quotes, and AND when the terms are quoted. Currently, only one quoted search term is supported.
- The algorithm is reasonably fast and has been tested with documentation trees of up to 130+ documents with the largest documents reaching up to 1.5 megabytes.
7. Requirements-to-source traceability
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc shall support bi-directional linking requirements with source files.
7.2. Language-aware parsing of source code
StrictDoc shall support parsing the most commonly used formats and programming languages to the Abstract Syntax Tree (AST) level.
The format examples: C, C++, Python, Rust, Ada, Robot, Gherkin, etc.
StrictDoc shall support parsing the C and C++ source files which includes:
- Recognizing functions and their Doxygen comments.
- Recognizing function declarations and function definitions.
StrictDoc shall support parsing the Python source files which includes:
- Recognizing Python functions, including nested functions.
- Recognizing Python classes, including nested classes.
- Recognizing decorated functions.
StrictDoc shall support parsing the Rust source files.
-
3.1.1. Auto-scoped relation markers in Rust docs SDOC-LLR-164 If a StrictDoc relation marker is inside a Rust doc comment, the marker scope shall be set to exact the item the Rust language defines as target of the containing doc comment. The
@relation(scope=...)parameter shall therefore be optional and shall be ignored if provided.1 /// @relation(REQ-1) 2 impl Foo { 3 4 /// @relation(REQ-2) 5 fn foo() { 6 } 7 }
In the given example, the first marker shall link REQ-1 to the
impl Fooimplementation, highlighting lines 1 to 7. The second marker shall link REQ-2 to thefn foo()function, highlighting lines 4 to 6. -
3.1.2. Inner doc attributes SDOC-LLR-165 StrictDoc shall support relation markers in inner doc attribute s.
-
3.1.3. Inner line docs SDOC-LLR-166 StrictDoc shall support auto-scoped relation relation markers in inner line docs.
-
3.1.4. Inner block docs SDOC-LLR-167 StrictDoc shall support auto-scoped relation relation markers in inner block docs.
-
3.1.5. Outer doc attributes SDOC-LLR-168 StrictDoc shall support auto-scoped relation markers in outer doc attribute s.
-
3.1.6. Outer line docs SDOC-LLR-169 StrictDoc shall support auto-scoped relation markers in outer line docs.
-
3.1.7. Outer block docs SDOC-LLR-170 StrictDoc shall support auto-scoped relation markers in outer block docs.
-
3.1.8. File, line and range markers SDOC-LLR-171 StrictDoc shall point to lines and line ranges of Rust code by using file, line and range markers. These marker types shall be parsed from regular line and block comments.
Note: File markers may also result from the inner doc comments of the top-level module.
-
3.1.9. Source nodes from doc comments SDOC-LLR-172 If a Rust doc comments contains custom tags, and the containing Rust source file matches an entry in the source node configuration, StrictDoc shall create document nodes from the custom tags and automatically link the created node with the Rust item targeted by the doc comment.
-
3.1.10. Forward relations to Rust items SDOC-LLR-173 StrictDoc shall support linking from a requirement in SDoc to a language item in Rust code by using a
FILErelation of typeFUNCTION. For example[REQUIREMENT] UID: REQ-1 RELATIONS: - TYPE: File VALUE: file.rs FUNCTION: file::foo
This shall work for all kinds of Rust items that have a canonical path, including const, enum, fn, mod, static, struct, trait, type, union.
-
3.1.11. Forward relation by canonical path SDOC-LLR-174 The identifier for forward relations shall be the canonical path as the rustc compiler would set it when invoked for a single file like
rustc --crate-type rlib --emit=obj src/lib.rs
Note:
cargo buildusually result in a different canonical path, since it considers the file position relative to the crate root. Using a single file as root is a simplification, needed because StrictDoc is unaware of the Rust file and directory-based module hierarchy. -
3.1.12. Collapse doc comments SDOC-LLR-175 Multiple scattered doc comments shall be collapsed as done by the rustdoc tool when using the collapse-docs option to determine the highlight range(s).
For example, rustdoc would collapse alle these comments into the description of
fn foo()1 /// Some 2 /// line 3 4 /// doc, 5 6 /** 7 * and some 8 * block dock, 9 */ 10 11 #[doc = "and some"] 12 13 #[doc = "doc attr."] 14 15 fn foo() { 16 }
In the given example, the StrictDoc highlight range for the relation marker shall be from line 1 to line 16.
-
3.1.13. Rust marker descriptions SDOC-LLR-176 StrictDoc should use the marker labels as rustdoc would set them in the description of a documented node.
-
3.1.14. Valid positions of doc comments SDOC-LLR-177 StrictDoc shall find doc comments where the language allows them and ignore those in other positions.
-
3.1.15. Inner doc comments for functions SDOC-LLR-178 StrictDoc shall find inner doc comments in function blocks.
-
3.1.16. Inner doc comments for modules SDOC-LLR-179 StrictDoc shall find inner doc comments in module blocks.
-
3.1.17. Inner doc comments for external blocks SDOC-LLR-180 StrictDoc shall find inner doc comments in external blocks.
-
3.1.18. Inner doc comments for implementation blocks SDOC-LLR-181 StrictDoc shall find inner doc comments in implementation blocks.
-
3.1.19. Allowed position for outer docs SDOC-LLR-182 StrictDoc shall find outer doc comments in allowed positions as specified by the Rust language:
- All item declarations
- Most statements
- Block expressions, but only when they are the outer expression of an expression statement or the final expression of another block expression.
- Enum variants, struct and union fields
- Generic lifetime or type parameter
- Expressions in limited situations
- Function, closure and function pointer parameters
StrictDoc shall support parsing the Robot framework test files.
StrictDoc shall support bi-directional linking between requirements, test files, and test reports.
StrictDoc shall support linking between requirements, source files, and code coverage information.
7.5. Forward linking from requirements to source code
StrictDoc shall support forward linking from SDoc nodes to source files.
7.6. Source code markup – Relations
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc shall support annotating source code with links that reference the requirements.
-
3.1.1. Auto-scoped relation markers in Rust docs SDOC-LLR-164 If a StrictDoc relation marker is inside a Rust doc comment, the marker scope shall be set to exact the item the Rust language defines as target of the containing doc comment. The
@relation(scope=...)parameter shall therefore be optional and shall be ignored if provided.1 /// @relation(REQ-1) 2 impl Foo { 3 4 /// @relation(REQ-2) 5 fn foo() { 6 } 7 }
In the given example, the first marker shall link REQ-1 to the
impl Fooimplementation, highlighting lines 1 to 7. The second marker shall link REQ-2 to thefn foo()function, highlighting lines 4 to 6.
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc's shall support line markers that can be attached to single source code lines.
NOTE: A single-line marker points to a single line in a source file.
-
3.1.8. File, line and range markers SDOC-LLR-171 StrictDoc shall point to lines and line ranges of Rust code by using file, line and range markers. These marker types shall be parsed from regular line and block comments.
Note: File markers may also result from the inner doc comments of the top-level module.
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc shall support relation markers that can be attached to individual source code elements. StrictDoc shall support an optional scope attribute to disambiguate the target element where StrictDoc can't infer it solely from the marker position.
Note: The most basic example of such traceable elements are functions and classes, but generally supported elements and available scope attributes depend on the programming language.
-
1.16. Support for file relations SDOC-LLR-212 StrictDoc shall support multiple file relation entries in the Relations list of a markdown file.
Example of a language element reference:
**Relations**: - **Type**: `File` \ **Path**: `file.py` \ **Element**: `Function` \ **ID**: `hello_world` \ **Hash**: `5c2e9a1b7d4f8c3a6e0b2d1f9a7c5e3b8d6f1a4c2e9b7d0f3a5c8e1b6d2f4a9`
Example of a line range reference (see 🔗 7.6.5. Range marker):
**Relations**: - **Type**: `File` \ **Path**: `foo.c` \ **Lines**: `10, 20`
Each file relation shall support the following keys-value pairs:
- Type (mandatory)
Filemarks a relation as file relation - Path (mandatory) tells the file name.
- Hash (optional) value covers the referenced source code part for drift detection.
If no further key-value pairs are given, StrictDoc shall create a file marker (see 🔗 7.6.4. File marker).
If the user provided additional mutually exclusive keys-value sets, StrictDoc shall refine the file relation. It shall create a language element reference (see 🔗 7.6.3. Language element marker) if following fields are provided:
- Element (optional within language element kv-set) disambiguate the namespace where if a programming language
has separate namespaces per item category. For example,
Element: Functionselectsvoid foo()instead ofstruct fooin C. - ID (mandatory for language element kv-set) is the name of an item in language-specific notation. The used notation should stem from a given programming language's standard or specification.
It shall create a range marker (see 🔗 7.6.5. Range marker) if the following field is provided:
- Lines (mandatory for line kv-set) specifies the referenced line range as a start and end line number
separated by a comma and a space (e.g.,
10, 20).
If the language element kv-set and the line kv-set are both provided in a single file relation entry, StrictDoc shall raise a StrictDocSemanticError.
Back-ticks for values shall be optional. They can be used to protect special characters in the value that would otherwise be interpreted by a native markdown reader. If given, they shall not count to the parsed string.
If mandatory keys are missing or unknown keys are provided, StrictDoc shall raise a StrictDocSemanticError.
On export, all file relation key-value pairs including Line Range shall be written to Markdown output.
- Type (mandatory)
-
3.1.1. Auto-scoped relation markers in Rust docs SDOC-LLR-164 If a StrictDoc relation marker is inside a Rust doc comment, the marker scope shall be set to exact the item the Rust language defines as target of the containing doc comment. The
@relation(scope=...)parameter shall therefore be optional and shall be ignored if provided.1 /// @relation(REQ-1) 2 impl Foo { 3 4 /// @relation(REQ-2) 5 fn foo() { 6 } 7 }
In the given example, the first marker shall link REQ-1 to the
impl Fooimplementation, highlighting lines 1 to 7. The second marker shall link REQ-2 to thefn foo()function, highlighting lines 4 to 6.
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc's shall support file markers that can be attached to entire source files.
-
1.16. Support for file relations SDOC-LLR-212 StrictDoc shall support multiple file relation entries in the Relations list of a markdown file.
Example of a language element reference:
**Relations**: - **Type**: `File` \ **Path**: `file.py` \ **Element**: `Function` \ **ID**: `hello_world` \ **Hash**: `5c2e9a1b7d4f8c3a6e0b2d1f9a7c5e3b8d6f1a4c2e9b7d0f3a5c8e1b6d2f4a9`
Example of a line range reference (see 🔗 7.6.5. Range marker):
**Relations**: - **Type**: `File` \ **Path**: `foo.c` \ **Lines**: `10, 20`
Each file relation shall support the following keys-value pairs:
- Type (mandatory)
Filemarks a relation as file relation - Path (mandatory) tells the file name.
- Hash (optional) value covers the referenced source code part for drift detection.
If no further key-value pairs are given, StrictDoc shall create a file marker (see 🔗 7.6.4. File marker).
If the user provided additional mutually exclusive keys-value sets, StrictDoc shall refine the file relation. It shall create a language element reference (see 🔗 7.6.3. Language element marker) if following fields are provided:
- Element (optional within language element kv-set) disambiguate the namespace where if a programming language
has separate namespaces per item category. For example,
Element: Functionselectsvoid foo()instead ofstruct fooin C. - ID (mandatory for language element kv-set) is the name of an item in language-specific notation. The used notation should stem from a given programming language's standard or specification.
It shall create a range marker (see 🔗 7.6.5. Range marker) if the following field is provided:
- Lines (mandatory for line kv-set) specifies the referenced line range as a start and end line number
separated by a comma and a space (e.g.,
10, 20).
If the language element kv-set and the line kv-set are both provided in a single file relation entry, StrictDoc shall raise a StrictDocSemanticError.
Back-ticks for values shall be optional. They can be used to protect special characters in the value that would otherwise be interpreted by a native markdown reader. If given, they shall not count to the parsed string.
If mandatory keys are missing or unknown keys are provided, StrictDoc shall raise a StrictDocSemanticError.
On export, all file relation key-value pairs including Line Range shall be written to Markdown output.
- Type (mandatory)
-
3.1.8. File, line and range markers SDOC-LLR-171 StrictDoc shall point to lines and line ranges of Rust code by using file, line and range markers. These marker types shall be parsed from regular line and block comments.
Note: File markers may also result from the inner doc comments of the top-level module.
-
5.1. Traceability between requirements and source code SDOC-SSS-72 The Requirements Tool shall support bi-directional tracing between requirements content and implementation source code with only minimal changes needed in the source code.
NOTE: The Requirements Tool does not necessarily have to implement the complete tracing process. It may delegate parts of the traceability task to other tools, e.g., Doxygen, Lobster, etc.
-
11. Requirements to source code traceability ZEP-11 Linking from requirements objects to code or from code to requirements objects via ID shall be supported.
-
12. Non-intrusive links in source code ZEP-12 Linking from code to requirements objects via ID shall be least code intrusive.
-
StrictDoc shall support relation markers that can be attached to source code ranges.
NOTE: Compared to other marker types, to indicate a range, two markers are needed: one to start a range and one to end a range.
-
1.16. Support for file relations SDOC-LLR-212 StrictDoc shall support multiple file relation entries in the Relations list of a markdown file.
Example of a language element reference:
**Relations**: - **Type**: `File` \ **Path**: `file.py` \ **Element**: `Function` \ **ID**: `hello_world` \ **Hash**: `5c2e9a1b7d4f8c3a6e0b2d1f9a7c5e3b8d6f1a4c2e9b7d0f3a5c8e1b6d2f4a9`
Example of a line range reference (see 🔗 7.6.5. Range marker):
**Relations**: - **Type**: `File` \ **Path**: `foo.c` \ **Lines**: `10, 20`
Each file relation shall support the following keys-value pairs:
- Type (mandatory)
Filemarks a relation as file relation - Path (mandatory) tells the file name.
- Hash (optional) value covers the referenced source code part for drift detection.
If no further key-value pairs are given, StrictDoc shall create a file marker (see 🔗 7.6.4. File marker).
If the user provided additional mutually exclusive keys-value sets, StrictDoc shall refine the file relation. It shall create a language element reference (see 🔗 7.6.3. Language element marker) if following fields are provided:
- Element (optional within language element kv-set) disambiguate the namespace where if a programming language
has separate namespaces per item category. For example,
Element: Functionselectsvoid foo()instead ofstruct fooin C. - ID (mandatory for language element kv-set) is the name of an item in language-specific notation. The used notation should stem from a given programming language's standard or specification.
It shall create a range marker (see 🔗 7.6.5. Range marker) if the following field is provided:
- Lines (mandatory for line kv-set) specifies the referenced line range as a start and end line number
separated by a comma and a space (e.g.,
10, 20).
If the language element kv-set and the line kv-set are both provided in a single file relation entry, StrictDoc shall raise a StrictDocSemanticError.
Back-ticks for values shall be optional. They can be used to protect special characters in the value that would otherwise be interpreted by a native markdown reader. If given, they shall not count to the parsed string.
If mandatory keys are missing or unknown keys are provided, StrictDoc shall raise a StrictDocSemanticError.
On export, all file relation key-value pairs including Line Range shall be written to Markdown output.
- Type (mandatory)
-
3.1.8. File, line and range markers SDOC-LLR-171 StrictDoc shall point to lines and line ranges of Rust code by using file, line and range markers. These marker types shall be parsed from regular line and block comments.
Note: File markers may also result from the inner doc comments of the top-level module.
7.7. Source code markup – Nodes
StrictDoc shall support parsing nodes from source code.
-
3.1.9. Source nodes from doc comments SDOC-LLR-172 If a Rust doc comments contains custom tags, and the containing Rust source file matches an entry in the source node configuration, StrictDoc shall create document nodes from the custom tags and automatically link the created node with the Rust item targeted by the doc comment.
8. Export/import formats
8.1. RST
-
1.6. PDF and HTML publishing DO178-5 StrictDoc shall support publication of documents to HTML and PDF formats.
-
2.6. Interoperability with Sphinx DO178-16 StrictDoc shall support interoperability with Sphinx:
- StrictDoc shall read RST fragments with Sphinx directives without errors.
- StrictDoc shall render Sphinx plugins natively.
StrictDoc shall allow exporting SDoc content to the RST format.
-
1.6. PDF and HTML publishing DO178-5 StrictDoc shall support publication of documents to HTML and PDF formats.
-
2.6. Interoperability with Sphinx DO178-16 StrictDoc shall support interoperability with Sphinx:
- StrictDoc shall read RST fragments with Sphinx directives without errors.
- StrictDoc shall render Sphinx plugins natively.
StrictDoc shall generate RST markup to HTML using Docutils.
8.2. ReqIF
-
6.2. ReqIF export/import SDOC-SSS-58 The Requirements Tool shall support exporting/importing requirements content from/to ReqIF format.
-
6. ReqIF export ZEP-6 Requirements specification shall be exportable to ReqIF.
-
StrictDoc shall support exporting/importing requirements content from/to ReqIF format.
-
11.8. Long-term maintainability of a tool SDOC-SSS-90 The Requirements Tool shall be designed for long-term maintenance.
NOTE: Long-term maintenance aspects to consider:
- Careful selection of the technologies used, e.g., avoid building on too many unrelated technologies at the same time.
- Take into account the existing experience of the development team. Consider the availability of qualified developers in the future.
- Take into account maintainability by the development team as well as the users, e.g., IT/DevOps department.
StrictDoc shall maintain the core ReqIF implementation as a separate software component.
8.3. Excel and CSV
-
6.4. Excel export/import SDOC-SSS-60 The Requirements Tool shall support exporting/importing requirements content from/to Excel.
StrictDoc shall allow exporting SDoc documents to Excel, one Excel sheet per document.
-
6.4. Excel export/import SDOC-SSS-60 The Requirements Tool shall support exporting/importing requirements content from/to Excel.
StrictDoc shall allow importing Excel documents to SDoc documents, one Excel sheet per document.
-
6.4. Excel export/import SDOC-SSS-60 The Requirements Tool shall support exporting/importing requirements content from/to Excel.
StrictDoc Excel export shall allow exporting SDoc documents to Excel with only selected fields.
9. Command-line interface
9.1. General CLI requirements
-
11.3. Command-line interface SDOC-SSS-32 The Requirements Tool shall provide a command line interface (CLI).
StrictDoc shall provide a command-line interface.
9.2. Command: Manage
9.2.1. Command: Auto UID
-
3.7. Auto-provision of Requirement UIDs SDOC-SSS-6 The Requirements Tool shall provide controls for automatic generation of requirements UIDs.
-
8. Unique ID management ZEP-8 Requirements objects shall allow unique ID management when adding new requirements on different branches.
Options could be:
- UUID: no checking required, but not handy
- Manually assigned: collision checking required
- Centralized: when not affected by branching".
-
StrictDoc shall allow automatic generation of requirements UIDs.
10. Python API
-
10.1. General usability SDOC-SSS-79 The Requirements Tool shall be accessible to a broad spectrum of users.
NOTE: Factors to consider:
- The cost of a tool.
- The easy of installation.
- The availability of a graphical user interface.
- The availability of a programmatic access to the functions of a tool.
- The interoperability of the tool with other tools.
-
10.9. Programming access via API (SDK) SDOC-SSS-86 The Requirements Tool shall provide a Software Development Kit (SDK) that allows customization of the Requirements Tool functions.
NOTE: An SDK provides access to the API of the Requirements Tool. Examples of functions that may be used by the users of the tool:
- Custom import/export functions to/from various requirements/documentation formats.
- Implement custom visualization functions.
- Implement integration with other tools.
-
10.10. Programmatic access to requirements data SDOC-SSS-87 The Requirements Tool shall provide programmatic access to requirements data.
StrictDoc shall provide a Python API for its core functions:
- Reading SDoc files
- Creating traceability graph
- Generating HTML exports
- Converting SDoc to other formats.
11. Web server
-
10.6. Server-based deployments (IT-friendly setup) SDOC-SSS-83 The Requirements Tool shall be deployable to the network of computers, e.g., provide a server instance.
StrictDoc shall provide a web server.
12. User experience
-
10.2. Tool identification SDOC-SSS-97 The Requirements Tool shall provide identifying information, including title, release version, and project website links.
StrictDoc shall provide 'about' and 'version' commands that display the project's title, current version, license, and links to the project's web pages.
12.2. Strict mode by default
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's default mode of operation shall treat all warnings as errors.
13. Configurability
-
7.1. Project-level configuration SDOC-SSS-92 The Requirements Tool shall provide a solution for configuring the project-level options.
NOTE: Examples of project-level options:
- Project title.
- Global settings for the Requirements Tool itself.
StrictDoc shall support a configuration of project-level options through a TOML file named strictdoc.toml.
-
7.1. Project-level configuration SDOC-SSS-92 The Requirements Tool shall provide a solution for configuring the project-level options.
NOTE: Examples of project-level options:
- Project title.
- Global settings for the Requirements Tool itself.
StrictDoc shall allow a user to select a subset of StrictDoc's available features by listing them in the strictdoc.toml file.
-
1.8. Configuration: 'Host' parameter DO178-8 StrictDoc shall provide an option to configure a host where a server is deployed.
StrictDoc shall support configuring a host/port on which the StrictDoc web server is run.
14. Performance
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
StrictDoc shall support process-based parallelization for time-critical tasks.
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
StrictDoc shall implement caching of parsed SDoc documents.
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
StrictDoc shall support incremental generation of documents.
NOTE: "Incremental" means that only the modified documents are regenerated when StrictDoc is run repeatedly against the same project tree.
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
StrictDoc shall cache the RST fragments rendered to HTML.
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
StrictDoc's web interface shall generate the HTML content only when it is directly requested by a user.
-
8.1. Support large requirements sets SDOC-SSS-13 The Requirements Tool shall support requirement trees with at least 10000 requirements.
-
8.2. Support large project trees SDOC-SSS-14 The Requirements Tool shall be able to handle documentation packages of at least 100 documents without significant performance degradation.
StrictDoc shall support a precompilation of HTML templates.
15. Development process requirements
15.1. General process
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
All critical issues reported in relation to StrictDoc shall be addressed with utmost priority.
15.2. Requirements engineering
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
-
14.1. Requirements engineering SDOC-SSS-76 The Requirements Tool's development process shall include the Requirements Tool's own requirements engineering.
StrictDoc's development shall be requirements-based.
-
14.2. Self-hosted requirements SDOC-SSS-50 The Requirements Tool's requirements shall be developed and stored using the Requirements Tool itself.
-
15. Tool Qualifiability ZEP-15 The Requirement Tool shall be qualifiable for use in safety-related and/or security-related development. At the very least, the Requirement Tool shall come with its own set of requirements, which shall be amenable to validation in compliance with the relevant standards.
-
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's requirements shall be written using StrictDoc.
15.3. Implementation requirements
15.3.1. Programming languages
-
11.7. Conservative languages for implementation SDOC-SSS-69 The Requirements Tool shall be implemented using the popular programming languages.
NOTE: Examples of the most popular programming languages:
- Java
- C++
- Python
- JavaScript
StrictDoc shall be written in Python.
15.3.2. Cross-platform availability
-
11.6. Support major operating systems SDOC-SSS-67 The Requirements Tool shall support at least the following operating systems:
- Linux
- Windows
- macOS.
StrictDoc shall support the Linux operating systems.
-
11.6. Support major operating systems SDOC-SSS-67 The Requirements Tool shall support at least the following operating systems:
- Linux
- Windows
- macOS.
StrictDoc shall support the macOS operating system.
-
11.6. Support major operating systems SDOC-SSS-67 The Requirements Tool shall support at least the following operating systems:
- Linux
- Windows
- macOS.
StrictDoc shall support the Windows operating system.
15.4. Implementation constraints
-
1.9. No use of proprietary technology DO178-7 StrictDoc shall not use any proprietary tools.
-
15.2. Only open source dependencies SDOC-SSS-39 The Requirement Tool's source code shall be based on open source software components.
StrictDoc shall be built using only open source software components.
-
11.8. Long-term maintainability of a tool SDOC-SSS-90 The Requirements Tool shall be designed for long-term maintenance.
NOTE: Long-term maintenance aspects to consider:
- Careful selection of the technologies used, e.g., avoid building on too many unrelated technologies at the same time.
- Take into account the existing experience of the development team. Consider the availability of qualified developers in the future.
- Take into account maintainability by the development team as well as the users, e.g., IT/DevOps department.
StrictDoc shall avoid using large and demanding UI frameworks.
NOTE: An example of frameworks that require a very specific architecture: React JS, AngularJS.
-
11.8. Long-term maintainability of a tool SDOC-SSS-90 The Requirements Tool shall be designed for long-term maintenance.
NOTE: Long-term maintenance aspects to consider:
- Careful selection of the technologies used, e.g., avoid building on too many unrelated technologies at the same time.
- Take into account the existing experience of the development team. Consider the availability of qualified developers in the future.
- Take into account maintainability by the development team as well as the users, e.g., IT/DevOps department.
StrictDoc shall avoid extending its infrastructure with anything based on NPM-ecosystem.
-
11.8. Long-term maintainability of a tool SDOC-SSS-90 The Requirements Tool shall be designed for long-term maintenance.
NOTE: Long-term maintenance aspects to consider:
- Careful selection of the technologies used, e.g., avoid building on too many unrelated technologies at the same time.
- Take into account the existing experience of the development team. Consider the availability of qualified developers in the future.
- Take into account maintainability by the development team as well as the users, e.g., IT/DevOps department.
StrictDoc shall avoid using JavaScript-based programming languages.
-
10.5. Individual use (home PC) SDOC-SSS-82 The Requirements Tool shall be usable on the normal personal computers, e.g., do not require a special cloud deployment.
StrictDoc shall avoid using microservices and microservice-based architectures.
-
10.5. Individual use (home PC) SDOC-SSS-82 The Requirements Tool shall be usable on the normal personal computers, e.g., do not require a special cloud deployment.
StrictDoc shall avoid using containers and containerization technologies.
15.5. Coding constraints
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's development shall ensure a use of assertions throughout the project codebase.
NOTE: At a minimum, the function input parameters must be checked for validity.
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's development shall ensure a use of type annotations throughout the project's Python codebase.
15.6. Linting
-
11.8. Long-term maintainability of a tool SDOC-SSS-90 The Requirements Tool shall be designed for long-term maintenance.
NOTE: Long-term maintenance aspects to consider:
- Careful selection of the technologies used, e.g., avoid building on too many unrelated technologies at the same time.
- Take into account the existing experience of the development team. Consider the availability of qualified developers in the future.
- Take into account maintainability by the development team as well as the users, e.g., IT/DevOps department.
StrictDoc's development shall ensure that the project's codebase is compliant with the Python community's modern practices.
15.7. Static analysis
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's development shall include a continuous type checking of StrictDoc's codebase.
15.8. Testing
-
14.3. Test coverage SDOC-SSS-77 The Requirements Tool's development process shall ensure:
- A testability of the tool.
- The highest possible coverage of the tool's code by test.
- Usage of modern testing methods to ensure adequate coverage of the tool's functions (e.g., command-line interface, web interface, smallest units of code, etc.).
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's development shall provide unit testing of its codebase.
-
14.3. Test coverage SDOC-SSS-77 The Requirements Tool's development process shall ensure:
- A testability of the tool.
- The highest possible coverage of the tool's code by test.
- Usage of modern testing methods to ensure adequate coverage of the tool's functions (e.g., command-line interface, web interface, smallest units of code, etc.).
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's development shall provide complete black-box integration testing of its command-line interface.
-
14.3. Test coverage SDOC-SSS-77 The Requirements Tool's development process shall ensure:
- A testability of the tool.
- The highest possible coverage of the tool's code by test.
- Usage of modern testing methods to ensure adequate coverage of the tool's functions (e.g., command-line interface, web interface, smallest units of code, etc.).
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
StrictDoc's development shall provide complete end-to-end testing of the web interface.
-
14.3. Test coverage SDOC-SSS-77 The Requirements Tool's development process shall ensure:
- A testability of the tool.
- The highest possible coverage of the tool's code by test.
- Usage of modern testing methods to ensure adequate coverage of the tool's functions (e.g., command-line interface, web interface, smallest units of code, etc.).
-
14.4. Tool qualification SDOC-SSS-78 The Requirements Tool's development process shall ensure that the tool can be qualified for the use in critical product developments as required by the rigorous technical standards (e.g., EN IEC 61508).
Every update to the StrictDoc codebase shall be complemented with a corresponding provision of at least one test as follows:
- For web interface: at least one end-to-end test.
- For command-line interface: at least one black-box integration test.
- For internal Python functions: at least one unit test.
NOTE: This requirement implies that no modifications to StrictDoc's functionality can be merged unless accompanied by at least one test.
16. Code hosting and distribution
16.1. Code hosting
-
15.1. Open source SDOC-SSS-38 The Requirements Tool's source code shall be publicly available, e.g., hosted on a code hosting platform such as GitHub or GitLab.
-
10.5. Individual use (home PC) SDOC-SSS-82 The Requirements Tool shall be usable on the normal personal computers, e.g., do not require a special cloud deployment.
StrictDoc's source code shall be hosted on GitHub.
-
15.3. Free SDOC-SSS-40 The Requirements Tool shall be licensed under a permissive license, ensuring no/minimal constraints on the utilization and dissemination of the project.
NOTE: Example of a permissive license: MIT, Apache 2.
All StrictDoc software shall be licensed under the Apache 2 license.