Skip to content

Commit 0651e33

Browse files
committed
update index, add rationale, improve getting started
1 parent c3a8ee2 commit 0651e33

3 files changed

Lines changed: 133 additions & 88 deletions

File tree

index.html

Lines changed: 73 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -99,36 +99,40 @@ <h1 class="title">reqT - Requirements Engineering Tool</h1>
9999
</header>
100100
<nav id="TOC" role="doc-toc">
101101
<ul>
102+
<li><a href="#what-is-reqt" id="toc-what-is-reqt">What is reqT?</a></li>
102103
<li><a href="#download" id="toc-download">Download</a></li>
103104
<li><a href="#getting-started" id="toc-getting-started">Getting
104105
started</a></li>
105106
<li><a href="#why-reqt" id="toc-why-reqt">Why reqT?</a></li>
106-
<li><a href="#using-the-reqt-app" id="toc-using-the-reqt-app">Using the
107-
reqT App</a></li>
107+
<li><a href="#using-the-reqt-desktop-app"
108+
id="toc-using-the-reqt-desktop-app">Using the reqT desktop app</a></li>
108109
<li><a href="#using-reqt-with-scala"
109110
id="toc-using-reqt-with-scala">Using reqT with Scala</a></li>
110111
<li><a href="#publications" id="toc-publications">Publications</a></li>
111112
</ul>
112113
</nav>
114+
<h2 id="what-is-reqt">What is reqT?</h2>
113115
<p><strong>reqT</strong> is an open source requirements engineering tool
114-
for software developers based on <strong>reqT-lang</strong>, a flexible
115-
requirements modelling language with essential requirements engineering
116+
for software developers and learners, available as a desktop application
117+
and a Scala library. With reqT you can specify requirements using a
118+
flexible requirements modelling language called
119+
<strong>reqT-lang</strong> with essential requirements engineering
116120
concepts, giving structure to natural language requirements, while
117121
enabling analysis, visualization and automation.</p>
118-
<p>The <strong>reqT-lang syntax</strong> is a subset of Markdown using
119-
bullet lists with indentation and special keywords to express textual
120-
requirements models by connecting <em>entities</em>, such as a <span
121-
class="EntType">Feature</span>, with <em>relations</em>, such as <span
122-
class="RelType">has</span>, to <em>attributes</em>, such as <span
123-
class="StrAttrType">Spec</span>, as in the example below:</p>
122+
<p>The reqT-lang syntax is a small subset of <a
123+
href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> using bullet
124+
lists with indentation and special keywords, to express textual
125+
requirements models by connecting <span
126+
class="EntType"><em>entities</em></span> via <span
127+
class="RelType"><em>relations</em></span> to <span
128+
class="StrAttrType"><em>attributes</em></span>, as in this example:</p>
124129
<pre><code>* <span class="EntType">Feature</span>: helloWorld <span class="RelType">has</span>
125130
* <span class="StrAttrType">Spec</span>: Print a nice greeting.
126131
* <span class="StrAttrType">Why</span>: First step to get started.
127132
</code></pre>
128-
<p>See the
133+
<p>Visit the
129134
<a href="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf"><strong>Quickref</strong></a>
130-
to explore reqT keywords covering essential requirements engineering
131-
concepts.</p>
135+
to explore requirements engineering concepts of reqT.</p>
132136
<p>Maintainer of reqT: <a
133137
href="https://cs.lth.se/bjorn-regnell">Prof. Björn Regnell</a>. Used at
134138
Lund University in <a href="https://cs.lth.se/krav">this course</a>.</p>
@@ -165,46 +169,55 @@ <h2 id="getting-started">Getting started</h2>
165169
<ul>
166170
<li><p>Make sure you have <a
167171
href="https://adoptium.net/temurin/releases/?package=jdk&amp;version=21">Java
168-
21</a> and <a href="https://www.scala-lang.org/download/">Scala 3</a>
169-
installed for your system. Check this in terminal using:
170-
</br><code>java -version</code></br><code>scala -version</code></p></li>
172+
21 - LTS</a> and <a href="https://www.scala-lang.org/download/">Scala
173+
3</a> installed for your system. Check this in terminal using:
174+
</br><code>java -version</code></br><code>scala -version</code></br> (If
175+
you use later versions than Java 21 - LTS and Scala 3.6.4 you may get
176+
some warnings, but things should work fine anyway.)</p></li>
171177
<li><p>Download the <a
172178
href="https://github.com/reqT/reqT/releases/latest/download/reqT.jar">reqT
173179
desktop app</a> and run in terminal using:
174180
<code>java -jar reqT.jar</code></p></li>
181+
<li><p>Visit the reqT <a
182+
href="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf">Quickref</a>
183+
to learn about available concepts in reqT-lang.</p></li>
175184
<li><p>Learn more about <a href="#using-the-reqt-app">using the reqT
176185
app</a></p></li>
186+
<li><p>Do the reqT labs to learn about using reqT in Requirements
187+
Engineering:</p>
188+
<ul>
189+
<li><a href="https://github.com/reqT/reqT/blob/4.x/docs/lab1.md">Lab 1:
190+
Context, Features and Priorities</a></li>
191+
<li><a href="https://github.com/reqT/reqT/blob/4.x/docs/lab2.md">Lab 2:
192+
Quality Requirements and Release Planning</a></li>
193+
<li>Labs are part of this course at Lund University: <a
194+
href="https://lunduniversity.github.io/krav/">ETSN15 Requirements
195+
Eng.</a></li>
196+
</ul></li>
177197
<li><p>Start reqT in the <a
178198
href="https://docs.scala-lang.org/scala3/book/taste-repl.html">Scala
179-
REPL</a> using: <code>java -jar reqT.jar repl</code></p></li>
199+
REPL</a> using: <code>java -jar reqT.jar repl</code> </br> You can
200+
create a requirements Model in the scala repl like so:</p></li>
180201
</ul>
181-
<pre><code>$ java -jar reqT.jar repl
182-
183-
Welcome to reqT 4.5.6 https://reqT.github.io
184-
Type &#39;edit&#39; to open a new reqT window.
185-
Type &#39;:quit&#39; or press Ctrl+D to exit.
186-
Re-run with -h for help on main program args
187-
188-
scala repl -S 3.6.4-RC1 --jar reqT.jar -- --repl-init-script &quot;import reqt.*&quot;
189-
Welcome to Scala 3.6.4-RC1 (17.0.13, Java OpenJDK 64-Bit Server VM).
190-
Type in expressions for evaluation. Or try :help.
191-
192-
scala&gt; val m = &quot;* Feature: helloWorld has Spec: print greeting&quot;.toModel
193-
val m: reqt.Model =
194-
Model(Rel(Ent(Feature,helloWorld),Has,
195-
Model(StrAttr(Spec,print greeting))))
196-
197-
scala&gt; println(m.show)
198-
Model(
199-
Feature(&quot;helloWorld&quot;) has Spec(&quot;print greeting&quot;),
200-
)
201-
</code></pre>
202+
<div class="sourceCode" id="cb1"><pre
203+
class="sourceCode scala"><code class="sourceCode scala"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a>scala<span class="op">&gt;</span> <span class="kw">val</span> m <span class="op">=</span> <span class="st">&quot;* Feature: helloWorld has Spec: print greeting&quot;</span><span class="op">.</span>toModel</span>
204+
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="kw">val</span> m<span class="op">:</span> reqt<span class="op">.</span>Model <span class="op">=</span> </span>
205+
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a> <span class="fu">Model</span><span class="op">(</span><span class="fu">Rel</span><span class="op">(</span><span class="fu">Ent</span><span class="op">(</span>Feature<span class="op">,</span>helloWorld<span class="op">),</span>Has<span class="op">,</span></span>
206+
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a> <span class="fu">Model</span><span class="op">(</span><span class="fu">StrAttr</span><span class="op">(</span>Spec<span class="op">,</span>print greeting<span class="op">))))</span></span>
207+
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a></span>
208+
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>scala<span class="op">&gt;</span> <span class="fu">println</span><span class="op">(</span>m<span class="op">.</span>show<span class="op">)</span></span>
209+
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a><span class="fu">Model</span><span class="op">(</span></span>
210+
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> <span class="fu">Feature</span><span class="op">(</span><span class="st">&quot;helloWorld&quot;</span><span class="op">)</span> has <span class="fu">Spec</span><span class="op">(</span><span class="st">&quot;print greeting&quot;</span><span class="op">),</span></span>
211+
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
202212
<ul>
203-
<li>You can use reqT as a library in Scala programs for specification
204-
analysis and automation. Download example below here: <a
213+
<li>You can use reqT in Scala programs for automated requirements
214+
analysis.
215+
<ul>
216+
<li>Download example: <a
205217
href="https://github.com/reqT/reqT.github.io/blob/master/src/hello-reqt.scala"><code>hello-reqt.scala</code></a>
206218
and run in terminal using: <br>
207219
<code>scala run hello-reqt.scala</code></li>
220+
</ul></li>
208221
</ul>
209222
<div class="sourceCode" id="cb2"><pre
210223
class="sourceCode scala"><code class="sourceCode scala"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co">//&gt; using scala 3.6.4</span></span>
@@ -222,14 +235,26 @@ <h2 id="getting-started">Getting started</h2>
222235
<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>
223236
<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>
224237
<h2 id="why-reqt">Why reqT?</h2>
225-
<ul>
226-
<li>TODO: add rationale for requirements as code from old site here: <a
227-
href="https://reqt.org/index.html">reqt.org</a></li>
228-
</ul>
229-
<h2 id="using-the-reqt-app">Using the reqT App</h2>
230-
<ul>
231-
<li>TODO: more screendumps and explanations</li>
232-
</ul>
238+
<p>With reqT you can…</p>
239+
<ol type="1">
240+
<li>Model, analyse, visualize and prioritize requirements.</li>
241+
<li>Combine natural language with formal structure.</li>
242+
<li>Flexibly mix abstraction levels and modelling approaches.</li>
243+
<li>Integrate requirements and test specification.</li>
244+
<li>Export and import models via open formats.</li>
245+
<li>Manipulate models with expressive, safe and convenient Scala
246+
programs.</li>
247+
<li>Allocate requirements to releases with constraint solving.</li>
248+
<li>Express prompts for spec-driven development with generative AI
249+
.</li>
250+
</ol>
251+
<p>… using a simple markdown-based language in an open source tool and
252+
library.</p>
253+
<h2 id="using-the-reqt-desktop-app">Using the reqT desktop app</h2>
254+
<p>Download <a
255+
href="https://github.com/reqT/reqT/releases/latest/download/reqT.jar">reqT.jar</a>
256+
and start by double-click or open a terminal and navigate to the folder
257+
with the downloaded file and type: <code>java -jar reqT.jar</code></p>
233258
<figure>
234259
<img src="img/screen1.png" alt="reqT Main Window" />
235260
<figcaption aria-hidden="true">reqT Main Window</figcaption>

src/index-GENERATED.md

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
**reqT** is an open source requirements engineering tool for software developers based on **reqT-lang**, a flexible requirements modelling language with essential requirements engineering concepts, giving structure to natural language requirements, while enabling analysis, visualization and automation.
1+
## What is reqT?
22

3-
The **reqT-lang syntax** is a subset of Markdown using bullet lists with indentation and special keywords to express textual requirements models by connecting *entities*, such as a <span class="EntType">Feature</span>, with *relations*, such as <span class="RelType">has</span>, to *attributes*, such as <span class="StrAttrType">Spec</span>, as in the example below:
3+
**reqT** is an 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 flexible requirements modelling language called **reqT-lang** with essential requirements engineering concepts, giving structure to natural language requirements, while enabling analysis, visualization and automation.
4+
5+
The reqT-lang syntax is a small subset of [Markdown](https://en.wikipedia.org/wiki/Markdown) using bullet lists with indentation and special keywords, to express textual requirements models by connecting <span class="EntType">*entities*</span> via <span class="RelType">*relations*</span> to <span class="StrAttrType">*attributes*</span>, as in this example:
46

57
<pre><code>* <span class="EntType">Feature</span>: helloWorld <span class="RelType">has</span>
68
* <span class="StrAttrType">Spec</span>: Print a nice greeting.
79
* <span class="StrAttrType">Why</span>: First step to get started.
810
</code></pre>
911

10-
See the <a href="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf">**Quickref**</a> to explore reqT keywords covering essential requirements engineering concepts.
12+
Visit the <a href="https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf">**Quickref**</a> to explore requirements engineering concepts of reqT.
1113

1214
Maintainer of reqT: [Prof. Björn Regnell](https://cs.lth.se/bjorn-regnell).
1315
Used at Lund University in [this course](https://cs.lth.se/krav).
@@ -48,26 +50,22 @@ Latest version: <b>
4850

4951

5052
## Getting started
51-
* Make sure you have [Java 21](https://adoptium.net/temurin/releases/?package=jdk&version=21) and [Scala 3](https://www.scala-lang.org/download/) installed for your system. Check this in terminal using: </br>`java -version`</br>`scala -version`
53+
* Make sure you have [Java 21 - LTS](https://adoptium.net/temurin/releases/?package=jdk&version=21) and [Scala 3](https://www.scala-lang.org/download/) installed for your system. Check this in terminal using: </br>`java -version`</br>`scala -version`</br> (If you use later versions than Java 21 - LTS and Scala 3.6.4 you may get some warnings, but things should work fine anyway.)
5254

5355
* Download the [reqT desktop app](https://github.com/reqT/reqT/releases/latest/download/reqT.jar) and run in terminal using: `java -jar reqT.jar`
5456

55-
* Learn more about [using the reqT app](#using-the-reqt-app)
56-
57-
* Start reqT in the [Scala REPL](https://docs.scala-lang.org/scala3/book/taste-repl.html) using: `java -jar reqT.jar repl`
57+
* Visit the reqT [Quickref](https://github.com/reqT/reqT-lang/releases/latest/download/reqT-quickref-GENERATED.pdf) to learn about available concepts in reqT-lang.
5858

59-
```
60-
$ java -jar reqT.jar repl
59+
* Learn more about [using the reqT app](#using-the-reqt-app)
6160

62-
Welcome to reqT 4.5.6 https://reqT.github.io
63-
Type 'edit' to open a new reqT window.
64-
Type ':quit' or press Ctrl+D to exit.
65-
Re-run with -h for help on main program args
61+
* Do the reqT labs to learn about using reqT in Requirements Engineering:
62+
* [Lab 1: Context, Features and Priorities](https://github.com/reqT/reqT/blob/4.x/docs/lab1.md)
63+
* [Lab 2: Quality Requirements and Release Planning](https://github.com/reqT/reqT/blob/4.x/docs/lab2.md)
64+
* Labs are part of this course at Lund University: [ETSN15 Requirements Eng.](https://lunduniversity.github.io/krav/)
6665

67-
scala repl -S 3.6.4-RC1 --jar reqT.jar -- --repl-init-script "import reqt.*"
68-
Welcome to Scala 3.6.4-RC1 (17.0.13, Java OpenJDK 64-Bit Server VM).
69-
Type in expressions for evaluation. Or try :help.
66+
* Start reqT in the [Scala REPL](https://docs.scala-lang.org/scala3/book/taste-repl.html) using: `java -jar reqT.jar repl` </br> You can create a requirements Model in the scala repl like so:
7067

68+
```scala
7169
scala> val m = "* Feature: helloWorld has Spec: print greeting".toModel
7270
val m: reqt.Model =
7371
Model(Rel(Ent(Feature,helloWorld),Has,
@@ -79,7 +77,8 @@ Model(
7977
)
8078

8179
```
82-
* You can use reqT as a library in Scala programs for specification analysis and automation. Download example below here: [`hello-reqt.scala`](https://github.com/reqT/reqT.github.io/blob/master/src/hello-reqt.scala) and run in terminal using: <br> `scala run hello-reqt.scala`
80+
* You can use reqT in Scala programs for automated requirements analysis.
81+
* Download example: [`hello-reqt.scala`](https://github.com/reqT/reqT.github.io/blob/master/src/hello-reqt.scala) and run in terminal using: <br> `scala run hello-reqt.scala`
8382

8483
```scala
8584
//> using scala 3.6.4
@@ -100,11 +99,22 @@ val m = Model(
10099

101100
## Why reqT?
102101

103-
* TODO: add rationale for requirements as code from old site here: [reqt.org](https://reqt.org/index.html)
102+
With reqT you can...
103+
104+
1. Model, analyse, visualize and prioritize requirements.
105+
1. Combine natural language with formal structure.
106+
1. Flexibly mix abstraction levels and modelling approaches.
107+
1. Integrate requirements and test specification.
108+
1. Export and import models via open formats.
109+
1. Manipulate models with expressive, safe and convenient Scala programs.
110+
1. Allocate requirements to releases with constraint solving.
111+
1. Express prompts for spec-driven development with generative AI .
112+
113+
... using a simple markdown-based language in an open source tool and library.
104114

105-
## Using the reqT App
115+
## Using the reqT desktop app
106116

107-
* TODO: more screendumps and explanations
117+
Download [reqT.jar](https://github.com/reqT/reqT/releases/latest/download/reqT.jar) and start by double-click or open a terminal and navigate to the folder with the downloaded file and type: `java -jar reqT.jar`
108118

109119
![reqT Main Window](img/screen1.png)
110120

0 commit comments

Comments
 (0)