Skip to content

Commit

Permalink
new changes
Browse files Browse the repository at this point in the history
  • Loading branch information
igor-lirussi committed Oct 6, 2021
1 parent 85a3e66 commit 903d4da
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 2 deletions.
31 changes: 31 additions & 0 deletions Tex/DetailDesign.tex
Original file line number Diff line number Diff line change
@@ -1,2 +1,33 @@
% -*- root: ../main.tex -*-
\chapter{Design di Dettaglio}
\section{Target Users}
\section{Scenario d'uso}
\section{Frontend}
\subsection{A ogni sottosezione descrivere una pagina}
\section{Backend}
\subsection{Risorse}
Il backend è stato strutturato secondo le seguenti risorse:
\begin{itemize}
\item auth - risorsa per registrare, autenticare gli utenti, cancellarli, recuperarne le
informazioni o aggiornarle.
\item feedback - risorsa per gestire le recensioni degli utenti sui vari provider meteo.
\item location - risorsa per cercare di recuperare informazioni di localizzazione di una determinata città
\item station - risorsa per gestire le varie stazioni meteo

\item openweathermap - risorsa per gestire le richieste dall'api openweathermap e recuperare le previsioni meteo desiderate
\item troposphere - risorsa per gestire le richieste dall'api troposphere e recuperare le previsioni meteo desiderate
\item users - risorsa per recuperare i feedbacks e le stazioni di un determinato utente.
\item weatherProvider - risorsa per recuperare il meteo dalle stazioni
\end{itemize}
\subsection{Autenticazione}
E stato deciso di utilizzare il sistema di autenticazione a token JWT, firmati `
dal backend.
Nel token è inserito l'id dell'utente, quindi tutte le operazioni che lo
richiedono lo recuperano da esso.
Quando un utente esegue il login correttamente, il backend invia al frontend
il token da usare e quest’ultimo lo inserisce nel header x-access-token di tutte
le richieste che lo richiedono.
Questo flusso è facilmente integrabile nel flusso delle richieste e delle comunicazioni tra il backend e il frontend.

\section{Prodotto finale}
TODO: Screen di esempio dell'applicazione
5 changes: 3 additions & 2 deletions Tex/DevProcess.tex
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@ \section{Metodologia di Sviluppo}

\section{Gestione di Progetto}
In questa sezione viene dettagliatamente spiegato come il progetto è stato organizzato. Gli strumenti e tecnologie con cui è scelto di procedere verranno elencati assieme alla descrizione della metodologia.
\paragraph{Gant Chart}
Da inizio progetto abbiamo stilato un diagramma di Gant, uno strumento utile per la pianificazione dei progetti. Attraverso una panoramica dei compiti programmati, ci ha permesso di venire a conoscenza dei compiti e delle rispettive scadenze.
\paragraph{Gantt Chart}
A partire da inizio progetto abbiamo stilato un diagramma di Gantt, uno strumento utile per la pianificazione dei progetti. Attraverso una panoramica dei compiti programmati, ci ha permesso di venire a conoscenza dei compiti e delle rispettive scadenze.

\paragraph{Licensing} P

\paragraph{Versioning}
Per il versioning ci siamo avvalsi di Github.

\paragraph{GitHub Projects Management}
descrizione GitHub Projects boards
Expand Down
6 changes: 6 additions & 0 deletions Tex/LargeScaleDeployment.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,9 @@
% In questa sezione va discussa, eventualmente con l'ausilio di opportuni diagrammi (componenti, deployment), l'evoluzione del progetto presentato immaginando che venga adottato su larga scala. I dettagli qui esposti devono quindi astrarre dalle specifiche dell'elaborato qualora l'implementazione sia stata focalizzata su uno scenario isolato. A titolo d'esempio, qualora applicabile, devono essere evidenziate le criticità che si potrebbero incontrare e devono essere proposte soluzioni tipiche in contesti di cloud architecture per garantire un'adeguata resilienza, in termini di availability e scalability del sistema.

\chapter{Analisi di Deployment}
\section{Avvio dell'applicazione}
Per dispiegare tutti i componenti utili per l’applicazione è stato impiegato il
gestore di container Docker e la sua estensione Docker-compose.
Per ciascun componente è stato creato il file di istruzioni per creare l’immagine
e utilizzando docker-compose è stato possibile avviare tutti i container utilizzando un solo comando.
Basterà infatti un unico comando per avviare l'intera applicazione : \textbf{[sudo] docker-compose up}
16 changes: 16 additions & 0 deletions Tex/TestingAndPerformance.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,19 @@
% Esporre lo stato di funzionamento effettivo del sistema progettato ad elaborato concluso. Per ciascuna delle funzionalità salienti devono essere tabellate e discusse le performance riscontrate mediante opportuni test eseguiti in fase di validazione del progetto. I tempi di esecuzione/comunicazione devono essere accompagnati dalle caratteristiche dell'hardware sul quale è eseguito il software. Qualora l'elaborato includa algoritmi innovativi, indicarne la complessità computazionale (avendo cura di esporre lo pseudo codice nella sezione Implementazione).

\chapter{Testing e Performance}

Lo sviluppo delle applicazioni web a livello professionale richiede la qualità e la robustezza del codice che è stato prodotto. Per avere delle metriche concrete sulla qualità
del prodotto, è necessario coprire il progetto di test, sia automatici che manuali

\section{Unit Test}
Le parti più importanti della logica di business sono stati testati con gli unit test per migliorarne la robustezza e l'affidabilità
\subsection{Backend}
Il backend utilizza lo testing stack Mocha + Chai + Sinon.
Mocha è il framework testing ricco e semplice che consente di creare facilmente
gli unit test eloquenti.
Chai è una libreria di assertions BDD/TDD che consente di creare le asserzioni
multi-paradigma per i test. Tali asserzioni rendono i tests più leggibili e forniscono messaggi di errore migliori in caso di errori.
Sinon è la libreria per creare e gestire i test spies, stubs e mocks da utilizzare
negli unit test. Nel nostro caso è stato utilizzato soltanto per simulare l'invio delle email.

Durante lo sviluppo del backend è stata adoperata una collection Postman per testare tutte le varie chiamate al server.

0 comments on commit 903d4da

Please sign in to comment.