Skip to content

Commit 2ddbcb2

Browse files
committed
docs(website): add requirements
1 parent f006cfe commit 2ddbcb2

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

docs/docs/documentazione/requirements.md

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,56 @@ logica direttamente in Scala, sfruttando tutti i vantaggi del caso (Quali?).
1515

1616
### Requisiti utente
1717

18+
Nella descrizione dei requisiti utente si intende con **utente** colui che *utilizzerà la libreria*.
19+
20+
1. L'utente deve poter costruire termini prolog. I termini sono:
21+
1. Constanti: atomi e numeri.
22+
2. Variabili: anonime e non.
23+
3. Termini composti: predicati, congiunzioni, disgiunzioni e liste.
24+
4. Clausole: fatti, regole e direttive.
25+
2. I termini devono essere ispezionabili dall'utente:
26+
1. L'utente deve poter ispezionare il valore delle costanti.
27+
2. L'utente deve poter ispezionare il nome delle variabili.
28+
3. L'utente deve poter ispezionare il funtore, l'arità e gli argomenti dei termini composti.
29+
4. L'utente deve poter ispezionare la testa e il corpo delle clausole.
30+
5. L'utente deve poter ispezionare se un termine e base oppure no.
31+
3. Dato un insieme di clausole, l'utente deve poter costruire teorie prolog.
32+
4. Data una teoria statica e/o teoria dinamica, e un termine che rappresenta il goal del programma, l'utente deve
33+
poter costruire un programma prolog.
34+
5. Deve essere possibile per l'utente modificare le parti di un programma prolog: teoria statica e/o dinamica o il goal
35+
del programma.
36+
6. Dato un programma prolog l'utente deve poter invocare un risolutore per la computazione delle soluzioni del programma.
37+
7. L'utente deve avere la possibilità di scegliere se le soluzioni debbano essere computate tutte insieme oppure una per
38+
volta.
39+
8. L'utente deve avere la possibilità di invocare un risolutore anche per ottenere le soluzioni di un programma prolog privo
40+
di una teoria composto quindi esclusivamente di un termine rappresentante un goal.
41+
9. L'utente per risolvere i programmi prolog deve poter scegliere tra i risolutori forniti dalla libreria oppure, tramite
42+
opportuna configurazione, tra risolutori compatibili implementati da terzi.
43+
1844
### Requisiti di sistema
1945

20-
## Requisiti Non Funzionali
46+
Nella descrizione dei requisiti di sistema si intende con **sistema** la *libreria*.
47+
48+
1. Il sistema deve permette la costruzione dei termini prolog.
49+
2. Il sistema deve fornire un Domain Specic Language (DSL) tramite il quale sarà possibile costruire nella maniera più
50+
fedele e idiomatica possibile i costrutti del linguaggio prolog.
51+
3. Il sistema deve essere costruito in modo tale che l'utente che intende sfruttare il DSL abbia il controllo del contesto
52+
in cui utilizzarlo. Vale a dire che tutte le funzionalità che hanno a che fare specificatamente con il linguaggio prolog
53+
dovranno essere, all'occorenza, abilitate dall'utente.
54+
4. Il sistema deve fornire un risolutore di programmi prolog predefinito.
55+
56+
## Requisiti non funzionali
57+
58+
* **Qualità**: lo stile e la formattazione del codice sorgente verranno verificati tramite il plugin *scalaFmt*.
59+
* **Processo**:
60+
- le pipeline di continuous integration (CI) e continuous delivery (CD) verrano eseguite su Github per mezzo delle *Github Actions*;
61+
- il sistema verrà rilasciato su maven central;
62+
- il versionamento segue i principi del *semantic versioning*.
63+
64+
## Requisiti d'implementazione
65+
66+
* Scala 3.x
67+
* JDK 17+
68+
* 2p-Kt 0.31+
69+
* Lo sviluppo, in particolar modo per quanto riguarda l'implementazione di funzionalità core non banali, dovrà seguire
70+
i principi del Test Driven Development (*TDD*).

0 commit comments

Comments
 (0)