Upload
alartzero
View
235
Download
3
Embed Size (px)
Citation preview
ANALISI:
1. Traccia del problema:
Si richiede il progetto realizzativo e test di un programma (in Java) per l’organizzazione di
documenti in formato digitale (es.PDF).
• Aggiungere uno o più documenti all’elenco, ciascuno descritto tramite:
Numero progressivo
Titolo
Autore/i
Argomento
Data pubblicazione
Nome del file
• Elencare, su richiesta, i documenti (ciascuno con le relative informazioni) relativi ad
un certo argomento o ad un certo autore;
• Cercare le informazioni relative ad un certo documento in base al suo titolo, al
numero progressivo o ad uno dei suoi autori, consentendo di
i. Eliminarlo dall’elenco
ii. Modificare le relative informazioni
2. Obiettivo del problema:
Viene richiesta la gestione di un archivio di documenti in formato digitale, permettendo
nello specifico di elencare, su richiesta, i documenti relativi ad un certo argomento o ad un
certo autore e ricercare le informazioni relative ad un certo documento rispetto al titolo,
numero progressivo o autore, consentendone la modifica, di determinati dati, o la sua
eliminazione.
3. Ambiguità e imprecisioni: Analizzando la realtà del problema sono sorte le seguenti ambiguità ed imprecisioni:
• non viene specificata la dimensione massima dell’ archivio di documenti; per ovviare
a tale problema è stato scelto di fissare tale dimensione a n elementi;
• nel momento in cui vi è la richiesta di elencazione dei documenti, non è chiaro in che
modo questi devono essere visualizzati nel caso in cui la ricerca deve avvenire
secondo titolo, autore o argomento; per ovviare a tale problema tutti i documenti
verranno visualizzati secondo la loro posizione nell’ archivio;
1
• non viene specificato come deve avvenire la ricerca del documento nell’archivio e se
tale ricerca si deve fermare nel momento in cui viene trovato il primo elemento,
oppure se devono essere individuati tutti gli elementi; nella nostra implementazione
la ricerca si ferma al primo elemento trovato ;
• quando viene richiesta la cancellazione, una volta eliminato l’elemento, non è
specificato se l’intera lista di documenti dell’archivio deve essere slittata oppure se
nel successivo inserimento tale spazio viene riempito dal nuovo documento; si è
optato per lo slittamento dei documenti con relativo aggiornamento del numero
progressivo;
• nella modifica delle informazioni del singolo documento non viene specificato se
devono essere modificati tutti i campi di tale documento, oppure alcuni di essi; per
ovviare a tale problema viene consentita la modifica di tutti i campi del documento;
• non viene specificato la struttura intera del file archivio che deve contenere i
documenti;
• non è esplicitato se l’archivio è gia creato o se deve essere creato ex novo;
• non è specificato se tale archivio deve risiedere su supporto fisico o su supporto
volatile.
4. Output:
Una lista composta da uno o più documenti gestiti secondo un determinato parametro fissato
che garantirà l’univocità di ogni singolo elemento. Tale campo sarà il campo numero
progressivo.
Ogni documento viene descritto da un campo contenente un numero progressivo che ne
rappresenta la sua univocità, da un campo titolo che ne descrive la dominazione, il campo
autore che contiene appunto le informazioni sull’identità dell’autore del documento, il
campo argomento che contiene il contenuto di carattere generale, il campo data
pubblicazione che contiene il giorno, il mese e l’anno di sottoscrizione del documento, e il
campo nome file che contiene il nome e l’estensione con cui viene memorizzato sul
supporto fisico.
Nel caso in cui vi è la richiesta di elencazione dei documenti secondo un determinato
campo, viene creata una lista di documenti facendo in modo che ne vengano visualizzati
tutti i dati relativi.
Sarà permesso l’aggiornamento della lista mediante le operazioni di cancellazione o
modifica in base ad un attributo del documento scelto dall’utente.
2
5. Punti Chiave:
Dominio dei dati:
• Numero progressivo, numero intero, [0…n] dove n indica il numero massimo di
documenti, identifica i documenti in maniera univoca; l’ordinamento scelto è
crescente;
• Titolo, Stringa[0…25caratteri], identifica il documento in maniera generale;
• Autore/i, Stringa[0…25caratteri], identifica il/i creatore/i del documento;
• Argomento, Stringa[0…25caratteri], identifica il contenuto del documento;
• Data di Pubblicazione, Stringa, identifica il giorno, il mese e l’anno di pubblicazione
del documento;
• Nome del file,Stringa[0…25caratteri], identifica in maniera univoca il path del file.
Risultati:
• Lista i cui campi sono stati descritti sopra, ordinati in maniera crescente in base al
numero progressivo;
• Singolo elemento preso dell’ archivio, che risponde alle specifiche definite
dall’utente, consentendone la modifica o la cancellazione dei suoi campi.
6. Errori e casi limite:
Ci possono essere errori relativi all’input di ciascun campo, come ad esempio argomenti
vuoti o assegnazioni di valori che non appartengono al dominio di definizione del campo
relativo; per ovviare a tale problema saranno previsti dei check di validità su ogni campo del
documento nel momento dell’ inserimento.
Nel momento in cui ci saranno più di n elementi nella lista ci sarà un controllo che non
permetterà l’inserimento di ulteriori elementi da parte dell’ utente.
L’archivio dei documenti può non contenere alcun documento, in questo caso viene inviato
un opportuno messaggio di diagnostica all’utente.
Nella ricerca di un documento secondo un determinato parametro, possiamo non avere alcun
documento che risponde a quella chiave di ricerca. Anche in questo caso l’utente verrà
informato di questo risultato.
3
PROGETTAZIONE
• Problema: Inserimento di un nuovo documento nell’archivio.
• Input: Titolo, Autore/i, Argomento, Data Pubblicazione, Nome del file
• Output: File Archivio;
• Organizzazione inserimento:
Nella fase di inserimento il numero progressivo viene definito in maniera automatica
dal programma.
Su ogni campo vengono effettuati i seguenti controlli:
Per i campi stringa viene controllato che tale campo non sia vuoto o che non
superi la sua capacità (pari a 25 caratteri).
Per il campo data pubblicazione vengono controllati i range prestabiliti per i
giorni, i mesi e gli anni; in particolare il giorno deve essere compreso tra 1 e
31, il mese deve essere compreso tra 1 e 12 mentre l’anno deve essere
compreso tra il 1800 e il 2007)
• Il file deve essere ad accesso casuale per permettere di accedere direttamente a un
determinato documento.
ALGORITMO(inserimento)
Dimensione quanti elementi ci sono nel file
Numero progressivo Dimensione
Ripeti
Leggi il campo Titolo
Finche ((Titolo==0)||(Titolo>=25))
Ripeti
Leggi il campo Autore
Finche ((Autore==0)||(Autore>=25))
Ripeti
Leggi il campo Argomento
Finche ((Argomento==0)|| (Argomento>=25))
Ripeti
4
Leggi il campo Nome File
Finche ((Nome File==0)|| (Nome File>=25))
Ripeti
Leggi campo Data pubblicazione
Seleziona il giorno
Seleziona il mese
Selezione dell’anno
Finche ((((giorno>31)||(giorno<1)) || ((mese<1)||(mese>12))) || ((anno>2007) ||(anno<1800)))
Posizioniamo il carrello alla posizione di numero progressivo
Scriviamo tutti i campi nella posizione di numero progressivo
Dimensione Dimensione+1
Chiudiamo il file aperto in scrittura
• Problema: Elencare i documenti inerenti ad argomento o ad un certo autore.
• Input: Argomento, Autore, File Archivio,Scelta
• Output: Tutti i campi del documento
• Organizzazione elenco documenti:
Vengono fatti visualizzare tutti i campi del documento in maniera consecutiva
,ordinati secondo il campo numero progressivo.
Nel caso in cui il documento non è presente all’interno dell’archivio, l’utente sarà
avvisato mediante un messaggio a video.
• Per permettere l’elencazione dei documenti utilizziamo una ricerca di tipo sequenziale,
effettuando uno screening di tutto il file in base alla chiave di ricerca , inviando quindi in
output tutti gli elementi trovati e le informazioni associate.
ALGORITMO(elencazione)
Leggi il contenuto del campo scelto
Contatore 0
Test Falso
Fintanto che (Contatore<Dimensione)
Leggi il documento dal file in posizione Contatore
Se (Documento. campo scelto == campo scelto)
Allora Stampa tutti i campi del documento a video
5
Test Vero
Contatore Contatore+1
Chiudiamo il file aperto in lettura
Se (Test == Falso)
Allora Avvisa l’utente che non e presente il documento nell’archivio con il campo
selezionato
• Problema: Cercare le informazioni relative ad un documento in base a titolo, numero
progressivo o autori consentendo quindi l’eliminazione dall’elenco oppure la modifica delle
informazioni associate.
• Input: Titolo, Numero progressivo, Autore, File Archivio, Scelta;
• Output: File Archivio;
• Organizzazione Ricerca:
Effettuiamo una ricerca sequenziale in cui sarà preso in considerazione solo il primo
elemento trovato; nel caso in cui la ricerca dia esito positivo, avviseremo l’utente del
risultato.
A questo punto all’utente saranno consentite due operazioni:
eliminazione dell’elemento
modifica dati
In caso di eliminazione del documento verrà utilizzato un file di appoggio che ci
consentirà l’aggiornamento del vecchio archivio.
Nel caso in cui la ricerca venga effettuata secondo il numero progressivo,
utilizzeremo il carrello del file per posizionarci direttamente sul documento da
manipolare.
ALGORITMO(ricerca)
Leggi il campo selezionato
Test Falso
Contatore 0
Fintanto che ((Contatore<Dimensione) && (!Test))
Leggi documento dall’ archivio in posizione Contatore
Se (Documento. campo selezionato==campo scelto)
Allora Test Vero
6
Leggi scelta
Se (scelta==”M”)
Allora Modifica
Se(scelta==”E”)
Allora Eliminazione
Contatore Contatore+1
Se (Test==Falso)
Allora Avvisa l’utente che non e presente il documento nell’archivio con il
campo selezionato
Chiudere il file
ALGORITMO(eliminazione)
Apriamo un file in appoggio in scrittura
Contatore 0
Fintanto che (Contatore<numero progressivo del documento da eliminare)
Leggi il documento dal file principale in posizione contatore
Scrivi il documento nel file di appoggio in posizione contatore
Contatore Contatore+1
Contatore Contatore+1
Se il contatore non ha superato la dimensione dell‘ archivio
Allora
Fintato che(Contatore<Dimensione del file principale)
Leggi il documento dal file principale in
posizione contatore
Scrivi il documento nel file di appoggio in
posizione contatore-1 aggiornando in numero
progressivo
Ricopiamo il file di appoggio nel file principale
Diminuiamo la dimensione del file principale
Chiudiamo il file di appoggio
7
ALGORITMO(modifica)
Richiamiamo l’algoritmo di inserimento passando come parametro il numero progressivo
del documento da modificare
• Archivio: File ad accesso casuale
TOP-DOWN
DocGest
Inserimento
Elenco Ricerca
Eliminazione
Modifica
TEST Per eseguire i test si e scelto il metodo a scatola nera e quindi le seguenti classi di equivalenza:
Per l’operazione di inserimento avremo:
Classe 1 :
Input : file vuoto e gli elementi da inserire
Output : file aggiornato con i nuovi elementi
Fig 1.1 Il file archivio è vuoto e non
contiene documenti
8
Fig 1.2 Vengono presi in input i campi del documento
Fig 1.3: Il file archivio viene aggiornato non i valori inseriti in input
Classe 2 :
Input : file contente documento non completamente pieno e elementi da inserire
Output : file con aggiunti in coda i nuovi elementi
Fig 2 Il file archivio contiene un documento e nel momento dell’ inserimento in nuovo documento
viene inserito in cosa.
9
Classe 3 :
Input : file completamente pieno e elementi da inserire
Output : non viene consentita l’operazione di inserimento
Fig 3 Nel caso di archivio pieno sono consentite soltanto queste operazioni
Classe 4 :
Input : file inesistente
Output : file creato
Fig4.1 Il file archivio non esiste nella directory del programma
Fig. 4.2 Il file viene creato nella directory e viene dato un messaggio
10
Classe 5:
Input : campo titolo non conforme alle specifiche
Output : reinserimento del campo
Fig 5 Viene prima inserito un campo vuoto, poi un campo con un numero di caratteri superiore e 25
e poi uno compreso tra 0 e 25 caratteri.
Classe 6:
Input : campo argomento non conforme alle specifiche
Output : reinserimento del campo(come per il caso del titolo)
Classe 7:
Input : campo nome del file non conforme alle specifiche
Output : reinserimento del campo(come per il caso del titolo)
Classe 8:
Input : campo data pubblicazione non conforme alle specifiche
Output : reinserimento del campo(come per il caso del titolo)
Classe 9:
Input : campo autore non conforme alle specifiche
Output : reinserimento del campo(come per il caso del titolo)
Per l’ operazione di elencazione avremo:
Classe 1:
Input : il file possiede più elementi,di cui molti hanno il campo scelto
Output : tutti gli elementi trovati con quel parametro
Fig 1 Nell’archivio sono presenti 2 documento che rispondono al campo argomento sotto il nome
“MANUALE JAVA”
11
Classe 2 :
Input : il file possiede più elementi ma un solo elemento con il campo scelto
Output : l’elemento trovato
Fig 2 L’archivio contiene due documenti e uno solo di questi ha per campo Argomento il
nominativo “MANUALE JAVA”
Classe 3 :
Input : il file possiede più elementi nessuno dei quali contiene il
parametro scelto
Output : messaggio a video del documento non presente
Fig 3 Nel caso in cui non e presente un documento che risponde a quel campo viene mandato a
video un messaggio.
Classe 4 :
Input : il file contiene un solo elemento che contiene il parametro scelto
Output : l’elemento trovato
Fig 4 Il file archivio contiene un documento con campo argomento che risponde al nominativo di
“MANUALE JAVA”
12
Classe 5:
Input: il file contiene un solo elemento che non contiene il parametro scelto
Output:messaggio a video del documento non presente
Fig 5 Nell’ archivio di un solo elemento è presente un documento che non risponde al campo dato
in input.
Per l’operazione di ricerca avremo:
Classe 1:
Input : il file possiede più elementi,di cui molti hanno il campo scelto
Output : il primo degli elementi trovati
Fig 1 Nell’archivio sono presenti documenti aventi lo stesso titolo,viene analizzato solo il primo
degli elementi
Classe 2 :
Input : il file possiede più elementi ma un solo elemento con il campo scelto
Output : l’elemento trovato
Fig 2 Nell’archivio sono presenti dei documenti ma solo uno di loro risponde al campo prescelto
13
Classe 3 :
Input : il file possiede più elementi nessuno dei quali contiene il
parametro scelto
Output : messaggio a video del documento mancante
Fig 3 Nell’ archivio sono presenti dei documenti,pero nessuno di loro risponde al parametro preso
in input, per questo ne viene visualizzato un messaggio di avviso.
Classe 4 :
Input : il file contiene un solo elemento che contiene il parametro scelto
Output : l’elemento trovato
Fig 4 Nell’archivio è presente un solo documento che risponde al parametro preso in input
Classe 5 :
Input : il file contiene un solo elemento che non e il valore cercato
Output : elemento non trovato
Fig 5 Nell’archivio è presente un solo documento che non risponde al parametro preso in input
14
Per l’ operazione di eliminazione:
Classe 1:
Input : l’elemento da eliminare si trova all’ interno del file
Output : eliminiamo il documento dal file
Fig 1.1 Nell’archivio sono presenti dei documenti
Fig 1.2 Dopo l’eliminazione, nell’ archivio sono presenti i restanti documenti
Classe 2:
Input : l’elemento da eliminare si trova in coda al file
Output : eliminiamo il documento dal file(come per la classe 1)
Classe 3:
Input : il file contiene un solo elemento e risponde al parametro definito
Output : il file risulta vuoto
Fig 3.1 Il file archivio contiene un solo documento
15
Fig 3.2 Dopo l’eliminazione dell’elemento il file archivio risulta vuoto e per questo vi e consentito
solo l’inserimento di un nuovo elemento
Per l’operazione di modifica:
Classe 1:
Input:elemento da modificare si trova all’interno del file
Output:vengono modificati i campi di quel documento
Fig 1.1 Sono presenti dei documenti all’interno dell’archivio
Fig 1.2 Nel momento della modifica dei dati vengono fatti visualizzare prima tutti i vecchi campi
del documento e poi vengono richiesti i nuovi campi del documento
16