Skip to content

Commit

Permalink
feat: final report
Browse files Browse the repository at this point in the history
  • Loading branch information
andrea-acampora authored Sep 2, 2022
2 parents 16a34ca + 773d99d commit 64761ae
Show file tree
Hide file tree
Showing 105 changed files with 5,109 additions and 542 deletions.
48 changes: 26 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,38 @@
# VirSim - Virus Spread Simulator
![workflow-develop badge](https://github.com/VirusSpreadSimulator/PPS-22-Virsim/actions/workflows/build.yml/badge.svg?branch=develop)
<img src="https://github.com/VirusSpreadSimulator/PPS-22-virsim/blob/gh-pages/assets/logo.png?raw=true#gh-dark-mode-only" style="width:80%"></img> \
<img src="https://github.com/VirusSpreadSimulator/PPS-22-virsim/blob/gh-pages/assets/logo_light.png?raw=true#gh-light-mode-only" style="width:80%"></img> \
![workflow-main-badge](https://github.com/VirusSpreadSimulator/PPS-22-Virsim/actions/workflows/build.yml/badge.svg?branch=main)
![scala-version-badge](https://img.shields.io/badge/scala-3.1.1-red)
![sbt-version-badge](https://img.shields.io/badge/sbt-1.6.2-red)
[![ScalaDoc](https://img.shields.io/badge/Scaladoc-link-red)](https://virusspreadsimulator.github.io/PPS-22-virsim/latest/api/) \
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=coverage)](https://sonarcloud.io/summary/new_code?id=VirusSpreadSimulator_PPS-22-virsim)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=bugs)](https://sonarcloud.io/summary/new_code?id=VirusSpreadSimulator_PPS-22-virsim)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=VirusSpreadSimulator_PPS-22-virsim)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=VirusSpreadSimulator_PPS-22-virsim) \
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
<!--
[![SonarCloud Coverage](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=coverage)](https://sonarcloud.io/component_measures/metric/coverage/list?id=VirusSpreadSimulator_PPS-22-virsim)
[![SonarCloud Bugs](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=bugs)](https://sonarcloud.io/component_measures/metric/reliability_rating/list?id=VirusSpreadSimulator_PPS-22-virsim)
[![SonarCloud Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=VirusSpreadSimulator_PPS-22-virsim&metric=vulnerabilities)](https://sonarcloud.io/component_measures/metric/security_rating/list?id=VirusSpreadSimulator_PPS-22-virsim)
-->
[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)

**Virsim** is a Scala-based simulation tool for the spread of a Virus within a population.
**Virsim** is a Scala-based simulation tool for the spread of a Virus within a population. \
You can create your own simulation configuring everything such as the virus or the map of the environment and then Virsim will simulate the progress of the infections inside it. \
Take a look at our [user guide](https://github.com/VirusSpreadSimulator/PPS-22-virsim/blob/main/doc/report/07-user-guide.md) to write your first simulation configuration.

For more informations visit the [Virsim website](https://virusspreadsimulator.github.io/PPS-22-virsim) or the latest API here [![ScalaDoc](https://img.shields.io/badge/Scaladoc-link-red)](https://virusspreadsimulator.github.io/PPS-22-virsim/latest/api/)
For more information visit our [website](https://virusspreadsimulator.github.io/PPS-22-virsim).

## Usage
```
$ git clone https://github.com/VirusSpreadSimulator/PPS-22-virsim
$ cd PPS-22-virsim
$ sbt rootJVM/run
```
or download latest Jar [here](https://github.com/VirusSpreadSimulator/PPS-22-virsim/releases/latest) and then:
Virsim comes in two different versions:
- Desktop Application
- Web Application

### Desktop Application
Download latest Jar [here](https://github.com/VirusSpreadSimulator/PPS-22-virsim/releases/latest) and then:
```
java -jar virsim.jar
```
<!--
### Simulation configuration
TBD(explain DSL)
An example of a configuration file required by the simulator written using the Virsim DSL.
```
You need to provide a valid *Scala* configuration. [Here](https://github.com/VirusSpreadSimulator/PPS-22-virsim/releases/latest/download/configuration.scala) you can find a *Scala* configuration sample.
### Web Application
We have deployed the Web Application in our website so you can try it without install anything. \
You have only to provide a valid *YAML* configuration. [Here](https://github.com/VirusSpreadSimulator/PPS-22-virsim/releases/latest/download/configuration.yml) you can find a *YAML* configuration sample.

```
-->
**Launch a simulation at this [link](https://virusspreadsimulator.github.io/PPS-22-virsim/simulator/).**

## Authors
Developed for Academic purpose by:
Expand Down
9 changes: 1 addition & 8 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,14 @@ lazy val root = crossProject(JSPlatform, JVMPlatform)
scalaJSUseMainModuleInitializer := true,
libraryDependencies ++= Seq("org.scala-js" %%% "scalajs-dom" % "2.2.0")
)
.jvmSettings(
libraryDependencies ++= Seq(
"org.scala-lang.modules" %% "scala-swing" % "3.0.0"
)
)
.jvmSettings()

lazy val aggregate = (project in file("."))
.enablePlugins(ScalaUnidocPlugin)
.enablePlugins(GitHubPagesPlugin)
.enablePlugins(SiteScaladocPlugin)
.aggregate(root.jvm, root.js)
.settings(
name := "PPS-22-Virsim",
ScalaUnidoc / siteSubdirName := "latest/api/",
addMappingsToSiteDir(ScalaUnidoc / packageDoc / mappings, ScalaUnidoc / siteSubdirName)
)

gitHubPagesSiteDir := baseDirectory.value / "target/site"
3 changes: 2 additions & 1 deletion doc/config/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ img {
display: block;
margin-left: auto;
margin-right: auto;
width: 100%;
max-width: 100%;
max-height: 40%;
}

@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
Expand Down
32 changes: 16 additions & 16 deletions doc/process/productBacklog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@

| Priority | Item | Details | Initial Size Estimate | 1 | 2 | 3 | 4 | 5 | 6 |
| -------- | ------------------------------------------------------------ | ------- | --------------------- | ---- | ---- | ---- | ---- | ---- | ---- |
| 1 | Bootstrap e organizzazione del progetto | | 4 | 0 | 0 | 0 | 0 | 0 | |
| 2 | Definizione dell'architettura del sistema | | 8 | 1 | 0 | 0 | 0 | 0 | |
| 3 | Definizione e implementazione del modello del dominio | | 12 | 12 | 11 | 1 | 0 | 0 | |
| 4 | Sviluppo del motore di simulazione | | 15 | 15 | 10 | 5 | 1 | 0 | |
| 5 | Realizzazione GUI JVM-Based | | 11 | 11 | 10 | 6 | 2 | 1 | |
| 6 | Implementazione del modulo per il caricamento della configurazione fornita dall'utente | | 14 | 14 | 14 | 7 | 0 | 0 | |
| 7 | Sviluppo della logica di movimento degli individui | | 7 | 7 | 7 | 7 | 0 | 0 | |
| 8 | Sviluppo della logica di interazione tra gli individui | | 5 | 5 | 5 | 5 | 4 | 0 | |
| 9 | Sviluppo della logica di interazione tra individui e strutture | | 12 | 12 | 12 | 12 | 12 | 0 | |
| 10 | Sviluppo della logica di contagio degli individui | | 15 | 15 | 15 | 14 | 14 | 0 | |
| 11 | Sviluppo della logica per l'aggiornamento dello stato degli individui | | 4 | 4 | 4 | 4 | 4 | 0 | |
| 12 | Sviluppo della logica di interazione dinamica dell'utente con la simulazione | | 10 | 10 | 10 | 10 | 8 | 0 | |
| 13 | Sviluppo del DSL per la configurazione statica della simulazione | | 8 | 8 | 8 | 5 | 1 | 0 | |
| 14 | Monitoraggio real-time della simulazione | | 5 | 5 | 5 | 5 | 4 | 0 | |
| 15 | Sviluppo del sistema di esportazioni dati | | 5 | 5 | 5 | 5 | 4 | 0 | |
| 16 | Realizzazione GUI JS-Based | | 4 | 4 | 3 | 3 | 3 | 3 | |
| 1 | Bootstrap e organizzazione del progetto | | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | Definizione dell'architettura del sistema | | 8 | 1 | 0 | 0 | 0 | 0 | 0 |
| 3 | Definizione e implementazione del modello del dominio | | 12 | 12 | 11 | 1 | 0 | 0 | 0 |
| 4 | Sviluppo del motore di simulazione | | 15 | 15 | 10 | 5 | 1 | 0 | 0 |
| 5 | Realizzazione GUI JVM-Based | | 11 | 11 | 10 | 6 | 2 | 1 | 0 |
| 6 | Implementazione del modulo per il caricamento della configurazione fornita dall'utente | | 14 | 14 | 14 | 7 | 0 | 0 | 0 |
| 7 | Sviluppo della logica di movimento degli individui | | 7 | 7 | 7 | 7 | 0 | 0 | 0 |
| 8 | Sviluppo della logica di interazione tra gli individui | | 5 | 5 | 5 | 5 | 4 | 0 | 0 |
| 9 | Sviluppo della logica di interazione tra individui e strutture | | 12 | 12 | 12 | 12 | 12 | 0 | 0 |
| 10 | Sviluppo della logica di contagio degli individui | | 15 | 15 | 15 | 14 | 14 | 0 | 0 |
| 11 | Sviluppo della logica per l'aggiornamento dello stato degli individui | | 4 | 4 | 4 | 4 | 4 | 0 | 0 |
| 12 | Sviluppo della logica di interazione dinamica dell'utente con la simulazione | | 10 | 10 | 10 | 10 | 8 | 0 | 0 |
| 13 | Sviluppo del DSL per la configurazione statica della simulazione | | 8 | 8 | 8 | 5 | 1 | 0 | 0 |
| 14 | Monitoraggio real-time della simulazione | | 5 | 5 | 5 | 5 | 4 | 0 | 0 |
| 15 | Sviluppo del sistema di esportazioni dati | | 5 | 5 | 5 | 5 | 4 | 0 | 0 |
| 16 | Realizzazione GUI JS-Based | | 4 | 4 | 3 | 3 | 3 | 3 | 0 |

3 changes: 3 additions & 0 deletions doc/process/sprints/sprint-6/productBacklogRefinement.md
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
# Product Backlog Refinement - Sprint 6

Durante lo Sprint 6, il team ha terminato lo sviluppo della prima versione del simulatore.
Quindi l'intervento principale durante questo product backlog refinement è stato quello di controllare e quindi azzerare gli impegni residui di tutte le attività completate.
16 changes: 8 additions & 8 deletions doc/process/sprints/sprint-6/sprintBacklog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

| Product Backlog Item | Sprint Task | Volunteer | Initial Estimate of Effort | 1 | 2 | 3 | 4 | 5 |
| ------------------------------------------- | ------------------------------------------------------------ | --------- | -------------------------- | ---- | ---- | ---- | ---- | ---- |
| Realizzazione GUI JVM-Based | raffinamento grafica | | 2 | 2 | 0 | 0 | | |
| | sviluppo della parte di log per le azioni dinamiche | | 3 | 1 | 0 | 0 | | |
| Realizzazione GUI JS-Based | sviluppo della schermata dedicata all'inizializzazione della simulazione | | 2 | 2 | 0 | 0 | | |
| | sviluppo della schermata di simulazione | | 4 | 3 | 0 | 0 | | |
| Configurazione dei parametri di simulazione | configurazione dei parametri di simulazione | | 2 | 2 | 2 | 2 | | |
| Prima release | aggiunta dello stile al report generato da CI | | 4 | 4 | 4 | 0 | | |
| | test del sistema di release automatico | | 4 | 4 | 4 | 2 | | |
| | prima release | | 1 | 1 | 1 | 1 | | |
| Realizzazione GUI JVM-Based | raffinamento grafica | | 2 | 2 | 0 | 0 | 0 | 0 |
| | sviluppo della parte di log per le azioni dinamiche | | 3 | 1 | 0 | 0 | 0 | 0 |
| Realizzazione GUI JS-Based | sviluppo della schermata dedicata all'inizializzazione della simulazione | | 2 | 2 | 0 | 0 | 0 | 0 |
| | sviluppo della schermata di simulazione | | 4 | 3 | 0 | 0 | 0 | 0 |
| Configurazione dei parametri di simulazione | configurazione dei parametri di simulazione | | 2 | 2 | 2 | 2 | 2 | 0 |
| Prima release | aggiunta dello stile al report generato da CI | | 4 | 4 | 4 | 0 | 0 | 0 |
| | test del sistema di release automatico | | 4 | 4 | 4 | 2 | 1 | 0 |
| | prima release | | 1 | 1 | 1 | 1 | 1 | 0 |
4 changes: 4 additions & 0 deletions doc/process/sprints/sprint-6/sprintRetrospective.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# Sprint Retrospective

Alla luce della terminazione del progetto, durante l'ultimo Sprint, il team si è ritrovato e ha messo sul tavolo tutti gli aspetti positivi e negativi che hanno caratterizzato il periodo di sviluppo al fine di ottenere feedback e suggerimenti rispetto all'ambiente di lavoro in modo da migliorare le performance anche nei progetti futuri.

L'intero team è convinto circa i vantaggi derivanti dall'utilizzo di un processo Scrum-based e di un approccio che prevede un importante processo di Continuous Integration.

4 changes: 4 additions & 0 deletions doc/process/sprints/sprint-6/sprintReview.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# Sprint Review

Durante l'ultima Sprint Review, si è riunito tutto il team assieme al Product Owner per mostrare al committente il risultato finale del lavoro svolto. In particolare sono state mostrate tutte le funzionalità sviluppate ed una preview della guida utente che verrà resa disponibile agli utenti finali.

Il lavoro svolto è stato ulteriormente validato confrontandolo con i requisiti raccolti nelle fasi iniziali assieme al committente.
Il committente ha approvato il progetto, perciò lo sprint si ritiene concluso con successo.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions doc/report/00-init.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,12 @@

## Introduzione

Il progetto consiste nella realizzazione di un software che simuli la diffusione di un virus all'interno di una popolazione di individui, chiamati anche entità, i quali interagiscono in un ambiente limitato.
Il simulatore permette all'utente di generare uno scenario personalizzato nel quale vengono definite tutte le caratteristiche delle entità, del virus e delle strutture, le quali potranno essere configurate e disposte emulando il più possibile scenari reali.
Ciascun individuo ha una serie di caratteristiche tra cui età, stato di salute e immunità sviluppata rispetto al virus che vengono prese in considerazione all'interno della simulazione e contribuiscono a definire i contagi.
L'obiettivo è simulare le interazioni in un contesto pseudo-reale nel quale gli individui durante il giorno si muovono liberamente all'esterno entrando e uscendo dalle strutture con la possibilità, di notte, di fare ritorno alla propria abitazione.
Il contagio avviene per contatto con individui infetti ed è influenzato dalle caratteristiche della struttura nel caso in cui l'individuo si trovi al suo interno. La gravità della malattia da esso derivata comporta un calo dello stato di salute che può portare alla morte dell'entità.
Tra le strutture configurabili dall'utente vi è una particolare tipologia, l'ospedale, dedicata alla cura degli individui malati. Inoltre, durante la simulazione l'utente ha la possibilità di vaccinare una percentuale della popolazione, di chiudere un determinato gruppo di strutture o inserire l'obbligo di portare la mascherina.
È possibile visualizzare l'intera simulazione mediante interfaccia grafica e tramite l'ausilio di grafici monitorare l'andamento dei dati aggregati e dei parametri principali. Questi ultimi dati vengono inoltre esportati in un foglio di calcolo al fine di poterli consultare al termine della simulazione.
Il software viene fornito sia come applicativo desktop che come web app.
<div style="page-break-after: always;"></div>
Loading

0 comments on commit 64761ae

Please sign in to comment.