Progetto di recupero del corso di Programmazione Internet |
Specifiche del progetto di recupero
Funzionalita' del programma.
Il programma deve implementare una semplice
agenda telefonica contente informazioni su ditte e persone.
L'interazione avviene
principalmente attraverso comandi testuali immessi dall'utente.
Attraverso questi comandi l'utente puo' inserire e cancellare dei
nominativi ed effettuare semplici ricerche.
All'avvio il programma carica automaticamente la lista dei nominativi dal file
agenda.xml se presente nel directory di lavoro corrente. All'uscita
i nominativi vengono automaticamente salvati nel file agenda.xml nel
directory di lavoro corrente. Il formato di tale file e' specificato nel seguito.
Sintassi dei comandi.
<comando> ::= <nuova_persona> | <nuova_ditta> | <cancella_nominativo> | <lista> | <cerca_nominativo> <nuova_persona> ::= inserisci persona "<cognome>" "<nome>" "<telefono>" <nuova_ditta> ::= inserisci ditta "<ragione_sociale>" "<telefono>" <lista> ::= lista <cancella_nominativo> ::= cancella <numero> <cerca_nominativo> ::= cerca "<stringa>"
Dove
<cognome>, <nome>, <telefono>, <ragione_sociale>, <stringa>sono generiche stringhe e
<numero>e' un numero intero positivo.
Funzionalita' dei comandi.
inserisci persona: aggiunge la persona specificata
alla lista dei nominativi.
inserisci ditta: aggiunge la ditta specificata alla lista dei nominativi.
lista: visualizza tutti i nominativi ordinati secondo cognome e/o
ragione sociale facendoli precedere da un numero rappresentante la loro posizione.
cancella: rimuove un nominativo dalla lista. Per indicare il nominativo
da rimuovere l'utente specifica il suo numero come specificato dal comando lista.
cerca: visualizza tutti i nominativi per i quali:
se il nominativo rappresenta una persona la stringa specificata nel comando cerca e'
presente all'interno del nome o del cognome
se il nominativo rappresenta una ditta la stringa specificata nel comando cerca e'
presente all'interno della ragione sociale
Tali nominativi devono essere preceduti dallo stesso numero d'ordine che hanno se
visualizzati attraverso il comando lista.
Formato del file XML.
Il file agenda.xml deve essere valido rispetto al seguente frammento di DTD:
<!ELEMENT agenda (entry)*> <!ELEMENT entry (person|company)*> <!ELEMENT person (lastname, firstname, telnum)> <!ELEMENT company (companyname, telnum)> <!ELEMENT lastname (#PCDATA)> <!ELEMENT firstname (#PCDATA)> <!ELEMENT companyname (#PCDATA)> <!ELEMENT telnum (#PCDATA)>
Modalita' di sviluppo
Usare sempre, per ogni revisione sui sorgenti, il tool RCS effettuando il checkin con commenti adeguati.
Per la compilazione e la generazione dei commenti JavaDOC si deve utilizzare il tool ANT come spiegato a lezione
Gruppi
I gruppi dovranno essere composti da due o tre persone. In casi particolari (es. studenti lavoratori) potrebbero essere accettati anche gruppi da uno previo richiesta con mail alla dott. Turrini.
Modalita' di consegna
Occorre consegnare in formato digitale (mail a turrini@cs.unibo.it) un file in formato jar (per info sul formato jar fare riferimento a: http://developer.java.sun.com/developer/Books/JAR/basics/index.html) contenente:
il file build.xml
(contenenti almeno i task javac, javadoc, jar piu' il target di init e di clean e un target
help, implementato utilizzando il task echo, che permette di visualizzare il nome
dei vari target e cosa fanno)
e le seguenti directory:
src
contiente i sorgenti del progetto. Si ricorda che i sorgenti devono
essere scritti seguendo opportune regole di coding style, devono essere commentati
in maniera chiara e non banale.
Es. di commento banale:
i++; // incremento della variabile
es. di commento appropriato:
// ricerca della prima posizione libera
while ((tree[firstFreePosition] != null) && (i < size)) {
firstFreePosition = (firstFreePosition + 1) % size;
i++;
}
if (tree[firstFreePosition] != null){
firstFreePosition = -1;
}
classes
contenente i file .class con il bytecode risultante dalla compilazione dei sorgenti
doc
contente la documentazione che deve essere scritta e quindi generata
automaticamente utilizzando javadoc. Inoltre occorre aggiungere un documento
project.html
in formato HTML dove vengono descritte le scelte progettuali effettuate (per esempio:
uso di una certa struttura dati piuttosto che un'altra, descrizione per sommi
capi della struttura del progetto e del codice sorgente dei metodi piu' importanti
)
La documentazione deve essere consegnata anche in formato cartaceo lasciandola
nella casella di posta dei dottorandi (che si trova al primo piano del dipartimento
di informatica) indirizzata alla dott. Turrini.
Vanno consegnate in forma cartacea i seguenti files:
enscript -r nomefile
). Ogni file deve essere graffettato nell'angolo in alto a sinistra
I tempi per la consegna della documentazione cartacea sono gli stessi della
consegna del progetto.
La directory dei sorgenti deve inoltre contenere anche i file generati con RCS (dei quali e' richiesto solo il formato digitale)
dist
contenente
il file jar da installare. Tale file deve contenere i .class e il file manifest
nel quale e' indicato l'entry point.
In sostanza facendo java -jar nome.jar
deve venire lanciato il vostro programma.
La mail deve avere subjet
"consegna progetto <nomeGruppo>" e in attachment il file <nomeGruppo.jar>.
Il nome gruppo deve essere di al massimo 6 digit (lettere o numeri) (puo' essere
formato con le sillabe iniziali dei cognomi)
Una volta consegnato, si ricevera'
una mail di risposta nella quale verra'
indicato la data e l'ora in cui presentarvi
per la discussione del progetto.
Tempi di consegna
La consegna va effettuata almeno 10 giorni prima della data dello scritto dell'appello nel quale si ha intenzione di sostenere l'esame.
Valutazione del progetto
Alla discussione del progetto devono essere presenti tutti
i membri del gruppo.
Essa mira ad individuare il livello di comprensione di
cio' che e' stato consegnato e l'attiva partecipazione di tutti i membri del gruppo
alla realizzazione del progetto.
Ecco un esempio delle domande che potranno
essere fatte:
spiegare alcune scelte progettuali
spiegare cosa fa un determinato metodo
spiegare l'organizzazione delle classi
spiegare l'utilizzo che e' stato fatto di RCS e ANT
Modalita' Esame
L'esame e' costituito da un progetto, dalla discussione orale dello stesso, e da uno scritto. Se dopo queste prove la valutazione globale dovesse risultare lievemente insufficiente verra' richiesta un'ulteriore prova orale.
Note.
Prevedendo future funzionalita' l'implementazione realizzata deve essere tale per cui i nominativi che rappresentano delle persone devono memorizzare nome e cognome come due stringhe distinte.
Eventuali comandi errati immessi dall'utente (sintassi errata, riferimenti a numeri di nominativi non esistenti, ecc...) non devono compromettere la funzionalita' del programma e devono risultare in messaggi d'errore chiaramente interpretabili dall'utente.
L'uso di un dtd per validare il file agenda.xml e' decisamente raccomandabile.