rst is a requirements tracking tool made for developers. It is an acronym for "Requirements, Specifications and Tests".
rst is pronounced like "wrist"
Once installed run rst -h
on the cmdline to view the help message. rst tutorial
will start the interactive tutorial.
Requirements and design documentation are probably the most important components of writing quality software. Without them it can be very difficult to develop and maintain the product you were aiming to create. However, there are no open source tools (or proprietary tools for that matter) that make this process simple, easy and fun. rst aims to do that by giving you a:
It is hard to keep documentation up to date, especially when it doesn't aid the core developer in tracking their progress. rst aims to bridge that gap, giving you a simple tool that you can use to track your project completeness and test coverage.
If you like or use rst please star:star: it on github and mention it to friends and colleagues. It is my belief that requirements tracking needs to be as second nature as revision control and unit testing has become. I hope that by building better software we can all make the world just a little bit better.
If you find bugs or have any suggestions, please open an issue here: bug tracker
rst is still in Beta and is not 100% feature complete. The API for the cmdline and text format is expected to be stable, but the author reserves the right to change anything that needs to be changed if it improves usability.
Future improvements include: - Additional command line tools - export: export artifacts to json, csv, html and other formats - Test Tracking: REST API with DB backend for tracking test execution plus cmdline utility and webui for viewing test execution. (rst currently only supports tracking implementaiton, not execution) - Web UI frontend to make it easy for non-devs to view requirements
The are currently two options: download a release from the release page or install via rust's package manager, cargo.
Note: windows is not tested. If you try it, whether it works or not, please open an issue to let me know!
If you have rust and cargo installed (recommendation: install them with
rustup), simply execute:
cargo install rst_app
and follow any directions it tells you to.
Note: this library was renamed to rst_app to not conflict with a future ReStructredText library. See #6
For a full tutorial, install rst and run
rst tutorial
If I was writing a "hello world" program in python and wanted to track requirements, this would be the process.
mkdir
and cd
to an empty folderrst init
vim reqs/design.toml
and write my requirements and design
```
[REQ-purpose] text = ''' we need to be able to say hello to both the world and aliens '''
[REQ-world] partof = "REQ-purpose" text = ''' there shall be way to say hello to the world. All of it. '''
[SPC-world] text = ''' The hello-world function shall say hello by printing it on the cmdline '''
[TST-world] text = ''' To make this testable, there will be an intermediary function that can test it before printing. '''
[REQ-aliens] partof = "REQ-purpose" text = ''' there shall also be a way to say hello to aliens, but that will be harder '''
[SPC-aliens]
text = '''
I think we should use SETI or something
'''
Okay, now that we've written our requirements and design, let's start coding!
- `mkdir src`
- `vim src/hello.py` and write my program
def helloworld(): ''' an intermediary function to allow for testing ''' return "hello world!"
def testgreeting(): ''' test that the greeting works as expected partof: #TST-world ''' assert _helloworld() == "hello world!"
def helloworld(): ''' say hello to the world partof: #SPC-world ''' print _helloworld()
if name == 'main':
testgreeting()
helloworld()
``
-
python2 src/hello.py: it says hello world! That is good design :)
-
vim ~/.rst/settings.tomland add
"{repo}/src"to
code_paths
-
rst ls` to show this lovely status report
rst check
to validate that there are no errorsAs you can see, we've finished our specs and tests for saying hello to the world, but not to the aliens. If the aliens arrived, it would be nice to know whether you can say hello -- rst can help you do that!
Here is a snapshot (0.1.0) of items yet to be started:
$ rst ls -c '<' -T
If you want to see items that have been mostly complete but have not been tested,
clone this repo and run:
rst ls -c '>50' -t '<99' -T