Info

Una biblioteca intende creare un sistema software web che soddisfi i seguenti requisiti funzionali:

  1. 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.
  2. Gestione degli Utenti: Il sistema deve permettere la registrazione, l’autenticazione e la gestione delle informazioni degli utenti.
  3. 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.
  4. Notifiche: Gli utenti devono ricevere notifiche riguardanti i prestiti, come promemoria per la restituzione dei libri.
  5. 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>

Deployment diagram.svg

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>

Class diagram.svg

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