66 < meta name ="viewport " content ="width=device-width, initial-scale=1.0, user-scalable=yes " />
77 < title > reqT - Requirements Engineering Tool</ title >
88 < style >
9+ /* Default styles provided by pandoc.
10+ ** See https://pandoc.org/MANUAL.html#variables-for-html for config info.
11+ */
912 code {white-space : pre-wrap;}
1013 span .smallcaps {font-variant : small-caps;}
1114 div .columns {display : flex; gap : min (4vw , 1.5em );}
@@ -99,44 +102,21 @@ <h1 class="title">reqT - Requirements Engineering Tool</h1>
99102</ header >
100103< nav id ="TOC " role ="doc-toc ">
101104< ul >
102- < li > < a href ="#what-is-reqt " id ="toc-what-is-reqt "> What is reqT?</ a > </ li >
103105< li > < a href ="#download " id ="toc-download "> Download</ a > </ li >
106+ < li > < a href ="#what-is-reqt " id ="toc-what-is-reqt "> What is reqT?</ a > </ li >
107+ < li > < a href ="#why-reqt " id ="toc-why-reqt "> Why reqT?</ a > </ li >
104108< li > < a href ="#getting-started " id ="toc-getting-started "> Getting
105109started</ a > </ li >
106- < li > < a href ="#why-reqt " id ="toc-why-reqt "> Why reqT?</ a > </ li >
107110< li > < a href ="#using-the-reqt-desktop-app "
108111id ="toc-using-the-reqt-desktop-app "> Using the reqT desktop app</ a > </ li >
109112< li > < a href ="#using-reqt-with-scala "
110113id ="toc-using-reqt-with-scala "> Using reqT with Scala</ a > </ li >
114+ < li > < a href ="#reqt-command-line-arguments "
115+ id ="toc-reqt-command-line-arguments "> reqT command line
116+ arguments</ a > </ li >
111117< li > < a href ="#publications " id ="toc-publications "> Publications</ a > </ li >
112118</ ul >
113119</ nav >
114- < h2 id ="what-is-reqt "> What is reqT?</ h2 >
115- < p > < strong > reqT</ strong > is a < em > flexible</ em > and < em > scalable</ em >
116- open source < strong > requirements engineering tool</ strong > for software
117- developers and learners, available as a desktop application and a Scala
118- library.</ p >
119- < p > With reqT you can specify requirements using a simple requirements
120- modelling language called < strong > reqT-lang</ strong > with essential
121- requirements engineering concepts, giving structure to natural language
122- requirements, while enabling analysis, visualization and automation.</ p >
123- < p > The reqT-lang syntax is a small subset of < a
124- href ="https://en.wikipedia.org/wiki/Markdown "> Markdown</ a > using bullet
125- lists with indentation and special keywords, to express textual
126- requirements models by connecting < span
127- class ="EntType "> < em > entities</ em > </ span > via < span
128- class ="RelType "> < em > relations</ em > </ span > to < span
129- class ="StrAttrType "> < em > attributes</ em > </ span > , as in this example:</ p >
130- < pre > < code > * < span class ="EntType "> Feature</ span > : helloWorld < span class ="RelType "> has</ span >
131- * < span class ="StrAttrType "> Spec</ span > : Print a nice greeting.
132- * < span class ="StrAttrType "> Why</ span > : First step to get started.
133- </ code > </ pre >
134- < p > Visit the
135- < a href ="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf "> < strong > Quickref</ strong > </ a >
136- to explore requirements engineering concepts in reqT-lang.</ p >
137- < p > Maintainer of reqT: < a
138- href ="https://cs.lth.se/bjorn-regnell "> Prof. Björn Regnell</ a > . Used at
139- Lund University in < a href ="https://cs.lth.se/krav "> this course</ a > .</ p >
140120< h2 id ="download "> Download</ h2 >
141121< p > Latest version: < b > 4.6.3 </ b > All versions: < a
142122href ="https://github.com/reqT/reqT/releases "> reqT</ a > < a
@@ -147,7 +127,7 @@ <h2 id="download">Download</h2>
147127 < a href ="https://github.com/reqT/reqT/releases/latest/download/reqT.jar "> Desktop App </ a >
148128</ button >
149129
150- < button type ="button " class ="button " onclick ='window.location.href="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf" '>
130+ < button type ="button " class ="buttMaintainer of reqT: Prof. Björn Regnell. Used at Lund University in this course.on " onclick ='window.location.href="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf" '>
151131 < a href ="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf "> Quickref </ a >
152132</ button >
153133
@@ -166,39 +146,133 @@ <h2 id="download">Download</h2>
166146tinyurl.com/get-reqT</ a >
167147</ p >
168148< pre > curl -L https://tinyurl.com/get-reqT -o reqT.jar</ pre >
149+ < h2 id ="what-is-reqt "> What is reqT?</ h2 >
150+ < p > < strong > reqT</ strong > is a < em > flexible</ em > and < em > scalable</ em >
151+ open source < strong > requirements engineering tool</ strong > for software
152+ developers and learners, available as a desktop application and a Scala
153+ library.</ p >
154+ < p > With reqT you can specify requirements using a simple requirements
155+ modelling language called < strong > reqT-lang</ strong > with essential
156+ requirements engineering concepts, giving structure to natural language
157+ requirements, while enabling analysis, visualization and automation.</ p >
158+ < p > Visit the
159+ < a href ="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf "> < strong > Quickref</ strong > </ a >
160+ to explore requirements engineering concepts in reqT-lang.</ p >
161+ < p > The reqT-lang syntax is a small subset of < a
162+ href ="https://en.wikipedia.org/wiki/Markdown "> Markdown</ a > using bullet
163+ lists with indentation and special keywords, to express textual
164+ requirements models by connecting < span
165+ class ="EntType "> < em > entities</ em > </ span > via < span
166+ class ="RelType "> < em > relations</ em > </ span > to < span
167+ class ="StrAttrType "> < em > attributes</ em > </ span > , as in this example:</ p >
168+ < pre > < code > * < span class ="EntType "> Feature</ span > : helloWorld < span class ="RelType "> has</ span >
169+ * < span class ="StrAttrType "> Spec</ span > : Print a nice greeting.
170+ * < span class ="StrAttrType "> Why</ span > : First step to get started.
171+ </ code > </ pre >
172+ < p > < em > Maintainer of reqT:</ em > < a
173+ href ="https://cs.lth.se/bjorn-regnell "> Prof. Björn Regnell</ a > . reqT is
174+ used at Lund University in < a
175+ href ="https://lunduniversity.github.io/krav/ "> this course</ a > .</ p >
176+ < h2 id ="why-reqt "> Why reqT?</ h2 >
177+ < p > With reqT you can…</ p >
178+ < ol type ="1 ">
179+ < li > Model, analyse, visualize and prioritize requirements.</ li >
180+ < li > Manage requirements in issues and git using simple markdown
181+ syntax.</ li >
182+ < li > Combine natural language with formal structure.</ li >
183+ < li > Flexibly mix abstraction levels and modelling approaches.</ li >
184+ < li > Integrate requirements and test specification.</ li >
185+ < li > Export, import and visualize requirements via open formats.</ li >
186+ < li > Manipulate models with expressive, safe and convenient Scala
187+ programs.</ li >
188+ < li > Allocate requirements to releases with constraint solving.</ li >
189+ < li > Express prompts for spec-driven development with generative AI
190+ .</ li >
191+ </ ol >
192+ < p > … using a simple markdown-based language in an open source tool and
193+ library.</ p >
169194< h2 id ="getting-started "> Getting started</ h2 >
170195< ul >
171196< li > < p > Make sure you have < a
172197href ="https://adoptium.net/temurin/releases/?package=jdk&version=21 "> Java
17319821 - LTS</ a > and < a href ="https://www.scala-lang.org/download/ "> Scala
174- 3</ a > installed for your system. Check this in terminal using:
199+ 3</ a > installed for your specific system. Check this in terminal using:
175200</ br > < code > java -version</ code > </ br > < code > scala -version</ code > </ br > (If
176- you use later versions than Java 21 - LTS and Scala 3.6.4 you may get
177- some warnings, but things should work fine anyway.)</ p > </ li >
178- < li > < p > Download the < a
179- href ="https://github.com/reqT/reqT/releases/latest/download/reqT.jar "> reqT
180- desktop app </ a > and run in terminal using:
201+ you use other versions you may get warnings, but things could work
202+ anyway.)</ p > </ li >
203+ < li > < p > Download < a
204+ href ="https://github.com/reqT/reqT/releases/latest/download/reqT.jar "> < strong > reqT.jar </ strong > </ a >
205+ and double-click the downloaded file or run in terminal using:
181206< code > java -jar reqT.jar</ code > </ p > </ li >
207+ < li > < p > Learn more about < a href ="#using-the-reqt-desktop-app "> using the
208+ reqT desktop app</ a > and < a href ="#using-reqt-with-scala "> using reqT
209+ with Scala</ a > .</ p > </ li >
182210< li > < p > Visit the reqT < a
183- href ="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf "> Quickref</ a >
184- to learn about available concepts in reqT-lang.</ p > </ li >
185- < li > < p > Learn more about < a href ="#using-the-reqt-app "> using the reqT
186- app</ a > </ p > </ li >
187- < li > < p > Do the reqT labs to learn about using reqT in Requirements
188- Engineering:</ p >
211+ href ="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf "> < strong > Quickref</ strong > </ a >
212+ to learn about the concepts in reqT-lang.</ p > </ li >
213+ < li > < p > Do the < strong > reqT labs</ strong > to learn about using reqT in
214+ Requirements Engineering:</ p >
189215< ul >
190- < li > < a href ="https://github.com/reqT/reqT/blob/4.x/docs/lab1.md "> Lab 1:
191- Context, Features and Priorities</ a > </ li >
192- < li > < a href ="https://github.com/reqT/reqT/blob/4.x/docs/lab2.md "> Lab 2:
193- Quality Requirements and Release Planning</ a > </ li >
194- < li > Labs are part of this course at Lund University: < a
195- href ="https://lunduniversity.github.io/krav/ "> ETSN15 Requirements
196- Eng.</ a > </ li >
216+ < li > < a
217+ href ="https://github.com/reqT/reqT/blob/4.x/docs/lab1.md "> < strong > Lab
218+ 1</ strong > : Context, Features and Priorities</ a > </ li >
219+ < li > < a
220+ href ="https://github.com/reqT/reqT/blob/4.x/docs/lab2.md "> < strong > Lab
221+ 2</ strong > : Quality Requirements and Release Planning</ a > </ li >
222+ < li > These labs are part of the < a
223+ href ="https://lunduniversity.github.io/krav/ "> < em > ETSN15 Requirements
224+ Eng.</ em > </ a > course at Lund Univ.</ li >
197225</ ul > </ li >
198- < li > < p > Start reqT in the < a
226+ </ ul >
227+ < h2 id ="using-the-reqt-desktop-app "> Using the reqT desktop app</ h2 >
228+ < ul >
229+ < li > < p > Download < a
230+ href ="https://github.com/reqT/reqT/releases/latest/download/reqT.jar "> reqT.jar</ a >
231+ and start by double-click or open a terminal and navigate to the folder
232+ with the downloaded file and type:
233+ < code > java -jar reqT.jar</ code > </ p > </ li >
234+ < li > < p > The main window of the reqT desktop app has menus and three panes
235+ as shown in the image below:
236+ < img src ="img/screen1.png " alt ="reqT Main Window " width ="100% "/> </ p >
237+ < ol type ="1 ">
238+ < li > < p > The left pane is called the < strong > Tree</ strong > where your reqT
239+ model is shown as a hierarchy of (un)foldable and selectable nodes. The
240+ model is updated by the < em > Tree</ em > menu. If you want to edit a
241+ selected Tree node then select < em > Tree -> Edit Selected Node in
242+ Editor (Ctrl+E)</ em > . The Tree is not updated until you explicitly issue
243+ an update, for example using < em > Tree -> Replace Selected Node from
244+ Editor (Ctrl+R)</ em > </ p > </ li >
245+ < li > < p > The middle pane is a text < strong > Editor</ strong > with reqT-lang
246+ syntax highlighting and completion using < em > Ctrl+Space</ em > . It can be
247+ manipulated using the < em > Editor</ em > menu. Editing of model fragments
248+ is < em > independent</ em > of the Tree pane. You can copy your edits into
249+ the Tree < em > explicitly</ em > by using the < em > Tree</ em > menu or the
250+ shortcuts shown in that menu.</ p > </ li >
251+ < li > < p > The right pane contains the < strong > Log</ strong > where help
252+ messages are printed. You can use the < em > Log</ em > menu to change line
253+ wrapping, increase/decrease font size, and clear the log.</ p > </ li >
254+ </ ol > </ li >
255+ < li > < p > You can use the < em > View</ em > menu to toggle pane orientation,
256+ fullscreen, window title, and increase/decrease the menu and tree font
257+ size.</ p > </ li >
258+ < li > < p > You can use the < em > Tools</ em > menu to apply different
259+ pre-defined tools to your model.</ p > </ li >
260+ < li > < p > You can use the < em > Export</ em > menu to save your model in
261+ different formats, such as html and LaTex. If you have < a
262+ href ="https://graphviz.org/ "> GraphViz</ a > installed on your path, you
263+ can visualize your model as a nested or flat graph.</ p > </ li >
264+ < li > < p > You can use the < em > Template</ em > menu to enter example models
265+ into the editor.</ p > </ li >
266+ < li > < p > You can use the < em > Help</ em > menu to print help messages in the
267+ Log and see the current version of reqT using the < em > About</ em > menu
268+ item.</ p > </ li >
269+ </ ul >
270+ < h2 id ="using-reqt-with-scala "> Using reqT with Scala</ h2 >
271+ < ul >
272+ < li > Start reqT in the < a
199273href ="https://docs.scala-lang.org/scala3/book/taste-repl.html "> Scala
200274REPL</ a > using: < code > java -jar reqT.jar repl</ code > </ br > You can
201- create a requirements Model in the scala repl like so:</ p > </ li >
275+ create a requirements Model in the scala repl like so:</ li >
202276</ ul >
203277< div class ="sourceCode " id ="cb1 "> < pre
204278class ="sourceCode scala "> < code class ="sourceCode scala "> < span id ="cb1-1 "> < a href ="#cb1-1 " aria-hidden ="true " tabindex ="-1 "> </ a > scala< span class ="op "> ></ span > < span class ="kw "> val</ span > m < span class ="op "> =</ span > < span class ="st "> "* Feature: helloWorld has Spec: print greeting"</ span > < span class ="op "> .</ span > toModel</ span >
@@ -235,40 +309,39 @@ <h2 id="getting-started">Getting started</h2>
235309< span id ="cb2-12 "> < a href ="#cb2-12 " aria-hidden ="true " tabindex ="-1 "> </ a > </ span >
236310< span id ="cb2-13 "> < a href ="#cb2-13 " aria-hidden ="true " tabindex ="-1 "> </ a > @main < span class ="kw "> def</ span > hello < span class ="op "> =</ span > </ span >
237311< span id ="cb2-14 "> < a href ="#cb2-14 " aria-hidden ="true " tabindex ="-1 "> </ a > < span class ="fu "> println</ span > < span class ="op "> (</ span > m< span class ="op "> .</ span > toMarkdown< span class ="op "> )</ span > </ span > </ code > </ pre > </ div >
238- < h2 id ="why-reqt "> Why reqT?</ h2 >
239- < p > With reqT you can…</ p >
240- < ol type ="1 ">
241- < li > Model, analyse, visualize and prioritize requirements.</ li >
242- < li > Manage requirements in issues and git using simple markdown
243- syntax.</ li >
244- < li > Combine natural language with formal structure.</ li >
245- < li > Flexibly mix abstraction levels and modelling approaches.</ li >
246- < li > Integrate requirements and test specification.</ li >
247- < li > Export, import and visualize requirements via open formats.</ li >
248- < li > Manipulate models with expressive, safe and convenient Scala
249- programs.</ li >
250- < li > Allocate requirements to releases with constraint solving.</ li >
251- < li > Express prompts for spec-driven development with generative AI
252- .</ li >
253- </ ol >
254- < p > … using a simple markdown-based language in an open source tool and
255- library.</ p >
256- < h2 id ="using-the-reqt-desktop-app "> Using the reqT desktop app</ h2 >
257- < p > Download < a
258- href ="https://github.com/reqT/reqT/releases/latest/download/reqT.jar "> reqT.jar</ a >
259- and start by double-click or open a terminal and navigate to the folder
260- with the downloaded file and type: < code > java -jar reqT.jar</ code > </ p >
261- < figure >
262- < img src ="img/screen1.png " alt ="reqT Main Window " />
263- < figcaption aria-hidden ="true "> reqT Main Window</ figcaption >
264- </ figure >
265- < h2 id ="using-reqt-with-scala "> Using reqT with Scala</ h2 >
266312< ul >
267- < li > < p > TODO: example usage of the < a
268- href ="https://github.com/reqT/reqT-lang "> reqT-lang api</ a > </ p > </ li >
269- < li > < p > TODO: example usage of the < a
270- href ="https://github.com/reqT/reqT/blob/4.x/src/main/scala/Main.scala "> reqT
271- command-line args</ a > </ p > </ li >
313+ < li > < p > Visit the < a
314+ href ="https://fileadmin.cs.lth.se/reqt-lang/api "> < strong > reqT-lang
315+ api</ strong > </ a > and < a
316+ href ="https://github.com/reqT/reqT-lang/ "> < strong > source
317+ code</ strong > </ a > </ p > </ li >
318+ < li > < p > Visit the < a
319+ href ="https://fileadmin.cs.lth.se/reqt/api "> < strong > reqT app
320+ api</ strong > </ a > and < a
321+ href ="https://github.com/reqT/reqT/ "> < strong > source
322+ code</ strong > </ a > </ p > </ li >
323+ </ ul >
324+ < h2 id ="reqt-command-line-arguments "> reqT command line arguments</ h2 >
325+ < ul >
326+ < li > See the command line arguments available using the < code > help</ code >
327+ argument:</ li >
328+ </ ul >
329+ < pre > < code > $ java -jar reqT.jar help
330+
331+ Welcome to reqT 4.6.3 https://reqT.github.io
332+
333+ Main program args:
334+
335+ <none> open a reqT window with empty model
336+ edit f1 f2 for each file open a window with model from file
337+ repl start the scala repl and do 'import reqt.*'
338+ quiz start a quiz game in terminal
339+ version print version, also -v --version
340+ help print this message, also -h, --help
341+ </ code > </ pre >
342+ < ul >
343+ < li > Visit the reqT main program code: < a
344+ href ="https://github.com/reqT/reqT/blob/4.x/src/main/scala/Main.scala "> Main.scala</ a > </ li >
272345</ ul >
273346< h2 id ="publications "> Publications</ h2 >
274347< ul >
0 commit comments