Un progetto di Ingegneria Del Software I, per l’Università di Napoli Federico II
DOCUMENTO DI DESIGN DEL SISTEMA
ANALISI DELL’ARCHITETTURA

LAYER

CRITERI DI DESIGN
Abbiamo optato per il modello MVC (Model – View – Controller), nello specifico nell’ambito mobile ogni classe di tipo View presenta l’etichetta “Activity” e nell’ambito desktop ogni classe di tipo View presenta l’etichetta “Schermata”.
Per una maggiore organizzazione del codice i metodi necessari per il fetch di operazioni da Firestore sono stati inseriti nelle classi “DAO” relative ai model che tali metodi andavano a reperire.
SERVIZI CLOUD UTILIZZATI
Firebase: Backend-as-a-Service — BaaS
Molti database richiedono che il client esegua delle chiamate HTTP per ricevere e sincronizzare i dati; sono quindi event driven e comunicano la presenza di nuovi dati solo su richiesta esplicita. Connettendo la propria app a Firebase, invece, non si utilizza il normale protocollo HTTP, bensì un Websocket (decisamente più rapido di HTTP). Non c’è quindi bisogno di effettuare chiamate WebSocket individuali in quanto occorre una sola “socket connection”; tutti i dati vengono automaticamente sincronizzati mediante questo singolo WebSocket, l’unico limite di velocità è dettato dalla connessione del client, e non dipende in alcun modo dal protocollo. Firebase invia i nuovi dati non appena vengono aggiornati; quando un client effettua un aggiornamento tutti gli altri client connessi ricevono tale aggiornamento in un istante.
Firebase – Authentication
Molto simile a quanto offerto da Cognito; ma si integra in modo effortless con Firestore.
Per loggare un utente occorre prima chiedere all’utente stesso le proprie credenziali (email e password / un token OAuth proveniente da un altro identity provider autorizzato); dopodiché passando queste credenziali al Firebase Authentication SDK sarà Firebase stesso a verificare le credenziali ed inviare una risposta al client.
Firebase – Cloud Firestore
Un cloud database flessibile e scalabile di tipo NoSQL, utile per immagazzinare e sincronizzare dati per il development lato client e lato server (Firebase e Google Cloud). Consente di mantenere i dati sincronizzati tra diverse app client attraverso realtime listeners; offre inoltre supporto offline sia lato web sia lato mobile. Offre infine un’integrazione nativa con altri servizi Firebase e Google Cloud, incluse le Cloud Functions.
(Desktop) Amazon – RDS
Amazon Relational Database Service è un servizio di gestione per database che consente una facile scalabilità ed una forte efficienza, grazie a prestazioni ottimali e sicurezza garantita.
DIAGRAMMA DI GANTT
Proposta di impegno risorse e pianificazione attività

L’idea
Movie Star è un ramo di “CineMates”, nello specifico è un’applicazione nata dall’esigenza di recensire mediante mezzi informatici i film visti di recente, o anche quelli del cuore visti durante l’infanzia.
Lo scopo di questo progetto è proporre agli utenti un applicativo intuitivo, con una forte libertà di utilizzo, che consenta agli utenti di esprimere la propria opinione riguardo ad un film visto, sia mediante una vera e propria recensione, o meglio “un commento”, sia mediante un voto da 1 a 5; per rappresentare tale voto abbiamo scelto di utilizzare le classiche “stelline”, tipiche del settore dell’hôtellerie ma anche del mondo del cinema – vedasi Walk of Fame.
Il focus del progetto è stato quindi invogliare l’utente ad utilizzare la lista dei film preferiti, consentendogli di aggiungere dei film. In aggiunta, in accordo col committente, l’utente può utilizzare l’applicativo anche come “reminder” ovvero personalizzando la propria lista di film da vedere. Anche questo requisito nasce da una necessità: quante volte abbiamo voglia di vedere un film ma non abbiamo idee e quante volte invece vorremmo vedere un film in particolare ma in quello specifico momento non abbiamo tempo a sufficienza per guardarlo? Ecco che nasce Movie Star, facendo di necessità virtù.
In questo periodo difficile a causa del COVID-19 tutti noi ci siamo ritrovati relegati in casa, con i cinema chiusi, e senza la possibilità di scambiarci opinioni sui film appena visti insieme. Movie Star è un’occasione per esprimere sé stessi, per condividere, per leggere, per sentirci parte del mondo del Cinema, senza andare al cinema.
Prima di iniziare a progettare ci siamo chiesti quindi: cosa vorrebbe un utente da un’applicazione di questo tipo? Ed abbiamo quindi fatto qualche ricerca riguardo quelli che pensiamo saranno i principali fruitori: gli appassionati del cinema, un po’ critici e sicuramente tanto recensori.
Ma in cosa consiste una recensione? Per noi una recensione è in realtà un commento personale volto a mettere in luce un particolare aspetto (positivo o negativo che sia) di un determinato prodotto. Per conseguire l’obiettivo della libertà e proporre un prodotto più moderno, incentrato sul modello dei social, abbiamo quindi optato per la nomenclatura “commento”. Ciò che fa share, che diventa virale, sono i “meme”, le immagini, le frasi simpatiche, i momenti clou; Movie Star è la piattaforma su cui condividere tutto questo, ma non solo. Parte fondamentale di un film è quanto questo ci emoziona, cosa ci trasmette e in che modo. Movie Star è quindi anche un luogo sicuro in cui struggersi per il finale di un film, o, perché no, condividere teorie complottiste (la trottola si ferma, è ancora un sogno?)
Il target di utenti
Chi sono gli utenti che useranno Movie Star?
Fondamentalmente sono appassionati di Film o persone con la passione per l’organizzazione. L’età di tali individui spazia ampiamente, ma la più grande fetta di mercato coinvolge sicuramente una clientela abbastanza giovane (13-40 anni). Tali utenti hanno solitamente diverse competenze ed abilità, anche in ambito informatico.
I loro compiti più frequenti riguarderanno la visualizzazione e recensione di un film, con lo scopo di condividere la propria opinione o scoprire nuovi film.
L’ambiente finora descritto, quindi, risulta un ambiente molto libero, socialmente “borghese”.
Quali sono i driver di domanda degli utenti target? Quali sono le loro priorità?
Un applicativo funzionale che consente una forte interazione e permette di esprimere liberamente la propria opinione, commentando anche più volte uno stesso film, volendo anche frame per frame.
Alcune scelte implementative
**** Modifica di una recensione inserita in precedenza: Movie Star attua una politica restrittiva riguardo la modifica di un commento inserito in precedenza, questo per consentire in futuro di ampliare l’insieme di funzionalità attualmente previsto, implementando ad esempio la possibilità di aggiungere reazioni ad un particolare commento. Per questo motivo non è possibile modificare un commento inserito in precedenza, ma qualora si ritenga opportuno il commento può essere eliminato e riscritto come si desidera. Questa politica è volta a tutelare l’utente.
Usabilità
Cos’è l’usabilità? E’ il grado con cui il prodotto può essere usato da specifici utenti per raggiungere specifici obiettivi con efficacia, efficienza e soddisfazione in uno specifico contesto di utilizzo.
L’efficacia è l’accuratezza e la completezza con cui gli utenti raggiungono gli specifici obiettivi, è quindi traducibile nel “livello di precisione” con cui l’utente riesce a raggiungere i suoi scopi.
L’efficienza, invece, è la quantità di risorse spese in relazione all’accuratezza e alla completezza con cui gli utenti raggiungono gli obiettivi; un sistema efficace richiede una quantità di risorse direttamente proporzionale alla propria efficacia. Per quantificare l’efficienza si può pensare al tempo impiegato per raggiungere un determinato scopo.
Alla luce di quanto appena descritto abbiamo, sin dalle fasi iniziali di prototipazione dell’applicativo, chiesto ad un bacino di utenti (non novizi del settore) (15 utenti) di valutare efficacia, efficienza, ed il loro rapporto, per ottenere un feedback. Inoltre abbiamo effettuato dei test controllati, monitorando i percorsi ed i tempi che ogni utente “sceglieva” per effettuare una determinata operazione. Tutti gli utenti presenti nel campione riuscivano ad usare a pieno l’applicazione entro i primi 5 minuti di utilizzo, definendola intuitiva e “facile da usare”.
Con utenti novizi questi tempi si sono dilatati, giungendo a massimo 10 minuti.
Sia gli utenti occasionali che gli utenti continuativi analizzati sono rimasti ampiamente sotto i tempi soglia prefissati nei requisiti. Per questa ragione non è stato ritenuto necessario offrire supporto agli utenti (sussidi, help desk…). Questa prima fase di analisi è stata effettuata utilizzando dei mockup ed interrogando gli utenti, chiedendogli cosa si aspettassero che accadesse una volta premuto un determinato pulsante, al variare dell’input. Iterando questo processo siamo giunti ai mock-up presenti in questo documento.
PROGETTAZIONE HUMAN-CENTERED
Risulta chiaro, quindi, che l’approccio scelto per la realizzazione di questo progetto è di tipo human-centered, con coinvolgimento attivo degli utenti ed un’ampia iterazione tra le fasi di “progettazione” e “realizzazione”. La massima espressione di questo approccio avverrà mediante la descrizione dei casi d’uso.
PROGETTAZIONE UNIVERSALE
Un altro elemento portante di questo progetto è stata la filosofia del design universale (“La progettazione di prodotti e ambienti usabili da tutte le persone, al massimo grado possibile, senza la necessità di adattamenti o progettazioni speciali”), utilizzando mezzi quali Firebase per avvicinarsi quanto più all’idea di “accessibilità”.
VALUTAZIONE DELL’USABILITÀ’ SUL CAMPO
In questa fase del progetto siamo quindi ad un terzo livello di maturità: il prodotto funziona, fornisce le funzionalità necessarie ed è facile da usare, ma come renderlo invisibile durante l’uso? Per passare a tale livello di maturità è stato necessario attendere le fasi finali di sviluppo, e procedere con una grande gamma di test, coinvolgendo gli utenti target. Nonostante l’applicativo fornito fosse una demo, alcuni degli utenti hanno dimostrato la volontà di voler utilizzare Movie Star con più frequenza, e con più funzionalità, limitandosi non solo a creare e costruire liste, ma volendo sempre più condividere ed interagire con altri utenti. Movie Star è diventato dunque parte dell’esperienza “guardare e recensire un film”, transumanando.
Il goal, dunque, è stato fissato in linea con il modello ISO 13407, seguendone le linee guida.
TOLLERANZA VERSO L’ERRORE
Di fondamentale importanza è stato anche realizzare un sistema che fosse tollerante verso l’errore, e che contemporaneamente fosse in grado di garantire il numero minore di errori possibili, a questo fine i campioni di utenti di cui sopra sono stati intervistati e studiati durante le loro interazioni col sistema, chiedendo loro di ipotizzare gli eventi scaturiti dalla pressione di un determinato pulsante e così via.
Analizziamo le tipologie di errori:
Azione intenzionale ma errata: l’utente voleva agire ma desiderava ottenere uno scopo diverso da quello ottenuto.
Azione errata e non intenzionale (o lapsus): secondo il modello di Norman l’utente dopo aver formato correttamente l’azione ed averla specificata, ne ha eseguita invece un’altra, errata. Questo avviene ad esempio quando due pulsanti sono tra loro vicini, o simili.
Azione spontanea: un riflesso, considerabile errore solo se genera effetti collaterali non desiderati.
Azione involontaria: ad esempio la pressione accidentale di un pulsante su una pagina appena caricata.
Per evitare i lapsus abbiamo utilizzato etichette chiare che evidenziassero immediatamente il tipo di azione da compiere (soprattutto qualora si passasse da azioni distruttive a costruttive e viceversa). Abbiamo inoltre predisposto la presenza di popup di conferma qualora l’azione da intraprendere fosse di tipo distruttivo (utilizzando come risposta di preset quella di tipo inoffensivo).
Abbiamo dunque analizzato le azioni tipiche dei volontari e provveduto a riprogettare il sistema per prevenire determinati errori, permettendo comunque sempre un percorso di recupero dall’errore (solitamente backward recovery), ispirandoci allo standard ISO 9241-110.
VALUTARE L’USABILITÀ’
Giunti a questo punto, in quanto step fondamentale in un tipo di progettazione human-centered, siamo passati a una fase di verifica e validazione. Il primo punto è stato quindi verificare che il sistema facesse solo e soltanto quanto documentato; il secondo è stato invece validare la corrispondenza tra requisiti e funzionalità effettive del sistema.
Abbiamo quindi condotto degli usability test, in seguito ad una nostra prima fase euristica valutazione (effettuata sulla base delle dieci euristiche di Nielsen), utilizzando principalmente test di compito.
Ecco i compiti assegnati:
1) Cosa faresti per aggiungere un determinato film ad una lista?
2) Cosa faresti per eliminare da una lista un film ad essa aggiunto in precedenza?
3) A. Come procederesti se volessi aggiungere un determinato utente alla tua lista amici?
B. E se in seguito volessi rimuoverlo?
4) Inserisci un commento ed un voto relativamente al seguente film: “Titanic”
5) Cambia la tua password
Il tasso di successo registrato è stato del 100%, ma sono stati riscontrati problemi relativamente all’inserimento di una recensione**, questo perché le funzioni sono nascoste a meno che il film non sia presente tra i film visti (è evidente che per vincoli di dominio non abbia molto senso recensire un film non visto). Questa scelta è stata intenzionale durante la progettazione, quindi attribuiamo i tempi (comunque nella norma) leggermente maggiorati ad un contesto “simulato” piuttosto che ad un errore di progettazione. Con questo fine abbiamo deciso di ripetere tali test in un ambiente meno controllato. I test effettuati semplicemente osservando l’utente hanno confermato che l’utente non aveva problemi a recensire un film visto.
Di seguito i dati utilizzati per l’analisi:

Abbiamo poi trascorso gli ultimi giorni di testing ascoltando i nostri utenti volontari, migliorando ogni giorno l’interfaccia dell’applicazione, valutando e capendo le necessità ed i desideri dell’utente.
PROTOTIPAZIONE FUNZIONALE
Statechart – Accesso:

Statechart – Commenti:

Statechart – Bottom menu
Statechart – Film

Statechart – Mostra Dettagli Film

Statechart – Profilo

Statechart – Registrazione

Statechart – Social

Statechart – Verifica

ORGANIZZAZIONE GERARCHICA
Film

Social

Profilo

Bottom Menu

Edit Profilo

Autenticazione

Si allega, inoltre, un esempio di esecuzione (cliccare qui per aprire l’immagine in una nuova finestra).

Un altro esempio di esecuzione (qui per il link)

Log ottenuti mediante Firebase e Google Analytics riguardanti “Pagine e Schermate”

Panoramica Coinvolgimento -1

Panoramica Coinvolgimento – 2

Analisi eventi

TABELLA DEGLI SVILUPPI

Requisiti
Documento dei Requisiti Software
Requisiti funzionali – mobile
| Nome | Registrazione alla piattaforma |
| ID | Mobile_RF01 |
| Descrizione | Il sistema deve consentire ad un nuovo utente (o un utente che desidera creare un nuovo account) la registrazione, compilando i campi previsti (email, nome utente e password) |
| Nome | Accesso alla piattaforma |
| ID | Mobile_RF02 |
| Descrizione | Il sistema deve consentire l’accesso alla piattaforma, ad un utente registrato (e verificato) in precedenza, compilando i campi previsti (email, nome utente e password) |
| Nome | Verifica dell’account |
| ID | Mobile_RF03 |
| Descrizione | Il sistema deve prevedere obbligatoriamente che l’account sia verificato, consentendo quindi ad un utente appena registrato/che desideri ricevere un nuovo codice di verifica, la possibilità di verificare il proprio account |
| Nome | Modificare password |
| ID | Mobile_RF04 |
| Descrizione | Il sistema deve consentire ad un utente registrato in precedenza di modificare la propria password. |
| Nome | Effettuare ricerche |
| ID | Mobile_RF05 |
| Descrizione | Il sistema deve consentire ad ogni utente autenticato la possibilità di effettuare ricerche sia tra gli utenti che tra i film presenti nel database della piattaforma, compilando un apposito campo di testo e mostrando i risultati (qualora esistenti) che corrispondono a quanto chiesto dall’utente. |
| Nome | Inviare richieste di collegamento ad un altro utente |
| ID | Mobile_RF06 |
| Descrizione | Il sistema deve consentire ad un utente autenticato di poter inviare richieste di collegamento ad un qualsiasi altro utente registrato alla piattaforma. |
| Nome | Rispondere a richieste di collegamento |
| ID | Mobile_RF07 |
| Descrizione | Il sistema deve consentire ad un utente di visualizzare e rispondere a richieste di collegamento ricevute da altri utenti (accettare/respingere una richiesta). |
| Nome | Rimozione utente da lista amici |
| ID | Mobile_RF08 |
| Descrizione | Il sistema deve consentire ad un utente autenticato di poter rimuovere un determinato utente dalla propria lista amici. |
| Nome | Aggiungere film ad una lista |
| ID | Mobile_RF09 |
| Descrizione | Il sistema deve consentire agli utenti autenticati di poter aggiungere un determinato film alla lista dei film visti/preferiti/da vedere. |
| Nome | Visualizzare informazioni film |
| ID | Mobile_RF10 |
| Descrizione | Il sistema deve consentire agli utenti autenticati di visualizzare tutte le informazioni relative ad un film (trama, titolo, commenti inseriti da altri utenti…) |
| Nome | Recensire film |
| ID | Mobile_RF11 |
| Descrizione | Il sistema deve consentire ad un utente autenticato la possibilità di recensire un film visto (aggiungere un voto oppure un commento). |
| Nome | Rimozione film da una lista |
| ID | Mobile_RF12 |
| Descrizione | Il sistema deve consentire ad un utente autenticato di rimuovere un particolare film da una delle liste (lista dei film visti, lista dei film da vedere, lista dei film preferiti). |
| Nome | Modificare recensione |
| ID | Mobile_RF13 |
| Descrizione | Il sistema deve consentire ad un utente che ha inserito una recensione in precedenza di poterla modificare: sovrascrivere un voto oppure eliminare e aggiungere un nuovo commento. **** |
| Nome | Visualizzazione e condivisione dell’id utente |
| ID | Mobile_RF14 |
| Descrizione | Il sistema deve consentire ad un utente autenticato la possibilità di visualizzare e condividere il proprio id utente. |
| Nome | Visualizzazione di una lista |
| ID | Mobile_RF15 |
| Descrizione | Il sistema deve consentire ad un utente autenticato la possibilità di consultare le proprie liste (amici, film visti, film da vedere e film preferiti). |
| Nome | Visualizzazione film in tendenza |
| ID | Mobile_RF16 |
| Descrizione | Il sistema deve consentire ad un utente autenticato di poter visualizzare i film in tendenza in quello specifico istante. |
| Nome | Effettuare il logout dalla piattaforma |
| ID | Mobile_RF17 |
| Descrizione | Il sistema deve consentire ad un utente autenticato di poter effettuare il logout dalla piattaforma. |
Requisiti non funzionali – mobile
| Nome | Usabilità |
| ID | Mobile_RNF01 |
| Descrizione | Un nuovo utente deve essere in grado di utilizzare la piattaforma come desidera, entro un massimo di 1 ora di utilizzo. |
| Nome | Sicurezza: accesso ai dati |
| ID | Mobile_RNF02 |
| Descrizione | Il sistema deve utilizzare un metodo non diretto di accesso al database. |
| Nome | Sicurezza: verifica account |
| ID | Mobile_RNF03 |
| Descrizione | Il sistema deve richiedere che un utente abbia verificato il suo account prima di consentirgli l’accesso alla piattaforma. |
| Nome | Sicurezza: formazione password |
| ID | Mobile_RNF04 |
| Descrizione | Il sistema deve richiedere che l’utente in fase di registrazione/in qualsiasi fase di modifica della password scelga una password di almeno 6 caratteri. |
Requisiti di dominio – mobile
| Nome | GDPR |
| ID | Mobile_RD01 |
| Descrizione | Il sistema deve aderire agli standard del Regolamento Generale sulla Protezione dei Dati. |
MOCK-UP DELL’APPLICAZIONE MOBILE





































Popup
Per garantire una migliore leggibilità i popup sono stati creati dinamicamente; il contenuto a cui far riferimento è quindi quello presente all’interno della seguente tabella:
| POPUP | TESTO |
| MCK_V01 | Codice inviato! |
| MCK_Password00 | Link inviato con successo! Controlla la tua casella di posta ed inserisci il codice ricevuto |
| MCK_Password01 | Password reimpostata con successo! |
| MCK_Password02 | Compilare i campi di testo! |
| MCK_Password03 | Codice non valido! |
| MCK_Password04 | La password deve essere di almeno sei caratteri! |
| MCK_RespingiRichiesta | Richiesta rimossa con successo |
| MCK_AccettaRichiesta | Utente aggiunto con successo |
| MCK_F01 | Sei sicuro di voler inviare una richiesta di collegamento a “NomeUtente#1234”? |
| MCK_F02 | Sei sicuro di voler eliminare dai tuoi amici “NomeUtente#1234”? |
| MCK_M01 | Sei sicuro di voler eliminare il commento? Quest’azione è irreversibile |
| MCK_M02 | Sei sicuro di voler leggere i commenti relativi a questo film? Potrebbero contenere spoiler |
| MCK_L01 | Eliminando il film dalla lista lista dei tuoi film visti eliminerai anche gli eventuali commenti al film postati in precedenza. Continuare? |
| MCK_L02 | Eliminare il film dalla lista dei preferiti? |
| MCK_L03 | Eliminare il film dalla lista dei film da vedere? |
GLOSSARIO
Voto
Un voto è una valutazione da 1 a 5 espressa da un utente, che riguarda un particolare film.
Amico
Un amico è un utente presente nella lista amici del Current User, per diventare amici occorre inviare ed accettare una richiesta di collegamento.
Richiesta Amico
Il termine richiesta amico e richiesta di collegamento sono usati indifferentemente
Stellina
La stellina/stella è relativa al voto, come convenzionalmente accade nel mondo dell’hôtellerie
GDPR
Il Regolamento generale per la protezione dei dati personali n. 2016/679 (General Data Protection Regulation o GDPR) è la normativa europea in materia di protezione dei dati.
Iscritti
Gli iscritti sono tutti gli utenti registrati alla piattaforma, verificati. Tali utenti hanno fornito il consenso per ricevere mail promozionali.
MODELLI DI DOMINIO – CLASSI DI ANALISI mobile
Class Diagram per Use Case 1: Registrazione alla piattaforma
Class Diagram per Use Case 2: Accesso alla piattaforma
Class Diagram per Use Case 3: Verifica dell’account
Class Diagram per Use Case 4: Modificare password
Class Diagram per Use Case 5: Effettuare ricerche
Class Diagram per Use Case 6: Inviare richieste di collegamento ad un altro utente
Class Diagram per Use Case 7: Rispondere a richieste di collegamento
Class Diagram per Use Case 8: Rimozione utente da lista amici
Class Diagram per Use Case 9: Aggiungere film ad una lista
Class Diagram per Use Case 10: Visualizzare informazioni film
Class Diagram per Use Case 11: Recensire film
Class Diagram per Use Case 12: Rimozione film da una lista
Class Diagram per Use Case 13: Modificare recensione
Class Diagram per Use Case 14: Visualizzazione e condivisione dell’id utente
Class Diagram per Use Case 15: Visualizzare liste
Class Diagram per Use Case 16: Visualizzare film in tendenza
Class Diagram per Use Case 17: Effettuare il logout dalla piattaforma
DIAGRAMMI DI SEQUENZA DI ANALISI
Sequence 1: Registrazione alla piattaforma
Sequence 2: accesso alla piattaforma
Sequence 3: Visualizzare informazioni film
Sequence 4: Aggiungere recensione
ACTIVITY DIAGRAM DI ANALISI
L’utente cerca un film e lo apre (open film dopo ricerca)
Tabella degli sviluppi

Si riporta, nuovamente, per completezza, la tabella degli sviluppi.
CRC CARDS – mobile
| Nome Classe | AggiungiAListaFilmController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Aggiungere un film ad una lista film (Preferiti/Visti/DaVedere) |
| Collaborazioni | FilmDAO |
| Nome Classe | CondividiIdUtenteController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Condividere mediante android l’id utente |
| Collaborazioni | Utente |
| Nome Classe | CurrentUser |
| Sottoclassi | // |
| Superclassi | Application |
| Responsabilità | Contenere i dati relativi all’istanza di Utente corrente onde evitare di doverli caricare più volte durante una singola istanza della stessa applicazione |
| Collaborazioni | Utente, Film |
| Nome Classe | EffettuaRicercheController |
| Sottoclassi | GetData -> AsyncTask |
| Superclassi | // |
| Responsabilità | Cerca le parole chiave ricevute nell’API e crea un model Film da inserire nella RecyclerView |
| Collaborazioni | Film |
| Nome Classe | ForgotPasswordController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Manda un nuovo codice per reimpostare la password, se necessario. Cambia la password del current user con una da lui indicata |
| Collaborazioni | // |
| Nome Classe | LoginController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Effettua il login via firebase previ controlli, carica i dettagli dell’utente appena loggato |
| Collaborazioni | Utente, UtenteDAO |
| Nome Classe | LogoutController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Effettua il logout ed elimina i dati per il login automatico salvati in precedenza |
| Collaborazioni | UtenteDAO |
| Nome Classe | ModificaRecensioneController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Elimina una recensione chiamando il relativo metodo di RecensioneDAO / modifica il numero di stelle (voto) precedentemente isnerito dall’utente |
| Collaborazioni | RecensioneDAO |
| Nome Classe | MostraDettagliFilmController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Apre un film, decidendo quale istanza visualizzare, sulla base di quanto presente nel Current User |
| Collaborazioni | CurrentUser, Film, UtenteDAO |
| Nome Classe | PopupController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Mostra popup di ogni tipo (avviso, errore, conferma operazione) e gestisce l’input utente richiamando le apposite funzioni |
| Collaborazioni | ModificaRecensioneController, RimuoviAmicoController, RecensioniFilmController, RimuoviFilmDaListaController <- operazioni di conferma; |
| Nome Classe | RecensioniFilmController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Grazie all’overloading del metodo onClickLeggiCommenti stabilisce se le recensioni che l’utente vuole visualizzare contengono spoiler o no, e all’evenienza mostra un popup per avvisare l’utente e consentirgli di procedere o annullare l’operazione. Consente inoltre di aggiungere un commento ad un film visto. |
| Collaborazioni | RecensioneDAO, PopupController, |
| Nome Classe | RegistrazioneController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Controlla i campi inseriti, eventualmente registra l’utente |
| Collaborazioni | Utente, UtenteDAO |
| Nome Classe | RicercaUtentiController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Sfrutta UtenteDAO permettendo di mostrare gli utenti che corrispondono alle keyword inserite |
| Collaborazioni | UtenteDAO |
| Nome Classe | RichiesteAmicoController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Grazie a UtenteDAO carica le richieste amico presenti e consente di inviarne di nuove |
| Collaborazioni | CurrentUser, UtenteDAO |
| Nome Classe | RimuoviAmicoController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Consente l’eliminazione di un amico dalla lista amici, previa conferma |
| Collaborazioni | UtenteDAO, PopupController |
| Nome Classe | RimuoviFilmDaListaController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Consente di rimuovere un film da una qualsiasi lista (se precedentemente presente) |
| Collaborazioni | FilmDAO, PoupController, MostraDettagliFilmController |
| Nome Classe | RispondiRichiestaAmicoController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Accettare/Respingere una richiesta amico |
| Collaborazioni | UtenteDAO |
| Nome Classe | TrendingFilmController |
| Sottoclassi | GetData -> AsyncTask |
| Superclassi | // |
| Responsabilità | Carica i film in tendenza nella schermata relativa |
| Collaborazioni | Film |
| Nome Classe | VerificaController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Manda email con link di verifica e controlla se l’utente in questione è verificato |
| Collaborazioni | // |
| Nome Classe | VisualizzaListaController |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Carica una lista tra quelle presenti |
| Collaborazioni | UtenteDAO, LoginController, FilmDAO |
| Nome Classe | FilmDAO |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Gestisce interazioni con Firebase, lato “Film” |
| Collaborazioni | Film, CurrentUser, LoginController, UtenteDAO |
| Nome Classe | RecensioneDAO |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Gestisce interazioni con Firebase, lato “Recensione” (commenti e voti) |
| Collaborazioni | Recensione, ModificaRecensioneController, RecensioniFilmController, LoginController |
| Nome Classe | UtenteDAO |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Gestisce interazioni con Firebase, lato “Utente” (caricamento liste, amici, trovare utenti tramite il loro id/nome…) |
| Collaborazioni |
| Nome Classe | Commento |
| Sottoclassi | // |
| Superclassi | Recensione |
| Responsabilità | Rappresenta un commento di un utente |
| Collaborazioni | RecensioneDAO |
| Nome Classe | Film |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Rappresenta un oggetto film |
| Collaborazioni | FilmDAO |
| Nome Classe | Utente |
| Sottoclassi | // |
| Superclassi | // |
| Responsabilità | Rappresenta un utente iscritto alla piattaforma |
| Collaborazioni | UtenteDAO |