Skip to content
michelezucchelli edited this page Jun 7, 2022 · 23 revisions

Sezione introduttiva

Team members:

  1. Mirco Bisoffi, 209683, mircoloo;

  2. Samuele Trainotti, 209397, SamueleTrainotti;

  3. Michele Zucchelli, 208977, michelezucchelli;

Project idea:

L’idea del progetto è quella di offrire un servizio online di prenotazione degli appuntamenti di manutenzione della propria bicicletta presso un’officina specializzata.

Link:

Sezione generale:

Organizzazione Repository:

La repository è divisa in varie cartelle

  • server.js (file): Il file principale dove il server gestisce le richieste e le delega alle varie routes
  • Routes (directory): Contiene tutti i file node per la gestione delle richieste
  • Views (directory): contiene i file ejs (html) in risposta agli utenti
  • .gitignore (file): Il file che consente di non caricare alcuni file e cartelle durante i push su git (.env, node_modules)
  • .env (file): file in cui vengono conservate le variabili d’ambiente utili allo sviluppo dell’applicazione
  • package-json (file): contiene in formato json le informazioni dei moduli installati tramite il gestore di pacchetti npm

Strategia di branching:

Il repository è suddiviso in 7 branch: il branch main/master, nel quale verranno pushate le release funzionanti e principali del progetto una volta testate, e gli altri 6 relativi alle user story.

  1. Autenticazione (mircoloo): codice relativo la gestione dell’accesso al sito, comprende il login e la registrazione di un nuovo utente (User story 1 e 2);
  2. Calendario utente (michelezucchelli): codice relativo la pagina di visualizzazione del calendario per gli utenti e la creazione di una nuova prenotazione (User story 3);
  3. Calendario meccanico (SamueleTrainotti): codice relativo la pagina di visualizzazione del calendario per il gestore dell’officina (User story 4);
  4. Profilo officina (mircoloo): codice relativo la pagina di visualizzazione del profilo dell’officina (User story 5);
  5. Profilo utente (SamueleTrainotti): codice relativo la pagina di visualizzazione del profilo dell’utente (User story 6);
  6. Storico prenotazioni (michelezucchelli): codice relativo la pagina di visualizzazione dello storico delle prenotazioni del singolo utente (User story 7)

Product backlog

https://docs.google.com/spreadsheets/d/1tB4FdPGhCA9OToDhxVgSuypMYsd8dEjFdWlIK1OTCP4/

Member Login Registrazione Cal Utente Cal meccanico Profilo meccanico Profilo utente Storico prenotazioni
209683 X X       X  
208977     X   X    
209397       X     X

 


Definizione di Done:

  • Avere un sistema di autenticazione e di creazione dell’account funzionante
  • Permettere la creazione e la cancellazione di prenotazioni da parte dell’utente
  • Fornire adeguate interfacce API
  • Il codice è stato adeguatamente testato
  • Il codice è adeguatamente commentato
  • Fornire la documentazione del progetto

Sezione Sprint #1:

Goal

Gli obiettivi principali del primo sprint sono:

  • Creare la repository git e renderla remota su gitHub, condivisa tra i membri del progetto
  • Iniziare lo sviluppo dell'applicazione, creando una base per quello che sarà lo sviluppo completo nello sprint finale
  • Ripartire il lavoro tra i componenti del gruppo, ognuno dei quali contribuirà all’aggiornamento della repository tramite commitments
  • Creare la documentazione
  • Effettuare i primi test sul codice sviluppato

Sprint planning:

Il team ha pianificato i meeting per i giorni successivi, ha assegnato le parti e i ruoli, ed ha compilato il seguente documento https://docs.google.com/spreadsheets/d/1bCOJizk6q2gFjz_hiUIBZWgxrhlkUtDgFX2FD8Ub9eU/

Test cases:

https://docs.google.com/spreadsheets/d/1fImK8UhUtimou9DObeRLy8ySwZfU7dPxKbQNFWX13R4/

Sprint review:

Data Commento Problematiche riscontrate
12/05    
13/05    
14/05 Assegnazione tasks ai membri del gruppoCreazione repository GIT e impostazione della documentazione  
15/05 Confronto sull’impostazione del progetto e inizio sviluppo design API Difficoltà nei primi tentativi di branching e merging
16/05 Discussione sul metodo REST e possibile implementazione nel progettoDiscussione sulla prima prova di UI  
17/05 Aggiornamenti sull’implementazione API  
18/05 Fine base implementazione APIAssegnamento prossimi tasks al gruppo  
19/05 Discussione sulla fine della prima implementazione API REST Controllo generale del lavoro svolto fino’ora
20/05    
21/05 Aggiornamenti sullo sviluppo backend e frontendCollegamento database MongoDB  
22/05 Fine della prima versione dell’applicazioneDiscussione sui vari testcases  
23/05 Fine documentazioneRevisione generale del progetto  


Product backlog refinement:

Il team ha analizzato nuovamente il product backlog, ridefinendo alcuni aspetti, principalmente relativi il campo Estimate.

Sprint retrospective:

Durante lo sprint, il team è riuscito a cooperare, scambiarsi opinioni e aiutarsi a vicenda durante i meetings svolti, discutendo i lavori svolti singolarmente dai membri del gruppo, soprattutto grazie alla buona gestione della ripartizione dei lavori e all’organizzazione dei meetings e alle strategie di branching del progetto. Riuscendo così a raggiungere così gli obiettivi precedentemente stabiliti e creando una buona base per quello che sarà lo sprint successivo.

ASPETTI POSITIVI ASPETTI NEGATIVI SOLUZIONI
Ripartizione dei tasks per ogni membro    
Gestione della repository git    
  Impiegato molto tempo per imparare i nuovi strumenti Integrare dalle slide, anche informazioni raccolte dal web
Collaborazione di tutto il team    
Imparate nuove competenze    

Sezione Sprint #2:

Goal

Gli obiettivi principali del secondo sprint sono:

  • Continuare lo sviluppo dell’applicazione web iniziata nello sprint #1
  • Sviluppare i casi di test per l’applicazione web
  • Aggiornare la documentazione
  • Valutare eventuali modifiche e ridefinizioni degli aspetti principali del progetto

Sprint planning:

Il team ha continuato ad utilizzare la strategia adottata per il primo sprint.

https://docs.google.com/spreadsheets/d/1bCOJizk6q2gFjz_hiUIBZWgxrhlkUtDgFX2FD8Ub9eU/

Test cases:

https://docs.google.com/spreadsheets/d/1fImK8UhUtimou9DObeRLy8ySwZfU7dPxKbQNFWX13R4/

Sprint review:

Data Commento Problematiche riscontrate
24/05 Organizzazione e pianificazione del lavoro da svolgere nei giorni futuri: casi di test, merging dei branch, documentazione ed eventuale ridefinizione di alcuni aspetti dell'applicazione .  
25/05 Analisi e confronto su quanto sviluppato individualmente.  
26/05  
27/05 Analisi e confronto su quanto sviluppato individualmente, riepilogo e pianificazione del lavoro da svolgere nei giorni futuri.
28/05  
29/05 Discussione e analisi sui casi di test. Difficoltà nell'implementazione dei casi di test
30/05
31/05 Discussione e analisi sui casi di test. Difficoltà nell'implementazione dei casi di test
01/06 Discussione e analisi sui casi di test. Difficoltà nell'implementazione dei casi di test
02/06  
03/06 Discussione e analisi sui casi di test.  
04/06 Revisione del lavoro svolto. Problematica delete prenotazione. Cercando anche online, si è scelto di usare post
05/06 Discussione strategie di merging.  
06/06 Revisione del lavoro svolto.  
07/06 Revisione del lavoro svolto.  


Product backlog refinement:

Il team ha rivalutato difficoltà e tempo della parte dei casi di test

Sprint retrospective:

Come per lo scorso sprint, il team è riuscito a cooperare, scambiarsi opinioni e aiutarsi a vicenda durante i meetings svolti, discutendo i lavori svolti singolarmente dai membri del gruppo, soprattutto grazie alla buona gestione della ripartizione dei lavori e all’organizzazione dei meetings e alle strategie di branching del progetto. La problematica principale è stata il tempo: tra tirocini, altri progetti e preparazione agli esami è stato complicato coordinarsi e trovare il tempo per i meeting.

ASPETTI POSITIVI ASPETTI NEGATIVI SOLUZIONI
Buona organizzazione e suddivisione/ripartizione del carico di lavoro    
Cooperazione e collaborazione all'interno del team    
  Difficoltà nel trovare orari adatti a tutti per i meeting a causa di altri impegni universitari
Imparate nuove competenze    

Sezione finale

Diagramma infrastrutturale del deploy finale:

diagram_infrastr

CI/CD:

Build Status

Stack tecnologico utilizzato:

Linguaggi usati:

  • HTML5
  • CSS
  • Javascript

Framework e strumenti:

  • Node js
  • Npm
  • Mongodb
  • ejs
  • Heroku
  • Travis

Moduli npm:

  • bcrypt
  • bcryptjs
  • body-parser
  • connect-mongodb-session
  • cookie-parser
  • ejs
  • express-ejs-layouts
  • express-session
  • jsonwebtoken
  • mongoose
  • semver
  • dotenv
  • session

Conclusioni

Questo progetto ci ha permesso di:

  • Imparare metodologie agili per lavorare in team
  • Entrare nel vivo dello sviluppo di un software articolato
  • Acquisire nuove competenze tecniche