Skip to content

ale-polimi/ing-sw-2023-pressiani-rossi-spinelli-travaini

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[ITA] Prova Finale di Ingegneria del Software - A.A. 2022-2023 (English follows)

License: MIT

Prova finale di ingegneria del software per l'anno accademico 2022-2023.
Scaglione Cugola, gruppo GC-019.

Valutazione: 27/30

Componenti del gruppo

Obiettivo del progetto


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.

Documentazione

UML

JavaDoc

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.

JUnit testing

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.

Librerie e plugin

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).

Funzionalità implementate

Core

  • Regole complete disponibili qui: Regole MyShelfie;
  • Connessione socket;
  • Connessione RMI;
  • Interfaccia da Linea di Comando (CLI);
  • Interfaccia grafica (GUI);

Avanzate

Funzionalità Implementata
Chat
Partite multiple
Persistenza
Resilienza alle disconnessioni

Legenda:

  • ✅ : implementata;
  • 🟡 : in sviluppo;
  • ❌ : non implementata;

Compilazione file sorgente

Utilizzando i jar precompilati (consigliato)

Si possono utilizzare i jar precompilati che possono essere trovati qui: jars.

Compilazione manuale

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.

Esecuzione

Avvio del 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 disabilitare le schede di rete virtuali o inutilizzate, altrimenti la connessione RMI potrebbe non funzionare correttamente.

Si consiglia di non utilizzare porte già usate da altre applicazioni e di consentire le connessioni su tali porte nel vostro firewall e router.

Avvio del client

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.
⚠️ Si consiglia di disabilitare le schede di rete virtuali o inutilizzate, altrimenti la connessione RMI potrebbe non funzionare correttamente.

Requisiti di sistema

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;

Compatibilità dell'applicazione

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.

Copyright e licenza

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.


[ENG] Software Engineering A.Y. 2022-2023

Software Engineering project for the 2022-2023 academic year.

Group Components

Project objective


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).

Documentation

UML

JavaDoc

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.

Junit testing

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.

Libraries and plugins

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.

Implemented Functions

Core

  • Complete rule-set available here: MyShelfie rules;
  • Socket connection;
  • RMI connection;
  • Command Line Interface (CLI);
  • Graphical Interface (GUI);

Advanced

Function Implemented
Chat
Multiple games
Persistence
Disconnection resilience

Legend:

  • ✅ : implemented;
  • 🟡 : work in progress;
  • ❌ : not implemented;

Compiling sources

Using precompiled jars (recommended)

The already packaged jars can be found here: jars.

Manual packaging

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.

Execution

Starting a 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;

⚠️ Disable all your virtual and unused NICs otherwise the RMI connection may not work correctly.

Please be sure that the ports are not used by another application and are allowed through your firewall and router.

Starting a client

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.
⚠️ Disable all your virtual and unused NICs otherwise the RMI connection may not work correctly.

System Requirements

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;

Application Compatibility

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.

Copyright and license

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.