The reqT development started in 2010 at Lund University by Prof. Björn Regnell, to provide a free tool for illustrating essential requirements engineering concepts in software engineering teaching of MSc students. Since then reqT has grown into a comprehensive requirements engineering workbench and laboratory for capturing requirements modelling ideas based on experiences from practice and results from research.
Current version
Recent releases
Recent releases are published at github.com/reqT/reqT/releases
- Release 3.1.6 support for Java 17
- Release 3.1.5 minor fixes
- Release 3.1.4 update templates
- Release 3.1.3 move to Scala 2.12
- Release 3.1.2 add high dpi support
- Release 3.1.1 add server mode
- Release 3.1.0: bump to Scala 2.11.11
- Release 3.0.2: update docs
Older versions
2014-11-02: Release 3.0.1
- Improve graph generation and export including pdf, svg, png
- Add more graph layout managers in graph export
- Add html export including element type coloring and css
- Add latex export
- Improve gui including example templates
- Improve iterators
- Add transform iterator
- Several bug fixes
2014-09-07: Release 3.0.0
- Graphical user interface with foldable tree view and syntax-colored text editor
- Fully recursive modelling allowing models inside models at arbitrary depth
- New powerful Scala-embedded DSL and more comprehensive metamodel
- Metamodel-aware auto-completion in text editor
- Export to graphviz, html, spreadsheet and more
- New external DSL called reqtext using indentation instead of parenthesis
- Meta-programming-enabled metamodel customization
- All required libs are included in a self-contained jar-file - no need to install Scala
2014-08-01: Release Candidate 1 of version 3.0.0
- Rebuild from scratch
- Many new features (see notes on release 3.0.0 above)
2014-01-26: Constraint solving, hierarchy and variability
- Add constraint solving by integration with JaCoP
- Add TestCase and Code and make runnable in REPL
- Add hierarchical model attribute and flattening of Submodel
- Add a first prototype of variability modelling
2012-11-29: Improvements based on user requests
- Restrict on sets of entities, e.g.:
m / (m / Label("aa")).sources
- File proxy attribute External to load strings externally in toHtml, e.g.:
Feature("x") has (Gist("g"), External("myspecstring.txt",Spec.apply))
- Escape sequence convertion from escape chars in toScala
- Newline
\n
in Attribute values is replaced with <br>
in HTML-generation
- Cancelled bad code causing long execution times for large owns-structures
m up Feature("x") == (m / Feature("x").up ++ (m \ Feature("x"))
m down Feature("x") == (m / Feature("x").down ++ (m \ Feature("x"))
- Semantic check of owns-relations:
m.hasMultiOwners, m.multiOwners
- Semantic check of missing Specs:
m.hasMissingSpecs, m.missingSpecs
- Ordering of Status and Level:
Status(DROPPED) < STATUS(ELICITED)
- Check to run all (currently 2) available checks:
m.check
2012-11-12: Minor fixes + improved restrict operator
-
you can now restrict models to general strings:
m / ""
m /+ ""
m /-> ""
ls //list files in user.dir
dir // same as ls
-
Bug-fix on printing quotes in assigns:
Model(Class("Guest") assigns(Label("one-to-many")) to Class("Stay"))
2012-10-21: Major update and refactoring
- improved DSL with increased flexibility and applicability
- tight integration with Scala collections
- added document templates for flexible chapter control
- document generation focus on web instead of Latex
- type structure revised from scratch
- the data model is given a graph-like strukture
- relations are now generalized, and attributes have a "has"-edge
- A bit more idiomatic Scala
- ...
- TODO Still to be backported: latex generation; but Html was more important
2011-11-26: prioOrder, custom chapter order by prio
* added operation prioOrder on domains:
> var d = Domain(feature("1", prio -> 2),feature("2",prio -> 1))
> d.prioOrder
res3: List[reqT.Ent] = List(Ent(feature,2), Ent(feature,1))
- chapter ordered based on chapter prio:
d += chapter("x", text -> "my text", prio -> 3)
- will place chapter("x") after all chapters with prio less than 3 and before all chapters with prio more than 3.
- No prio is interpreted as
prio -> Int.MaxValue
2011-11-26: Custom chapters, changeAll with implicit deprecation
- added entity chapter for latex chapter generation:
d += chapter("My Chap", text -> "some text")
d += chapter("My Chap") has (feature("x"),feature("y"))
- added changeAll to tranform an entity and make old key deprecated:
d **= feature("x") -> goal("x1")
// this will implicitly add a relation goal("x1") was feature("x")
// and also change feature("x") to have gist -> "Deprecated."
- improved latex generation
- added domain operations: related, unrelated, roots, leafs, intermediates
2011-11-14: Tabular export/import and bug fixes
- no auto-creation/revision dates, delete attribute, intersect operator, tables in appendix, bugfix double text
- export to tabSep:
> d tabSep "test" // will save entities to test.txt as a tab separated table
- import from tabSep:
> importation.tabSep("infile.txt","outfile.scala","nameOfDomainVar")
> :load outfile.scala
- remove attribute:
> d - creation // will remove attribute creation from all entities in d
- overview tables moved to appendix in latex generation
- removed automatic creation and revision dates on student requests
- new intersect operator:
> d1 & d2
// gives a subdomain with all common keys and
// Elements of d1 updated with attribute values of d2 if different
- bugfix: removed double generation of text attributes in latex
2011-11-14: Settings, precondition, undefined, attribute removal
> d += setting("noTikz") //no tikz package included and no drawings
> d += setting("latexPreamble", text -> "\\usepackage{graphics}")
> d += setting("noContext") //no context chapter generated
> d += task("x", precondition -> "all x are true")
> d.undefined //will give Set of all undefined Ent keys in relations
> d += d.undefined //will add all undefined entities
> d - feature("x", gist) //for removing single attributes
2011-11-01: First usage in teaching
- Prototypical DSL structure in place
- Latex generation of specification and tikz generation of context diagram
- Illustrates requirements as entities, relations and attributes