reqT - Requirements Engineering Tool

Download

Latest version: 4.6.3   All versions:   reqT   reqT-lang

Latest reqT.jar from: tinyurl.com/get-reqT

curl -L https://tinyurl.com/get-reqT -o reqT.jar

What is reqT?

reqT is a flexible and scalable open source requirements engineering tool for software developers and learners, available as a desktop application and a Scala library.

With reqT you can specify requirements using a simple requirements modelling language called reqT-lang with essential requirements engineering concepts, giving structure to natural language requirements, while enabling analysis, visualization and automation.

Visit the Quickref to explore requirements engineering concepts in reqT-lang.

The reqT-lang syntax is a small subset of Markdown using bullet lists with indentation and special keywords, to express textual requirements models by connecting entities via relations to attributes, as in this example:

* Feature: helloWorld has 
  * Spec: Print a nice greeting.
  * Why: First step to get started.

Maintainer of reqT: Prof. Björn Regnell. reqT is used at Lund University in this course.

Why reqT?

With reqT you can…

  1. Model, analyse, visualize and prioritize requirements.
  2. Manage requirements in issues and git using simple markdown syntax.
  3. Combine natural language with formal structure.
  4. Flexibly mix abstraction levels and modelling approaches.
  5. Integrate requirements and test specification.
  6. Export, import and visualize requirements via open formats.
  7. Manipulate models with expressive, safe and convenient Scala programs.
  8. Allocate requirements to releases with constraint solving.
  9. Express prompts for spec-driven development with generative AI .

… using a simple markdown-based language in an open source tool and library.

Getting started

Using the reqT desktop app

Using reqT with Scala

scala> val m = "* Feature: helloWorld has Spec: print greeting".toModel
val m: reqt.Model = 
  Model(Rel(Ent(Feature,helloWorld),Has,
    Model(StrAttr(Spec,print greeting))))

scala> println(m.show)
Model(
  Feature("helloWorld") has Spec("print greeting"),
)
//> using scala 3.6.4
//> using dep "reqt:reqt:4.6.3,url=https://github.com/reqT/reqT/releases/download/v4.6.3/reqT-4.6.3.jar"

import reqt.*

val m = Model(
    Feature("helloWorld").has(
      Spec("Print a nice greeting."),
      Why("First step to get started."),
    )
  )

@main def hello = 
  println(m.toMarkdown)

reqT command line arguments

$ java -jar reqT.jar help

Welcome to reqT 4.6.3 https://reqT.github.io

  Main program args:

    <none>       open a reqT window with empty model
    edit f1 f2   for each file open a window with model from file
    repl         start the scala repl and do 'import reqt.*'
    quiz         start a quiz game in terminal
    version      print version, also -v --version 
    help         print this message, also -h, --help

Publications