Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Advanced Topics

This chapter covers advanced features and techniques for requirements management with Requiem.

Overview

Advanced topics include:

Current Capabilities

Requiem currently provides core functionality:

  • Plain-text requirements in Markdown
  • Human-readable IDs with namespace support
  • Parent-child relationships with multiple parents
  • Content fingerprinting for change detection
  • Fast parallel loading
  • Integration with MdBook and Sphinx

Planned Capabilities

Future releases will add:

  • Coverage reports: Analyze requirement traceability
  • Cycle detection: Find and report circular dependencies
  • Review workflows: Automated review triggering
  • Import/export: ReqIF, JSON, CSV formats
  • Validation rules: Custom requirement quality checks
  • Query language: Advanced filtering and searching

Contributing

These features are planned but not yet implemented. Interested in contributing? See the GitHub repository for:

  • Feature roadmap
  • Open issues
  • Contribution guidelines
  • Development setup

Workarounds

Until advanced features are implemented, consider these approaches:

Manual Coverage Analysis

Use scripts to analyze traceability:

#!/bin/bash
# Find USR requirements without SYS children

comm -23 \
  <(ls USR-*.md | sed 's/.md//' | sort) \
  <(grep -oh "USR-[0-9]*" SYS-*.md | sort -u)

Manual Cycle Detection

Trace requirement chains manually:

# Follow parent chain
grep "uuid:" USR-001.md  # Get UUID
grep "<uuid>" *.md        # Find children
# Repeat for each child

Export with Scripts

Generate reports in various formats:

import glob
import yaml
import re
import json

requirements = []
for path in glob.glob("*.md"):
    with open(path) as f:
        content = f.read()
    # Parse frontmatter and body
    # Add to requirements list

# Export as JSON
with open("requirements.json", "w") as f:
    json.dump(requirements, f, indent=2)

Next Steps

Explore planned features: