Prova finale di ingegneria del software per l'anno accademico 2022-2023.
Scaglione Cugola, gruppo GC-019.
Valutazione: 27/30
Ricreare il gioco da tavolo MyShelfie(apre sito esterno) pubblicato da Cranio Creations, seguendo i principi di buona ingegneria del software.
Il progetta punta a creare una copia virtuale del gioco come un'applicazione Java distribuita e in rete. Come viene insegnato nei corsi d'ingegneria del software, un programma così complesso deve seguire delle regole in modo tale da essere mantenibile, riutilizzabile e aggiornabile da altri sviluppatori.
Per seguire tali linee guida, nella realizzazione del progetto si sono utilizzati diversi design pattern(apre sito esterno), come il pattern Model-View-Controller per una corretta divisione degli strati dell'applicazione.
I requisiti del progetto sono disponibili qui: requisiti.
La maggior parte delle classi e dei metodi sono stati commentati e descritti seguendo lo standard Java con JavaDoc. La documentazione è disponibile qui: report JavaDoc.
I componenti del gioco sono stati testati singolarmente con JUnit e la copertura del codice è disponibile qui: immagine di copertura da IntelliJ, report HTML.
Nota: al fine di testare il controller senza la necessità della rete, si è deciso di creare la classe OfflineControllerForTest.java
. Il codice per lo svolgimento del gioco è chiaramente il medesimo.
Libreria/Plugin | Descrizione |
---|---|
Maven | Strumento di gestione di progetti software basati su Java e build automation. |
JUnit | Framework di unit testing per il linguaggio di programmazione Java. |
JavaFX | Piattaforma software per la realizzazione di applicazioni grafiche (GUI). |
- Regole complete disponibili qui: Regole MyShelfie;
- Connessione socket;
- Connessione RMI;
- Interfaccia da Linea di Comando (CLI);
- Interfaccia grafica (GUI);
Funzionalità | Implementata |
---|---|
Chat | ✅ |
Partite multiple | ❌ |
Persistenza | ❌ |
Resilienza alle disconnessioni | ❌ |
Legenda:
- ✅ : implementata;
- 🟡 : in sviluppo;
- ❌ : non implementata;
Si possono utilizzare i jar precompilati che possono essere trovati qui: jars.
Si possono compilare i file sorgente direttamente sulla propria macchina, usando Maven(apre sito esterno) (deve essere installato sulla propria macchina).
Per compilare autonomamente, posizionarsi nella cartella radice del progetto e lanciare il seguente comando:
mvn clean package
I jar compilati saranno disponibili nella cartella target/
con i seguenti nomi: MyShelfie-client.jar
per il client e MyShelfie-server.jar
per il server.
Per avviare il server bisogna digitare in un terminale:
java -jar MyShelfie-server.jar [socket port](Opzionale) [RMI port](Opzionale)
Se entrambi i valori non sono impostati, il server partirà con i valori di default:
- 12345 per socket;
- 1099 per RMI;
Si consiglia di non utilizzare porte già usate da altre applicazioni e di consentire le connessioni su tali porte nel vostro firewall e router.
Per avviare il client bisogna digitare in un terminale:
java -jar MyShelfie-client.jar <UI> <Connessione>
Dove UI e Connessione sono parametri obbligatori. UI:
-cli
o-c
avvierà il gioco in modalità CLI;-gui
o-g
avvierà il gioco in modalità GUI;
Connessione:
-socket
o-s
per utilizzare la connessione socket;-rmi
o-r
per utilizzare la connessione RMI;
Si consiglia di consentire le connessioni su tali porte nel vostro firewall e router.
Questo programma richiede una versione Java 19 o superiore per eseguire correttamente.
Per l'interfaccia CLI:
- Un terminale che supporti 256 colori (8-bit)(apre sito esterno);
⚠️ Se si utilizza Windows, bisogna scaricare ed eseguire come amministratore questo script batch, altrimenti non verranno visualizzati i colori nel terminale;⚠️ Per mantenere la formattazione degli elementi di gioco, si consiglia di utilizzare un tipo di carattere monospazio come Courier New (Windows), Monospace (Linux) o Liberation Mono (Linux).
Per l'interfaccia GUI:
- Uno schermo con risoluzione maggiore di 1366x768 px;
- Per una maggiore uniformità dell'interfaccia, è consigliata l'installazione di questo font: Rancho;
Il client e il server sono stati provati su macchine con i seguenti sistemi operativi:
- Windows 10 1909;
- Windows 10 22H2;
- Fedora Linux 38;
- Windows 11 22H2;
La compatibilità con altri sistemi operativi non è stata collaudata, la vostra esperienza potrebbe variare.
Il progetto è distribuito sotto licenza MIT, si applicano le limitazioni descritte in tale licenza.
NOTA: My Shelfie è un gioco da tavolo sviluppato ed edito da Cranio Creations Srl. I contenuti grafici di questo progetto riconducibili al prodotto editoriale da tavolo sono utilizzati previa approvazione di Cranio Creations Srl a solo scopo didattico. È vietata la distribuzione, la copia o la riproduzione dei contenuti e immagini in qualsiasi forma al di fuori del progetto, così come la redistribuzione e la pubblicazione dei contenuti e immagini a fini diversi da quello sopracitato. È inoltre vietato l'utilizzo commerciale di suddetti contenuti.
Software Engineering project for the 2022-2023 academic year.
Recreate the board game MyShelfie(opens external site) published by Cranio Creations following the software engineering principles.
The project aims to create a virtual copy of the game as a distributed, online Java application. As taught in Software Engineering courses, a complex software such as this has to follow some rules in order to be maintainable, reusable and updatable by other developers.
In order to accomplish this, the project uses many design patterns(opens external site) such as the Model-View-Controller pattern for the core division of information layers in the application.
The project's requirements are available here: requirements (available only in Italian).
The vast majority of the classes and methods of the application are commented and described following the Java standards with JavaDoc. The docs are available here: JavaDoc report.
The components of the game have been individually tested with Junit and the code coverage is available here: image of coverage within IntelliJ, HTML report.
Note: the class OfflineControllerForTest.java
was created in order to test the controller without the need for a server and connection. The rest of the code for the logic of the game has not been modified.
Library/Plugin | Description |
---|---|
Maven | Build automation tool used primarily for Java projects. |
JUnit | Unit testing framework for the Java programming language. |
JavaFX | Software platform for creating and delivering GUI applications. |
- Complete rule-set available here: MyShelfie rules;
- Socket connection;
- RMI connection;
- Command Line Interface (CLI);
- Graphical Interface (GUI);
Function | Implemented |
---|---|
Chat | ✅ |
Multiple games | ❌ |
Persistence | ❌ |
Disconnection resilience | ❌ |
Legend:
- ✅ : implemented;
- 🟡 : work in progress;
- ❌ : not implemented;
The already packaged jars can be found here: jars.
You can compile the sources on your machine using Maven(opens external site) (must be installed on your computer).
Go to the project's root directory and run this command:
mvn clean package
The packaged jars will be in the target/
folder and are called MyShelfie-client.jar
for the client and MyShelfie-server.jar
for the server.
To start a server run the following command in a terminal:
java -jar MyShelfie-server.jar [socket port](Optional) [RMI port](Optional)
If both are not set the server will start using the default ports:
- 12345 for socket;
- 1099 for RMI;
Please be sure that the ports are not used by another application and are allowed through your firewall and router.
To start a client run the following command in a terminal:
java -jar MyShelfie-client.jar <UI> <Connection>
Where UI and Connection are both mandatory. UI:
-cli
or-c
will start the CLI game;-gui
or-g
will start the GUI game;
Connection:
-socket
or-s
will use the socket connection;-rmi
or-r
will use the RMI connection;
Please make sure the ports are open on your firewall and router.
Generally a system that runs Java 19+ applications.
For CLI game:
- A terminal that supports 8-bit (256) colours(opens external site);
⚠️ If your computer runs Windows, please download and run as administrator this batch script, otherwise the colours will not be displayed in the terminal;⚠️ In order to keep the correct proportions of the elements of the game, it's suggested to use a monospace font such as Courier New (Windows), Monospace (Linux) or Liberation Mono (Linux).
For GUI game:
- A screen larger than 1366x768 px;
- For a better uniformity of the application, it's recommended to install this font: Rancho;
The client and server have been tested working on the following operating systems:
- Windows 10 1909;
- Windows 10 22H2;
- Fedora Linux 38;
- Windows 11 22H2;
Compatibility with other OSes has not been tested, your experience may vary.
The following translation does not hold any legal value, always refer to the Italian version
This project is distributed under MIT license, all the limitations described in said license apply.
NOTE: My Shelfie is a board game developed and edited by Cranio Creations Srl. The graphic contents of this project related to the tabletop publishing product are used with the prior approval of Cranio Creations Srl for educational purposes only. The distribution, copying or reproduction of the contents and images in any form outside of the project is prohibited, as is the redistribution and publication of the contents and images for purposes other than those stated above. The commercial use of said contents is also prohibited.