Reqtraq is an open source go tool for requirement management, as mandated by DO-178C. Reqtraq is designed to stay out of your way. It requires no user interaction for day-to-day tasks. Instead, it parses documents that are required in the certification process and extracts everything it needs from there.
Reqtraq has 3 main components:
-
Precommit hook makes sure the documents have the correct structure and linking:
- Files correctly named
- Requirements correctly formatted and continuous
- References exist, Parent requirements exist and not DELETED
- Required attributes are there and correctly formatted
-
Prepush hook exports tasks to desired task management tool (currently supports Phabricator; JIRA and others need to be added)
-
Standalone binary
- Report generation with filtering
- Phabricator export
- Web tool for easy inspection
$ go get github.com/daedaleanai/reqtraq
$ export PATH=$PATH:$GOPATH/bin
Reqtraq is tightly integrated with Git. See the certification documents in the certdocs
directory for some good examples.
Reqtraq uses the Git history to figure out the Git commits associated with a requirement and the Phabricator API to assess the completion status of each requirement.
$ reqtraq nextid certdocs/0-DDLN-212-SDD.md
REQ-0-DDLN-SWL-019
$ reqtraq list certdocs/0-DDLN-100-ORD.md
Requirement REQ-0-DDLN-SYS-001 Bidirectional tracing.
...
In report tags such as 'Changelists' and 'Problem Reports' will not work if not integrated with a task manager such as Phrabricator etc. (currently supported for Phabricator; JIRA and others need to be added)
$ reqtraq reportdown
2017/06/06 22:48:12 Creating ./req-down.html (this may take a while)...
...
Filtering:
$ reqtraq reportdown --id_filter=".*0-DDLN-SYS.*"
2017/06/06 22:51:23 Creating ./req-down.html (this may take a while)...
2017/06/06 22:51:41 Creating ./req-down-filtered.html (this may take a while)...
$ reqtraq web :8080
Server started on http://localhost:8080
$ reqtraq help
Shows general help and a list of commands
$ reqtraq help <command>
Displays help on a specific command.