DOIT , progetto realizzato in Flutter e Spring-Boot per il corso di laurea L-31 presso Università di Camerino, nell’anno accademico 2020/2021, realizzato dagli studenti Alessandra Lerteri Caroletta, Luigi Amura e Lorenzo Tanganelli per gli esami di Ingegneria del Software e Progettazione di Applicazioni Web e Mobile seguendo i canoni di sviluppo proposti.
- Panoramica e funzionalità di base
- Tecnologie utilizzate durante lo sviluppo
- Manuale utente
- Iterazioni future
- Autori
Lo scopo dell’applicativo proposto è quello di promuovere lo svolgimento collaborativo di progetti e facilitarne l’inserimento di progettisti sulla base delle loro competenze.
Il sistema vuole inoltre realizzare una vetrina di progetti pubblicati per dare la possibilità a tutti gli utenti di vedere quali sono attualmente proposti e quali lo sono stati.
I ruoli ricoperti dagli utenti nell’applicativo sono : proponenti di progetto, progettisti ed esperti.
Ogni progetto proposto, ha una data di inizio e una di fine candidature, periodo di tempo durante il quale i progettisti hanno la possibilità di candidarsi o di essere invitati a collaborare.
Il proponente inoltre, per ogni progetto può specificare se quest’ultimo ha abilitate le valutazioni e, in caso affermativo, gli esperti (sempre sulla base delle loro competenze) possono rilasciare valutazioni al progetto stesso o, se presente, alla cordata che lo porterà a compimento.
I proponenti di progetto sono enti che vogliono inserire proposte di progetto ed avere la possibilità di invitare progettisti a collaborare al progetto.
I progettisti sono persone o enti che hanno specifiche competenze, il loro scopo è quello di partecipare a progetti.
Questi ultimi possono partecipare ad un progetto solamente se hanno almeno una delle competenze richieste per il progetto.
Gli esperti sono persone che possono valutare proposte di progetto oppure i team che li sviluppano.
Gli utenti registrati come persone fisiche possono essere dei progettisti e/o degli esperti, mentre gli utenti registrati come enti possono ricoprire il ruolo di proponente di progetto e/o di progettista.
Il lato Frontend dell’applicativo si rivolge al mondo iOS e Android ed è stato sviluppato mediante il framework Open Source Flutter e il relativo linguaggio di programmazione Dart.
Per separare lo stato dell’applicazione dall’interfaccia utente e per gestire la ricostruzione dell’albero dei widget in base ai cambiamenti di stato è stato implementato il pacchetto Provider.
Il lato Backend del sistema è stato sviluppato in Java con il supporto del framework Spring-Boot a cui è stato affidato il compito di scrivere e gestire le API Rest, anche per quanto riguarda la sicurezza.
Per la persistenza dei dati ci si affida al database non relazionale MongoDB Atlas.
Per rendere più agevole la scrittura del codice è stata implementata la libreria java Lombok, così da poter scrivere specifici metodi attraverso annotazioni.
Per fornire credenziali di accesso tra client e server è stato utilizzato inizialmente il metodo “Basic access authentication”, il quale sfrutta l’header delle richieste HTTP per trasmettere ID e password codificati in Base64.
In una successiva iterazione si è deciso di rendere più sicura la nostra applicazione e di implementare lo standard dei JWT (JSON Web Token).
La modellazione del sistema è stata fatta secondo il processo iterativo ed incrementale Unified Process.
Nella cartella DOCUMENTAZIONE si possono osservare i modelli sviluppati e come si è proceduto durante le varie iterazioni del processo.
Ogni utente, in base al ruolo con cui si è registrato, visualizzerà una schermata personalizzata e potrà compiere azioni diverse.
- Il Proponente di progetto potrà:
- Creare nuovi progetti e successivamente modificarli.
- Accedere alla lista dei progetti da lui proposti.
- Visualizzare le candidature arrivategli dai progettisti e per ognuna di esse può scegliere di accettare o rifiutare la collaborazione.
- Visualizzare gli inviti mandati a progettisti e gli inviti arrivategli dai progettisti (enti) per far partecipare, ad un suo progetto, un progettista (persona).
- Per ogni invito arrivatogli da un progettista (ente) può scegliere di accettare o rifiutare la collaborazione del progettista (persona).
- Il Progettista potrà:
- Candidarsi ad un progetto
- Visualizzare la lista delle candidature inoltrate
- Visualizzare la lista di inviti ricevuti a partecipare ad un progetto
- Visualizzare la lista di inviti inoltrati a progettisti (persone) per partecipare ad un progetto (opzione disponibile solo nel caso in cui il progettista sia un ente)
- Rispondere a inviti ricevuti
- Visualizzare la lista dei progetti a cui si partecipa o si è partecipato
- Visualizzare la lista delle valutazioni ricevute
- L’ Esperto potrà:
- Valutare un progetto
- Valutare i collaboratori di un progetto
- Visualizzare la lista di valutazioni rilasciate a progetti
- Visualizzare la lista di valutazioni rilasciate a team
Nella cartella SCREEN APP si possono vedere alcune schermate che differenziano i vari utenti.
Tutte le operazioni che riguardano l’invio di inviti, l’invio di candidature e il rilascio di valutazioni, vengono effettuate sulla base della corrispondenza delle competenze dell’utente con quelle del progetto su cui si vuole eseguire una determinata azione.
Un utente non registrato potrà solamente visualizzare i progetti pubblicati, ricercarli e visualizzare e ricercare i profili dei vari utenti.
Un qualsiasi utente registrato potrà, oltre alle azione disponibili all'utente non registrato, creare dei specifici tag che non sono presenti nel sistema.
N.B. le valutazioni rilasciate sono anonime in quanto non è visibile il nome dell’esperto che l’ha rilasciata.
Il profilo dell’esperto non è visibile agli utenti.
Nelle successive iterazioni è prevista l'aggiunta delle notifiche per gli utenti.
Potranno essere inviate delle notifiche quando si riceve una nuova candidatura ad un progetto, un nuovo invito a collaborare, o una valutazione.
L'aggiunta di questo nuovo meccanismo permetterà una più facile interazione con l'app in quanto si verrà avvisati in tempo reale delle novità più rilevanti del proprio profilo (o del propio progetto).
Si prevede anche l'introduzione dell'avatar per l'utente: chi è registrato all'applicaione potrà aggiungere alle proprie informazioni una foto.
In ultimo è pianificato l'inserimento per la parte riguardante le statistiche.
Ogni utente registrato potra vedere sia statistiche globali (quali sono ad esempio gli ambiti di applicazione -tag- in cui ci sono più progetti) che statistiche singole, proprie ( ad esempio vedere quanti e in quali progetti ha collaborato nell'ultimo anno).