trlc icon indicating copy to clipboard operation
trlc copied to clipboard

Treat Requirements Like Code

Treat Requirements Like Code (TRLC)

TRLC is a domain-specific language developed at BMW for writing (and linking) requirements with meta-data.

The repository contains:

  • The language reference manual for TRLC. Previous versions are also available.

  • A pure Python reference implementation of TRLC.

The implementation is not very fast, but designed to be pedantically correct in following the language definition. The tools also include a powerful static analysis tool to find issues with types and user-defined check rules.

The Python implementation can be used for several purposes:

  • It can be used to validate other TRLC implementations.

  • It can be used to validate a body of requirements (e.g. a CI check that all requirements are well formed)

  • The API can be used to write other tools based on TRLC (for example a tool to render the requirements in HTML, a tool to diff requirements or perform an impact analysis, or a tool to perform software traceability, etc.)

Documentation

For normal users

  • Tutorial (read this as a first introduction)
  • User manual: TRLC linter (the user manual for the TRLC static analysis and linter)
  • Release Notes (read this to find out whats new)
  • License

For advanced users

For TRLC developers

Dependencies

Run-time

  • 3.8 <= Python3 <= 3.11
  • PyVCG

Optional dependencies (they are not installed automatically):

  • PyPI CVC5 (Linux or OSX only, required when using the --verify option)
  • Binary CVC5 (An alternative to PyPI CVC5, make sure to rename the binary to cvc5 and put it on your PATH).