BiteBook
Questa applicazione permette la prenotazione di chef per eventi privati.
L'utente sarà in grado di selezionare lo chef tra quelli presenti in un elenco riportante tutti gli chef presenti nella città inserita. Il cliente Potrà selezionare lo chef in base al suo stile di cucina e alle specializzazioni che quest'ultimo possiede e i menu offerti. Il sistema bloccherà in automatico la prenotazione qualora qualche piatto nel menu selezionato conterrà allergeni presenti nella lista delle allergie registrate dall'utente per lui e per i suoi ospiti, assicurando così un utilizzo sicuro dell'applicazione
Lo chef potrà vedere nelle sue schermate la lista delle richieste di servizio che le sono state effettuate con i relativi dettagli, tramite i quali potrà decidere se accettare o meno la richiesta di servizio
Programma
Il seguente video illustra brevemente il funzionamento del programma realizzato

Realizzazione
Di seguito sono elencate tutte le fasi che sono state seguite per progettare l'applicazione
Requisiti
La progettazione di questa applicazione ha inizio con la fase di analisi dei requisiti, sia funzionali che non. In questa fase si è simulato quello che può essere un interazione di scambio tra progettista e cliente.


Storyboards
Sono state realizzate delle storyboards per guidare il programmatore e il progettista a comprendere meglio quello che poi sarà il flusso di esecuzione.
Il programma è dotato di due GUI differenti; questo è stato possibile grazie alla separazione tra la logica grafica e la logica applicativa.


Progettazione
In questa fase si procede a tradurre le specifiche e i requisiti dell'applicazione nei diagrammi UML che andranno a descrivere la struttura e il comportamento del nostro programma.


Eccezioni
All'interno del nostro codice sono state definiti diversi tipi di eccezioni, suddivise in base al loro livello di astrazione dell'errore e alla tipologia di errore o situazione che segnalano.
Testing
Qui siamo andati a verificare il corretto funzionamento dei metodi critici per la nostra applicazione, andandoli a testare in particolare nei casi limite e verificando che il risultato atteso e quello ottenuto combaciassero.


Analisi
In quest'ultima fase si è eseguita un'analisi statica del codice grazie allo strumento SonarCloud. Questo ci permette di rilevare e correggere le issues, evitando così futuri problemi di funzionalità e affidabilità del programma


Conclusioni finali
La realizzazione di questo progetto mi ha fornito le basi per la corretta progettazione di un software ingegnerizzato per essere facilmente manutenibile ed evolvibile, questo è stato possibile grazie all'utilizzo del principio di singola responsabilità, l'applicazione dei pattern strutturali per la risoluzione di problemi ricorrenti nella progettazione e delle best practices consolidate.