Info
Una biblioteca intende creare un sistema software web che soddisfi i seguenti requisiti funzionali:
- Ricerca dei Libri: Gli utenti devono poter cercare i libri disponibili nel catalogo della biblioteca e visualizzare i prestiti, anche precedenti, attraverso un’interfaccia grafica.
- Gestione degli Utenti: Il sistema deve permettere la registrazione, l’autenticazione e la gestione delle informazioni degli utenti.
- Prestito dei Libri: Gli utenti devono poter prendere in prestito i libri, uno alla volta, e il sistema deve gestire le date di prestito e restituzione. I libri possono essere cartacei o digitali. Se digitali devono poter essere visualizzabili online per il periodo del prestito.
- Notifiche: Gli utenti devono ricevere notifiche riguardanti i prestiti, come promemoria per la restituzione dei libri.
- Memorizzazione dei Dati: Tutti i dati rilevanti, come informazioni sugli utenti, sui libri e sui prestiti, devono essere memorizzati in modo sicuro e accessibile.
Esercizio 1
<aside>
❓
Progettare l’architettura di tale sistema, ipotizzando una architettura a microservizi, attraverso un Deployment Diagram UML descrivendo brevemente come ciascun componente del sistema interagisce con gli altri per fornire queste funzionalità.
</aside>

Esercizio 2
<aside>
❓
Creare il glossario attraverso un class diagram UML. Si facciano le debite assunzioni fornendo una motivazione ove necessario e si inseriscano in ogni classe gli attributi principali.
</aside>

Esercizio 3
<aside>
❓
Definire i test Black Box per la seguente funzione, usando ed esplicitando equivalence classes e boundary conditions. La funzione riceve un array di number e restituisce un number con il numero che appare più frequentemente nell’array (se ci sono più numeri con la stessa frequenza, restituisce quello che appare per primo nell’array) oppure undefined se l’array è vuoto.
Attenzione che in Typescript, number può contenere anche numeri con la virgola.
function findFrequency(numbers: number[]): number | undefined
</aside>
Criteri
- Lunghezza dell’array: L’array può essere vuoto o contenere uno o più elementi.
- Duplicazione degli elementi: Gli elementi possono essere unici o duplicati.
- Frequenza: L’array può avere un numero con una frequenza singola o più numeri con la stessa frequenza.
- Valore dell’elemento del vettore.