Corso di Laurea in Tecnologie Web e Multimediali
Esame di Programmazione e laboratorio, A.A. 2002/03
Progetto per il 1o appello della sessione estiva (17,26/6/2003):
Implementazione di un semplice programma di analisi di un Web log

Introduzione

I web server mantengono in un file di testo un "log" (un "diario") di tutte le richieste HTTP di pagine ricevute. Ad esempio, il seguente è un frammento di un web log:

host144-98.pool80117.interbusiness.it - - [01/Apr/2003:08:18:49 +0200] "GET /~coppola/didactics/twm/aa2002-2003 HTTP/1.1" 302 284
host144-98.pool80117.interbusiness.it - - [01/Apr/2003:08:18:50 +0200] "GET /~coppola/didactics/twm/aa2002-2003/index.html HTTP/1.1" 304 250
host144-98.pool80117.interbusiness.it - - [01/Apr/2003:08:18:53 +0200] "GET /~coppola/didactics/twm/aa2002-2003/sol/s10.3.html HTTP/1.1" 401 74
host144-98.pool80117.interbusiness.it - - [01/Apr/2003:08:19:04 +0200] "GET /~coppola/didactics/twm/aa2002-2003/sol/s10.3.html HTTP/1.1" 304 250
adsl-112-119.38-151.net24.it - - [01/Apr/2003:08:37:10 +0200] "GET /~mizzaro/teaching/Prog0203 HTTP/1.1" 302 276
adsl-112-119.38-151.net24.it - - [01/Apr/2003:08:37:10 +0200] "GET /~mizzaro/teaching/Prog0203/welcome.html HTTP/1.1" 200 2794
adsl-112-119.38-151.net24.it - - [01/Apr/2003:08:37:14 +0200] "GET /~mizzaro/teaching/Prog0203/programma-preliminare.html HTTP/1.1" 200 3323

Ogni riga corrisponde a una richiesta HTTP, e vengono mostrati, fra le altre cose, l'IP del client, la data/ora e la pagina richiesta.

Descrizione del lavoro

Il progetto consiste nell'implementazione di un semplice programma in linguaggio Java per visualizzare il log di un web server. Il programma deve:

  1. Avere un'interfaccia utente grafica per gestire la comunicazione con l'utente.
  2. Consentire la scelta del nome del file di log sia da linea di comando (parametro del main) sia tramite un componente di testo della GUI.
  3. Visualizzare il contenuto del file di log in un'area di testo.
  4. Gestire opportunamente il caso in cui il file specificato dall'utente non esista (ad esempio, visualizzando un messaggio ben evidente in un'opportuna zona della GUI).
  5. Consentire all'utente di specificare un filtro indicante quali righe mostrare (il filtro viene specificato tramite un campo di testo contenente una stringa: se questa è vuota, vengono mostrate tutte le righe; altrimenti vengono mostrate solo le righe che contengono quella stringa).
  6. Consentire all'utente di specificare se mostrare, di ogni riga:
    1. tutta la riga;
    2. solo l'IP del cliente;
    3. solo la data e l'ora.

Non è invece necessario gestire file di log di lunghezza realistica (un file di log può arrivare a centinaia di MByte). Il programma deve funzionare con il file di log che trovate qui.

Modalità

Il livello di complessità del programma prodotto può essere deciso liberamente dagli studenti; ovviamente, progetti più articolati e complessi otterranno una valutazione migliore di progetti più semplici, ma si consiglia di fare "poco e bene" piuttosto che "tanto e male": progetti semplici possono comunque ottenere il massimo punteggio, purché ben fatti. La durata prevista del lavoro, considerando un gruppo di 3 persone che lavorano a tempo pieno, è di una settimana al massimo.

Il progetto va realizzato in gruppi di 3 persone (a meno di accordi particolari con il docente), e tutti i componenti di un gruppo devono conoscere tutti i dettagli del progetto, come se l'avessero realizzato da soli.

Va preparata una breve relazione, preferibilmente (ma non necessariamente) in XHTML + CSS, sul lavoro effettuato. La relazione deve contenere:

  1. Una breve analisi del problema ed una descrizione intuitiva delle specifiche (meno di 2 pagine!).
  2. Le eventuali semplificazioni apportate rispetto alla versione completa richiesta (poche righe). Ovviamente, le semplificazioni porteranno a valutazioni inferiori. Inoltre, le semplificazioni vanno adeguatamente motivate.
  3. Eventuali aggiunte (cose in più non richieste; ad esempio uso di componenti dell'AWT non spiegati a lezione, uso delle Swing, uso di una struttura dati per la gestione di file di dimensioni elevate, aggiunta di menu, ecc. ecc.).
  4. Il listato completo del programma, con commenti (in javadoc, ma non solo), scritto in font non proporzionale (come questo: la "i" e la "m" occupano la stessa larghezza) e opportunamente incolonnato ("indentato").
  5. Una "prova di esecuzione" (di circa 3 pagine) che illustri il funzionamento del programma: una spiegazione con testo e figure del modo in cui il programma funziona (aspetto dell'interfaccia utente, esempio di esecuzione adeguatamente spiegato, ecc.)

Il progetto va consegnato inderogabilmente entro l'inizio della prova scritta dell'appello, ossia il 17 giugno 2003 ore 9:00, sia in forma cartacea (1 copia), sia via posta elettronica (2 copie, una per docente, indirizzi: coppola@dimi.uniud.it e mizzaro@dimi.uniud.it). Si richiede un unico messaggio:

NOTA Questo progetto è valido per chi intende sostenere l'esame nel primo appello della sessione estiva (17,26 giugno 2003), e va quindi consegnato entro la scadenza. Non si accetteranno ritardi per nessun motivo. Per gli appelli successivi saranno predisposti altri progetti.

Raccomandazioni

Alla valutazione del progetto concorrono vari aspetti (rilevanza delle semplificazioni apportate, qualità della relazione, ecc.), ma è di prioritaria importanza la qualità del programma prodotto, soprattutto per quanto concerne le caratteristiche di leggibilità, modificabilità...Esempi di criteri per la valutazione:

Per eventuali dubbi rivolgersi ai docenti, o durante l'orario di ricevimento o per posta elettronica.


Valid XHTML 1.1! Stefano Mizzaro Last modified: Thu May 22 19:20:12 ora legale Europa occidentale 2003