Project 2015-2016

Progetto A.A. 2015/2016

Sito web per domande e risposte

Versione 1.0
Progettare e realizzare un sito web che permetta agli utenti iscritti di porre domande e di fornire risposte agli interrogativi proposti.
L’applicazione dovrà permettere ad un utente di:

  • Registrarsi al sito;
  • Inserire una nuova domanda;
  • Rispondere ad una domanda;
  • Visualizzare domande e risposte;
  • Dare un giudizio ad una risposta data da un altro utente (funzionalità disponibile solo per gli utenti “giudici”).

Registrazione al sito

Durante la registrazione al sito l’utente dovrà inserire obbligatoriamente le seguenti informazioni personali:

  • Nome utente (username);
  • Password;
  • Indirizzo email.

Inoltre l’utente potrà opzionalmente fornire i seguenti dati:

  • Nome e Cognome;
  • Sesso;
  • Data di nascita;
  • Luogo di nascita;
  • Luogo di domicilio o residenza.

Una volta registrato l’utente non potrà più modificare i propri dati.
Non è previsto un meccanismo di verifica dell’indirizzo mail, né di recupero password.

Inserimento di una domanda

Un utente registrato potrà inserire una domanda, specificandone il testo (max 300 caratteri) e la categoria. Una domanda può essere composta esclusivamente da testo. Solo l’amministratore del sistema potrà eliminare la domanda.

Gestione della categorie

Al lancio del sistema, il sito web dovrà offrire alcune categorie di domande predefinite: Ambiente, Animali, Arte e cultura, Elettronica e tecnologia, Sport, Svago. Durante l’esercizio del sistema, l’amministratore potrà aggiungere nuove categorie, rinominare una categoria esistente o aggiungere una sotto categoria ad una categoria esistente. Una sotto categoria può avere a sua volta sotto categorie: es. Sport > Calcio > Serie A.

Rispondere ad una domanda

Un utente registrato potrà rispondere ad una domanda, specificando il testo (max 500 caratteri). Una risposta può essere composta esclusivamente da testo. L’amministratore e i giudici potranno eliminare la risposta.

Giudicare una risposta

Alcuni utenti detti “giudici” potranno dare un giudizio alla risposta di un utente. Il giudizio è un numero da 0 a 5. I giudici troveranno vicino ad ogni risposta 6 bottoni (uno per ogni livello di giudizio) e potranno cliccare su un bottone per esprimere il proprio giudizio alla risposta.
Una volta dato un giudizio non sarà possibile modificarlo.
Solo l’amministratore avrà la possibilità di nominare nuovi giudici scegliendoli tra gli utenti registrati.

Visualizzare domande e risposte

I visitatori (non registrati) troveranno nella pagina principale il testo delle ultime domande inviate dagli utenti. Le domande dovranno essere mostrate in ordine cronologico dalla più recente. Cliccando su una domanda i visitatori verranno indirizzati su una nuova pagina in cui verrà mostrata la domanda e le risposte date dagli utenti fino a quel momento. Le risposte vengono visualizzate in ordine cronologico dalle più alle meno recenti.
Gli utenti registrati, oltre a leggere le domande dalla pagina principale del sito, vi troveranno un menu a tendina (o una colonna laterale) dal quale potranno selezionare una categoria. Una volta selezionata una categoria verranno visualizzate solo le domande appartenenti a quella categoria e a sue eventuali sotto categorie. Una volta scelta una categoria verranno mostrate all’utente eventuali sotto categorie di quella scelta. L’utente potrà cliccare nuovamente su una sotto categoria per raffinare ulteriormente la lista di domande visualizzate.
Un utente potrà cliccare su una domanda e verrà indirizzato su una nuova pagina dove potrà visualizzare (dall’estremo superiore a quello inferiore della pagina): la categoria della domanda (se è una sotto categoria verranno visualizzate anche le sue sopra categorie, es. se la categoria è Serie A, verrà visualizzato Sport > Calcio > Serie A), il testo della domanda, le risposte giudicate (mostrati in ordine di giudizio e, per quelle a pari giudizio, in ordine cronologico dal più recente) con i relativi giudizi e il nome utente dei giudici che hanno dato il giudizio, e infine le risposte non giudicate (mostrate in ordine cronologico dal più recente).
Tutti gli utenti visualizzeranno affianco a domande e risposte la data e l’ora in cui sono state inviate e l’utente che l’ha inviate.

Nota bene

  1. Le domande, le risposte, i giudizi e le altre informazioni gestite dal sito dovranno essere accessibili anche dopo il riavvio del server. Per gestire la persistenza è obbligatorio utilizzare MapDB (MapDB). Non si accetterà la consegna di progetti che usano altri tipi di DB.
  2. L’utente amministratore dovrà avere come username “admin” e password “admin”. La sua registrazione non potrà avvenire attraverso interfaccia web.

Modalità di realizzazione

  1. Il progetto dovrà essere realizzato in gruppo, ogni gruppo dovrà essere composto da 3 persone.
  2. Usare (a scelta) una delle due seguenti metodologie:
    • versione semplificata di UP con applicazione di GRASP;
    • metodologia agile ispirata ad una di quelle viste a lezione (SCRUM, XP); in questo caso però deve anche essere realizzata una prima fase di analisi monolitica che produca come artefatti almeno una modellazione dettagliata dei casi d’uso e un modello di dominio (a cui si suggerisce di aggiungere un glossario o altri artefatti che si ritengano utili).
  3. Utilizzare il linguaggio Java e GWT.
  4. Il codice dovrà essere opportunamente commentato e indentato.
  5. Si consiglia di utilizzare Eclipse come IDE.
  6. Ogni gruppo dovrà realizzare:
    • Relazione tecnica:
      • Modello di analisi;
      • Scelte progettuali e di interfaccia e manuale utente.
    • Relazione su metodo e processo di sviluppo:
      • Descrizione del metodo adottato (iterazioni, milestones, issues, etc..). Si prega di curare in modo particolare questo aspetto;
      • Diario delle attività di ogni membro del gruppo;
      • Diario del gruppo.
  7. La documentazione dovrà essere prodotta sotto forma di pagine wiki all’interno del progetto in bit bucket.
  8. È obbligatorio:
    • Effettuare unit testing (utilizzando JUnit).
    • Utilizzare in maniera appropriata gli strumenti di versionamento del codice (Git), bug tracking e code review (creazione di branch, pull request ed attuazione dei merge);
    • Utilizzare Bitbucket sia per creare un repository privato del progetto (al quale tutti i membri del gruppo dovranno poter accedere) sia sfruttandone le funzionalità di bug tracking e code review.

Modalità e tempi di consegna

  • La consegna avverrà inviando una mail a luigi(punto)asprino(chiocciola)unibo(punto)it e invitando al repository di Bitbucket l’utente “luigi-asprino”.
  • Successivamente ogni gruppo verrà convocato per discutere il progetto nelle date che verranno rese note di volta in volta nel sito del corso.

Valutazione

La valutazione del progetto avverrà tenendo conto dei seguenti punti:

  • La realizzazione delle specifiche funzionali;
  • L’organizzazione e la leggibilità del codice;
  • L’adozione di una metodologia e l’utilizzo appropriato degli strumenti di testing, versioning, bug tracking e code reviewing;
  • L’adeguatezza della documentazione allegata al progetto e in particolare della descrizione del processo di sviluppo adottato;
  • La discussione del progetto.

Per qualsiasi dubbio o chiarimento riguardanti le specifiche del progetto non esitate a contattarmi all’indirizzo email luigi(punto)asprino(chiocciola)unibo(punto)it o utilizzate il forum dell’insegnamento.

Revisioni

Versione 1: prima pubblicazione.

Risorse per il progetto

Esempio di progetto GWT che utilizza MapDB (il classpath incluso andrà adattato).

Date di consegna progetto a.a. 15/16

Fare riferimento alla sezione dedicata nella homepage del sito.