Simone Baldi (VR457324) Andrea Caliari (VR456755) Andrea Rossetti (VR457323)
Abbiamo deciso di adottare, durante lo sviluppo, uno stile di programmazione agile. Abbiamo cercato di produrre un codice funzionante nei tempi stabiliti, riconsiderando gli obbiettivi preposti e decidendo di semplificare alcune funzionalità per evitare costi di sviluppo maggiori.
Dopo esserci confrontati e aver deciso una linea di sviluppo comune, ci siamo suddivisi il lavoro assegnando a ciascuno di noi tre Use Case da implementare, aggiornandoci frequentemente con videocall e lavorando insieme nelle parti di codice in comune. Anche per i test, abbiamo deciso di suddividerceli sempre seguendo gli Use Case che ciascuno di noi ha implementato, in particolare ognuno ha testato con jUnit i modelli da lui utilizzati e i propri Use Case con Selenium
E-Learning è un sistema informatico di sostengo per la didattica.
Il sistema è pensato per permettere agli insegnati di:
- gestire i corsi dove insegnano, aggiungendo materiale didattico
- inserire e modificare i voti degli studenti iscritti al corso
- aggiungere eventi relativi al corso
- assegnare compiti da fare a casa con la possibilità di consegnare direttamente sulla piattaforma l'elaborato dello studente
- creare un sondaggio relativo al corso
- inviare avvisi agli iscritti al corso
Lo stesso sistema permette invece allo studente di:
- visualizzare il proprio libretto potendo consultare i propri voti
- archiviare e consultare materiale personale
- scrivere e visualizzare annunci condivisi tra altri studenti
- partecipare alle elezioni studentesche con la possibilità di votare un candidato
Il sistema, utilizzando delle repository, memorizza tutti i dati inseriti e permette di cancellarli e modificarli.
Gli utenti che vengono gestiti dal sistema sono di tre tipologie:
- gli insegnati
- gli studenti
- l'admin delle elezioni, che può visualizzare le statistiche dei voti e aggiungere nuovi candidati
Un docente ha la possibilità di creare sondaggi per valutare la bontà di un corso, dare un opinione sui servizi forniti dall’istituto, oppure, sulla qualità delle infrastrutture.
Il docente può decidere il titolo del sondaggio e la categoria o il corso nella quale inserirlo, dopo di che viene chiesto di inserire la domanda e il tipo di riposta che può essere una risposta multipla, singola o un semplice si/no. Inoltre, viene chiesto se il sondaggio dev’essere obbligatorio o meno per accedere a un corso o ad un esame.
Il docente potrebbe dimenticare di compilare una risposta e lasciare vuoto il campo, viene visualizzato un pop up dicendo di eliminare la checkbox oppure di inserire una riga di testo. Il docente potrebbe sbagliare la categoria o il corso, quindi, il docente ha la possibilità di modificare in qualunque momento il sondaggio.
Il docente ha la possibilità di vedere le statistiche dei vari sondaggi.
Il docente è loggato all’interno della piattaforma. Il sondaggio viene caricato e inserito all’interno della categoria/corso specificato all’inizio della creazione. Una volta completato sarà visibile al docente stesso e agli studenti.
Il docente una volta fatto il login sulla piattaforma ha la possibilità di caricare materiale didattico e condividerlo con gli studenti.
Il docente accede al corso nel quale vuole condividere il materiale didattico, accede alla sezione di condivisione del materiale e seleziona il file da condividere.
Il docente potrebbe caricare un file con un formato non accettato dal sistema, viene notificato tramite un pop up che il file non rispetta l’estensione corretta. Il docente potrebbe inviare per sbaglio un file errato, ha la possibilità di rimuovere il file errato.
Il docente dopo aver loggato nel sistema può caricare i file, una volta completato l’upload gli studenti sono in grado di vedere il file (slides, homework, ecc..) nella pagina del corso e possono scaricarli.
Agli studenti viene data la possibilità di archiviare materiale personale o compiti per casa su una piattaforma cloud.
Lo studente, una volta fatto il login sulla piattaforma, può accedere alla sezione dedicata al suo spazio personale di archiviazione cloud, oppure, accedere alla sezione di archiviazione dedicata al corso, nella quale può archiviare homework. Nella sezione del Corso può essere inserita dal docente una data di scadenza entro la quale consegnare gli esercizi, dopo di che lo studente potrà visualizzare il commento del professore o l’eventuale voto inerente al compito per casa.
Lo studente può inviare un file errato, oppure, accorgersi successivamente di aver inviato un file errato. Viene data la possibilità selezionare il file errato e di eliminarlo per poi successivamente ricaricarlo.
Una volta fatto login nella piattaforma lo studente carica il proprio materiale oppure carica degli esercizi sulla pagina del corso che poi verranno valutati dal professore una volta scaduto il termine di consegna.
Il professore può inserire i voti degli studenti iscritti al suo corso in modo che possano vederlo registrato nel proprio libretto personale. Il professore deve essere loggato nel sistema tramite le proprie credenziali.
Il professore dopo aver valutato le prove degli studenti deve inserire i voti all’interno del sistema. L’utente accede alla propria pagina personale dove può vedere i corsi dove insegna. Sceglie il corso in questione e visualizza l’elenco degli studenti iscritti regolarmente al corso. Accede alla pagina d'inserimento dei voti dove è presente un elenco degli studenti con la possibilità di inserire i voti per ogni singolo studente e un commento. I voti sono numerici con la possibilità di indicare che uno studente era assente (A). All’inizio della pagina sono presenti le caselle per inserire le informazioni sulla prova che è stata valutata (prova orale, scritta, laboratorio, ecc. e data). Dopo aver inserito tutti i voti, salva la modifica. Gli studenti ricevono una mail dove viene comunicato l’inserimento di un voto sul proprio libretto.
Viene inserito un voto errato. Se il professore se ne dovesse accorgere o gli fosse fatto notare, può accedere alla pagina dell’elenco degli studenti e modificare il voto inserito. Uno o più studenti non erano iscritti al corso quando sono stati inseriti i voti anche se hanno partecipato alla prova. Dopo che gli studenti sono stati iscritti al corso, il professore accede nuovamente alla pagina di inserimento dei voti e inserisce le stesse informazioni già inserite la volta precedente (tipo di prova e data) e inserisce il voto solo degli studenti mancanti (ora visualizzati).
Gli studenti possono visualizzare il voto sul proprio libretto.
Una volta salvata la modifica dei voti, il sistema visualizza un messaggio di successo e l’utente ritorna sulla pagina del corso.
Il professore aggiunge la consegna per un compito da fare a casa con una scadenza entro la quale inviare il o i files con le risposte o l’elaborato da valutare/correggere. Il professore deve essere loggato nel sistema tramite le proprie credenziali
Il professore accede al sistema con le proprie credenziali. Accede alla propria pagina personale dove può vedere i corsi dove insegna. Sceglie il corso in questione e visualizza la pagina principale del corso. Sceglie di aggiungere un elemento alla pagina. Scegliere tra le opzioni di inserire una consegna per un compito a casa con scadenza. Nella pagina di inserimento viene richiesto il titolo del compito, la descrizione/consegna completa, eventuali allegati utili allo svolgimento del compito e la data entro la quale gli studenti devono consegnare lo svolgimento.
Viene inserito un compito errato o viene fatto un errore nell’inserimento (errore di scrittura, file errato, data errata, ecc.). Il professore può, sulla pagina del corso, modificare la consegna o cancellarla completamente.
Una volta salvata la consegna, il sistema visualizza un messaggio di successo e l’utente ritorna sulla pagina del corso.
Il professore ha eseguito il login tramite le sue credenziali. Nel sistema è implementato un servizio di video conferenze. Il professore vuole inserire nel calendario di un corso un appuntamento per una video chiamata.
Il professore accede al sistema con le proprie credenziali. Accede alla propria pagina personale dove può vedere i corsi dove insegna. Sceglie il corso in questione e visualizza la pagina principale del corso. Sceglie di aggiungere un elemento al corso. A questo punto sceglie il titolo della video chiamata, la data e l’ora. Il sistema registra l’evento nel calendario del corso e invia una mail informativa agli studenti con la data e il link per partecipare alla chiamata.
Il professore sbaglia ad inserire alcuni dati (titolo o data) della chiamata. Accedendo al calendario può modificare o cancellare l’evento e il link di partecipazione viene disattivato.
Gli studenti possono accedere alla loro pagina e vedere l’evento nel calendario e il link di partecipazione (disattivato fino al momento scelto dal professore).
Una volta salvato l’evento, il sistema visualizza un messaggio di successo e l’utente ritorna sulla pagina del corso. Viene inviata una mail anche al professore con le stesse informazioni appena inserite e il link per avviare la chiamata.
Il professore ha la possibilità di inviare messaggi ad ogni partecipante (solo a tutti) del corso tramite la sezione apposita all’interno della sua aerea personale.
Il professore accede al corso nel quale vuole inviare il messaggio, entra nella sezione messaggi e può scegliere di inviarlo andando a compilare i campi che lo compongono come il titolo e il contenuto. Compilato tutto il professore provvederà ad inviarlo agli studenti. Nel caso potessi servigli può accedere al corso nella sezione vecchi messaggi per cancellare o modificare il messaggio inviato.
Il professore potrebbe omettere l'inserimento del titolo o del contenuto, di conseguenza il sistema non permetterà il salvataggio senza di essi.
Gli studenti ricevono il messaggio nella loro pagina relativa al corso.
Il professore può vedere il suo messaggio appena inviato entrando nel corso nella sezione vecchi messaggi.
Lo studente può accedere alla bacheca annunci tramite la sezione apposita all’interno della sua area personale per vedere gli annunci disponibili o crearne uno.
Lo studente può accedere all’interfaccia della bacheca vedendo quali annunci sono presenti per il suo corso. In caso lo studente volesse creare un annuncio può farlo accedendo alla bacheca e cliccando sul pulsante crea. Inserirà poi il titolo e il contenuto del relativo annuncio. Infine, per conferma la creazione gli basterà confermare la scelta.
Lo studente che vuole creare un annuncio potrebbe omettere il titolo o il testo dell’annuncio di conseguenza il sistema non permetterà il salvataggio senza di essi.
Lo studente che crea un annuncio verrà reindirizzato alla bacheca dove sono presenti tutti gli annunci incluso il suo appena creato.
Lo studente ha la possibilità di votare tramite un’interfaccia apposita all’interno della sua aera personale.
Lo studente può votare per le elezioni tramite l’interfaccia apposita andando a cliccare sulla sua preferenza tra i candidati presenti. Il voto è preso in considerazione solo se lo studente dopo aver selezionato la sua scelta conferma la votazione tramite il tasto di conferma.
Lo studente seleziona uno tra i candidati disponibili; se lo studente andrà a confermare la votazione senza indicare una preferenza il sistema non gli permetterà di votare e potrà solo tornare indietro.
L’organizzatore delle elezioni potrà vedere le percentuali delle votazioni tramite la sua area personale.
Lo studente verrà reindirizzato alla pagina principale dei corsi dopo aver confermato la sua votazione.
Abbiamo scritto vari test per automatizzare la verifica del funzionamento delle diverse parti di codice e simulare gli Use Case che abbiamo precedentemente descritto.
Ci siamo affidati a due tipi di test:
- test eseguiti con jUnit: sono test sui model nel sistema; provano il corretto funzionamento dei metodi e costruttori di tutte le entity del programma
- test eseguiti con Selenium: sono test grafici che si occupano di verificare il corretto funzionamento del Controller e provano direttamente gli Use Case
I jUnit tests sono stati usati per testare tutti i costruttori, i metodi setter e getter dei vari componenti del programma.
Sono stati inoltre utilizzati per testare il corretto funzionamento dei metodi utilizzati per collegare tra loro le entità del database, come ad esempio i metodi, all'interno della classe Course, usati per collegare gli altri componenti, come gli eventi, gli studenti, il professore responsabile, i messaggi e i sondaggi.
I test eseguiti con Selenium si sono concentrati sul simulare un utilizzo tipico del programma, in particolare sono stati provati gli Use Case. I test sono stati eseguiti in ordine alfabetico per poter controllare, tramite i primi tre, il funzionamento minimo del programma.
Il primo test, aInit, viene utilizzato per chiamare un metodo di test contenuto nel controller, in modo da inizializzare le repository con valori di prova.
Il secondo e terzo test, aTestLoginProfessor e bTestLoginStudent, sono stati usati per verificare il corretto funzionamento del login per i due utenti principali a cui è indirizzato il sistema. Sono inoltre stati usati da tutti gli altri test per evitare la ripetizione di codice.
Gli altri 10 test fanno riferimento direttamente ai singoli Use Case (lo Use Case che prevede l'aggiunta di file da parte dello studente è stato diviso in due test per verificare separatamente l'inserimento di file personali e la consegna dei compiti per casa).
Abbiamo verificato la code coverage dei nostri tests utilizzando il tool integrato in IntelliJ. In generale, avviando sia i jUnit tests che i Selenium, abbiamo raggiunto una code coverage totale del 99% dei metodi e del 94% delle linee di codice:
In particolare, i test jUnit coprono l'81% delle classi e l'86% delle righe di codice, dal momento che le classi FileListing e StudentForm vengono coperte dai test Selenium perché non contengono costruttori e contengono metodi di appoggio per la gestione delle cartelle per i file inseriti durante l'utilizzo del programma e per la gestione dinamica dell'inserimento dei voti di un numero non specificato di studenti: