Skip to content

Progetto per l'esame di Ingegneria del Software a.a 2022/2023

Notifications You must be signed in to change notification settings

albinsopaj/Loyalty_Platform

Repository files navigation

logo del progetto




Il progetto Loyalty Platform è stato realizzato in Java con il supporto dei framework SpringBoot e Vue JS per il corso di Laurea Triennale in Scienze e Tecnologie Informatiche L-31 presso l'Università di Camerino, nell'anno accademico 2022/2023 dagli studenti Alessandro Maric, Klea Pici e Albin Sopaj, per gli esami di Ingegneria del Software (IdS) e Programmazione di Applicazioni Web e Mobili (PAWM), utilizzando le tecnologie mostrate nella sezione Tecnologie Utilizzate

Indice

  1. Panoramica e funzionalità
  2. Processo di Sviluppo
  3. Tecnologie Utilizzate
  4. Iterazioni
  5. Autori

Panoramica generale


Lo scopo dell’applicativo proposto è quello di realizzare un'applicazione che permetta alle aziende, ai negozi e a tutte le attività commerciali di aumentare il tasso di fidelizzazione, ritenere i clienti i acquisirne di nuovi. I ruoli ricoperti dagli utenti nell’applicativo sono: Utente Non-Registrato, Utente Registrato, Cliente Registrato, Titolare, Manager e Cassiere.

  • L'Utente Registrato rappresenta un'entità/account registrata/o all'interno della piattaforma. Esso avrà un ruolo che descrive i permessi necessari che l'utente possiede all'interno della piattaforma. Tali permessi indicano le funzionalità e le limitazioni che ciascun utente potrà effetuare.

  • Il Cliente Non-Registrato rappresenta un cliente che ancora non si è registrato/a alla piattaforma.

  • Il Cliente Registrato è colui che si iscrive a un programma fedeltà per usufruire dei servizi di fidelizzazione e scontistica offriti da un'azienda o negozio.

  • Un Owner rappresenta un titolare del negozio o dell'azienda, ed è colui che decide i parametri della campagna e successivamente anche la creazione dei permessi, dei programmi fedeltà e invitare altri esercenti.

  • Il Manager è colui che gestisce gli clienti (i.e aggiorna le loro informazioni), crea promozioni e crea messaggi pesonalizzati.

  • Il Cashier è colui che gestisce la cassa e convalida gli acquisiti effettuati dai clienti.

  • L'Amministratore si occupa di gestire la piattaforma nel suo complesso, bensi essa funzioni in modo automatico, un amministratore può effettuare alcune modifiche manuali all'interno della piattaforma

  • La Company (noto anche come Azienda) è interessata ad usufruire della piattaforma per offrire programmi fedeltà ai priori clienti.

  • Il Modulo di Marketing rappresenta un'entità esterna che interagisce direttamente con la piattaforma di fidelizzazione. Quando i clienti vanno ad acquistare prodotti o servizi online, avranno due possibilità: possono usufruire dei punti correnti se ne sono in possesso o possono acquistare senza punti, e dopo l'acquisto verranno accreditati dei punti in base a quanto ha speso.

  • Il Cliente una volta autenticato potrà visualizzare il suo profilo, visualizzare la sua tessera digitale e può anche lasicare una recensione su un programma fedeltà a cui è stato aderito.

  • Il Titolare una volta autenticato alla piattaforma, potrà creare delle campagne e dei programmi fedeltà.

Funzionalità principali


Titolare

  • Registrazione e Autenticazione
  • Creazione azienda
  • Modifica Profilo
  • Visualizza Profilo
  • Creazione Programma Fedeltà

Cliente

  • Registrazione e Autenticazione
  • Iscrizione a un Programma Fedeltà
  • Modifica Profilo
  • Visualizza Profilo

Processo di Sviluppo


Per sviluppare l'applicativo è stato scelto di seguire il processo standardizzato Unified Process (UP), processo iterativo incrementale, utilizzando come strumento di lavoro Visual Paradigm basato sul linguaggio UML (Unified Modeling Language).

In totale sono state svolte 4 iterazioni dove è stato possibile effettuare l'analisi dei requisiti, la progettazione del sistema e l'implementazione.

Come strumento di versioning è stato utilizzato Git e GitHub attraverso i quali è stato distinto un'unico branch per lo sviluppo.

  • main: utilizzato per pubblicare la baseline (artefatti) sviluppati a fine iterazione e per lo sviluppo in corrispondenza alla consegna per Ingegneria del Software.

Le varie iterazioni hanno dato origine ai seguenti artefatti:

  • Diagramma dei casi d'uso: raccolta e specifica dei requisiti e funzionalità del sistema.
  • Diagramma classi di analisi: identificano i concetti che è necessario il sistema rappresenti e sia capace di manipolare.
  • Diagrammi di sequenza: descrivono come le classi di analisi interagiscono tra di loro per realizzare il comportamento definito nei casi d'uso.
  • Diagramma classi di progetto: realizzato per derivare le classi di progetto partendo dalle classi di analisi, il diagramma verrà utilizzato per le attività di implementazione.
  • Code Base

Istruzioni di esecuzione


In seguito verrà illustrato come eseguire il progetto in locale.

Prerequisiti

  • clonare la repository https://github.com/albinsopaj/Loyalty_Platform.git
  • scaricare Gradle Build Tool
  • scaricare Node.js

Installazione

  1. Posizionarsi sul file Loyalty_Platform\Backend\src\main\resources\application.properties ed impostare il proprio database
  2. Posizionarsi sulla cartella Loyalty_Platform\Backend>
  3. Eseguire il build e il run con
    .\gradlew bootRun
  4. Posizionarsi sulla cartella Loyalty_Platform\Frontend\loyalty-platform
  5. Scaricare le dipendenze
    npm install or npm i
  6. Eseguire il Frontend per servire l'applicazione come una web app
    npm run serve

Tecnologie Utilizzate


Frontend

Il lato Frontend è stato sviluppato tramite l'utilizzo del framework VueJS ed il suo relativo linguaggio JavaScript.

La scelta di utilizzare proprio questo strumento è stata fatta dopo aver considerato i vantaggi che VueJS offre, tra cue i seguenti:

  • È un framework JavaScript progressivo open source del modello Model-View-View-Model (MVVM) per la costruzione di interfacce utente web interattive e applicazioni a pagina singola (SPA).

  • Vue.js presenta un'architettura incredibilmente adattabile che si concentra sul rendering dichiarativo e sulla composizione dei componenti. La libreria principale è focalizzata solo sul livello di visualizzazione. Funzionalità avanzate richieste per applicazioni complesse come routing, gestione dello stato e strumenti di costruzione sono offerte tramite librerie e pacchetti di supporto ufficialmente gestiti.

  • Vue presenta un sistema di reattività che utilizza oggetti JavaScript semplici e rendering ottimizzato. Ogni componente tiene traccia delle sue dipendenze reattive durante il suo rendering, quindi il sistema sa esattamente quando riesaminare e quali componenti riesaminare.

  • Ha tutte le caratteristiche e le qualità che rendono lo sviluppo liscio e facile. La sua curva di apprendimento delicata è il primo fattore significativo. Inoltre, è anche leggero, flessibile, modulare e altamente performante

Per quanto riguarda le rotte con cui è possibile muoversi attraverso le varie pagine dell'applicazione, esse sono:

  • .../home pagina di default overo la homepage

  • .../client/register pagina di registrazione dove il cliente può registrarsi

  • .../client/login pagina di login dove il cliente può autenticarsi

  • .../client/profile pagina che mostra i dati da visualizzare del cliente

  • .../owner/register pagina di registrazione dove il titolare può registrarsi

  • .../owner/login pagina di login dove il titolare può autenticarsi

  • .../owner/addCompany pagina dove il titolare può aggiungere un'azienda

  • .../profile/modify pagina dove si possono modificare i dati personali

  • .../owner/profile pagina che mostra i dati da visualizzare del titolare

(I tre puntini rappresentano il dominio del backend, che quando verrà eseguito in local sarà localhost:8081 oppure localhost:8082).

Tale rotte sono protette e non si possono accedere senza aver effetuato l'autenticazione.

L'autenticazione tra il client e il server avviene attraverso l'utilizzo di un codice JWT

Backend

Il lato Backend del sistema è stato sviluppato in Java con il supporto del framework Spring-Boot a cui è stato affrontato il compito di gestire le REST API. Per l'autenticazione degli utenti utilizziamo i JWT tokens

Elenco API

Le seguenti sono delle API esposte dal backend:

  • POST /api/auth/client/signin utilizzata per autenticare il cliente
  • POST /api/auth/client/signup utilizzata per registrare il cliente
  • POST /api/auth/owner/signin utilizzata per autenticare il titolare
  • POST /api/auth/owner/signup utilizzata per registrare il titolare
  • GET /api/test/owner utilizzata per visualizzare le informazioni del titolare
  • GET /api/test/client utilizzata per visualizzare le informazioni del cliente
  • PUT /loyaltyPlatform/client/registerToFidelityProgram/{clientId}/{fidelityProgramId} utilizzata per registrarsi ad un programma fedeltà
  • PUT /loyaltyPlatform/client/update/profile/{clientId} utilizzata per modificare il profilo del cliente
  • GET /loyaltyPlatform/client/getDigitalCards/{clientId} utilizzata per ottenere le carte digitale del cliente
  • POST /loyaltyPlatform/owner/addCompany/{ownerId} utilizzata per aggiungere un'azienda
  • PUT /loyaltyPlatform/owner/update/profile/{ownerId} utilizzata per modificare il profilo del titolare
  • POST /loyaltyPlatform/owner/addPointsFidelityProgram/{ownerId}/{companyId} utilizzata per creare ed aggiungere un programma fedeltà a punti ad un azienda
  • POST /loyaltyPlatform/owner/addLevelFidelityProgram/{ownerId}/{companyId} utilizzata per creare ed aggiungere un programma fedeltà a livelli ad un azienda
  • GET /loyaltyPlatform/owner/company/{ownerId}/{companyId} utilizzata per ottenere una azienda del titolare
  • GET /loyaltyPlatform/owner/companies/{ownerId} utilizzata per ottenere tutte le aziende del titolare
  • GET /loyaltyPlatform/company/getFidelityPrograms/{id} utilizzata per ottenere tutti i programmi fedeltà di una azienda
  • GET /loyaltyPlatform/company/getAll utilizzata per ottenere tutte le aziende nella piattaforma

Come strumento per il building automatizzato del sistema si è impiegato Gradle.

Per la persistenza dei dati ci si è affidati al database relazionale MySQL.

Nella cartella Documentation si possono osservare i modelli sviluppati e come si è proceduto durante le varie iterazioni del processo.

Iterazioni


Il progetto è stato implementato in 4 iterazioni, della durata massima di 2 settimane per le prime due iterazioni e di 3 settimane per le ultime due iterazioni, rispettando gli standard del Processo Unificato e l'utilizzo di alcuni Design Pattern.

Nella prima iterazione, la fase di avvio, si è discusso dei possibili attori che potessero partecipare e quindi usufruire dell'applicazione, attraverso la partecipazione a differenti workshop e brainstorming individuali e di gruppo.

Una volta identificati tutti gli attori, nelle successive iterzaioni si è proceduto ad identificare i casi d'uso ad essi corellati, fino ad arrivare alla III iterazione con il 90% dei casi d'uso sviluppati.

La III e IV iterazione si sono focalizzate sull'implementazione del codice e progettazione di tutto il sistema. In particolar modo nella IV iterazione sono stati prefezionate alcune funzionalità ritenute più importanti.

Alla fine della progettazione è stato proceduto con la fase di testing, utilizzando il software Postman, una piattaforma API per gli sviluppatori per progettare, creare, testare e iterare le API.
Grazie ad esso è stato possibile replicare le chiamate e verificarne la correttezza.

Autori


About

Progetto per l'esame di Ingegneria del Software a.a 2022/2023

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •