Alcuni consigli sulla stesura della tesina

  1. Nella lezione del 23/05/02 si è affrontato l'argomento della scelta del linguaggio di codifica per la tesina. Vorrei ribadire che la scelta del linguaggio di codifica fa parte delle attività di progetto (e va motivata). Il linguaggio deve essere object oriented. Parti diverse del sistema possono essere codificate in linguaggi diversi.
  2. Ricordo a tutti che esistono vari ambienti di sviluppo che si integrano bene con gli strumenti CASE che è possibile utilizzare. A titolo di esempio, Poseidon si integra come modulo di NetBeans o Sun Forte (tool di sviluppo Java), Rational Rose si integra con Visual Studio (linguaggi VC++ e VB) e IBM VisualAge (Java), MS Visio nell'ultima versione è stato integrato in Visual Studio .NET.

Per la pulizia stilistica che ne consegue è consigliabile l'uso di JAVA (che è il linguaggio preso come riferimento nel libro di testo). Ricordo a tutti che l'interfacciamento del linguaggio JAVA con i database è possibile con estrema facilità grazie al JDBC (vedi sito SUN). Sono sconsigliate soluzioni basate su pagine web dinamiche ASP o php in quanto violano lo spirito del corso e falserebbero gli obbiettivi di valutazione posti per la tesina. Infatti, la metodologia di progettazione studiata nel corso non è particolarmente adatta alla progettazione di soluzioni web-based.

  1. Con riguardo al documento contenente la scaletta di massima del progetto (indirizzo: www.csai.unipa.it/cossentino/isw0102/ppt/SPMPtmpl.html), preciso che nel capitolo 2 (Project Organization) va inserita (nei relativi paragrafi) la pianificazione effettuata con l'uso del MS Project (programma e licenza sono disponibili per gli studenti del corso).
  2. Nel testo della tesina (requisiti minimi) si parla di 'supporto alle decisioni'. Ciò è da intendersi nel senso che il programma fornisce all'utente tutte le informazioni affinchè egli possa prendere le decisioni e NON nel senso che il programma suggerisce le scelte in base a un criterio che potrebbe ad esempio coinvolgere un sistema esperto o altre tecniche di AI (questo non è vietato, semplicemente non è richiesto).
     
  3. Scaletta proposta per le tesine:

- Problem Statement
- Software Project Management Plan (SPMP)
- Requirements Analysis Document (RAD)
- System Design Document (SDD)
- Object Design Document (ODD)

(vedasi esempi degli autori del libro:  progetto JAMES, progetto TRAMP)

Esempio di tesina 2001-02

 


Frequently Asked Questions

Domanda: E' richiesta la presenza di più terminali di lavoro(e quindi più addetti alla vendita)?

Risposta: I terminali minimi richiesti sono 3: Vendite (probabilmente usato da un commesso), Magazzino (probabilmente usato dal magazziniere), Gestione Ordini (probabilmente usato dal responsabile del punto vendita). Bisogna prevederli distinti e se del caso si può prevedere anche una postazione server (requisito non espresso nel testo della tesina, si tratta soltanto di una scelta progettuale che può essere fatta o meno) .

Domanda: In caso affermativo,il sistema deve anche prevedere terminali di consultazione per i CLIENTI della libreria, oppure essi per la ricerca e  l'acquisto del libro (o più libri) devono riferirsi all'addetto alla vendita (che accede al DB dal proprio terminale)?

Risposta: Non sono espressamente richiesti terminali a disposizioni dei clienti. Rimane a disposizione del progettista la possibilità di aggiungere tutti i requisiti che ritenga utili (tenendo conto della traccia espressa e senza violare quanto in essa dettagliato) .

Domanda: Naturalmente faccio riferimento a lei come ipotetico committente del software

Risposta: Corretto

Domanda: In riferimento al punto 3): "gestione ordini" di chi? dei clienti o dei fornitori? o entrambi?

Risposta: Quando si parla di ordine si intende quello spiccato dalla libreria nei confronti del suo fornitore. Ovviamente un ordine può contenere parecchi libri con lo stesso titolo o anche titoli diversi. Ovviamente le ragioni per cui il commesso o altro dipendente della libreria emettono un ordine possono spaziare dalla volontà di rifornire le scorte di magazzino prima dell'inizio dei corsi (e della domanda di libri) alla esigenza di sopperire a richieste specifiche da parte del cliente.

Domanda: Non mi è chiaro (in relazione al punto 2) :"Si noti che un ordine si considera evaso quando tutti i libri in esso contenuti sono stati evasi presi in carico".

Risposta: Si supponga che nell'ordine numero 100/2002 siano stati richieste 10 copie del libro X e 5 copie del libro Y. Può ovviamente accadere che il libro Y sia in ristampa e la sua consegna venga ritardata. Allora la casa produttrice consegnerà le 10 copie del libro X e la libreria manterrà l'ordine aperto finchè non riceverà tutta quanta la merce ordinata (cioè nell'esempio anche le 5 copie del libro Y).

Domanda: Sul sito dedicato al corso di Ing. del Software, lei ha messo a disposizione alcuni template da usare come linea guida per la stesura di alcuni documenti (Object Design Document, Requirements Analysis Document, ...). Le sarebbe possibile mettere sul sito anche un template di "più alto livello" che definisca l'insieme minimale di documenti che dovranno costituire la tesina ?

Risposta: Vedere esempio di tesina svolta o esempi degli autori del libro:  progetto JAMES, progetto TRAMP.

Domanda: Supponiamo che il cliente della libreria voglia acquistare un libro che non è presente in magazzino. Il commesso provvederà quindi ad ordinarlo, richiedendo al cliente un acconto e il nominativo. Supponiamo che il cliente a questo punto non torni più a ritirare il libro, lasciandolo quindi non disponibile alla vendita. Se tale caso è plausibile, come ci si deve comportare? (in attesa di risposta si è pensato di lasciare il libro in 'sospeso' per un certo periodo di tempo (es: 1 mese), dopo tale periodo il libro passerà in uno stato di disponibilità).

Risposta: L'ipotesi di lasciare il libro in sospeso per un tempo determinato è sicuramente ragionevole. Corretta è anche la procedura di prenotazione del libro (acconto+nominativo). L'acconto fa però supporre che il cliente non si scorderà di ritirare il libro!

Domanda: Il sistema software deve gestire anche informazioni circa l'ubicazione del libro nel magazzino?Se si, quali sono gli attributi desiderati che identificano l'ubicazione?

Risposta: Non è specificatamente richiesto.

Domanda: Che cosa si intende per "accesso agli ordini non evasi" da parte del ruolo Responsabile delle Vendite? Allo stato attuale, noi abbiamo inteso che è il magazziniere a stabilire se un ordine è evaso o meno, in base alle consegne che giungono al magazzino e agli ordini fatti dal Resp.Vendite. Quindi il Resp.Vendite (oltre a effettuare gli ordini) accede alle informazioni relative agli ordini non evasi solamente per eventuali solleciti al fornitore.

Risposta: Corretto. Inoltre aggiungerei sempre la possibilità di cancellare un ordine (in parte o del tutto) anche dopo che è stato evaso. Si supponga che un libro ordinato risulti non più disponibile presso la casa editrice. Può essere il caso di cancellare quell'ordine piuttosto che lasciarlo aperto per sempre.

Domanda: Riguardo al supporto decisionale, mi potrebbe chiarire cosa intende quando parla di "Analisi del periodo dell'anno"? Dobbiamo avere delle statistiche conservate? Io penso che un corso universitario si tenga solo una volta in un anno accademico. Ed allora come facciamo ad usare l'analisi del  periodo dell'anno per stabilire quanti libri comprare?

Risposta: Supponga che ci si trovi all'inizio dell'anno solare. Si avvicina allora l'inizio del terzo modulo (febbraio). L'impiegato della libreria addetto a pianificare l'acquisto di nuovi libri, può allora necessitare di alcune info: quali corsi si tengono nel terzo modulo, quanti studenti sono previsti per ognuno di essi (questo dato si può, in prima approssimazione, supporre coincidente con quello degli studenti iscritti a un certo anno di corso), quali libri di testo sono consigliati/richiesti in quei corsi, quante copie di questi libri sono già disponibili in magazzino, etc.
Quindi per analisi del periodo dell'anno si intende la fornitura delle informazioni relative ai corsi di un dato modulo.
Non è detto che un corso si tenga una sola volta in un anno, ad esempio può accadere che corsi paralleli dello stesso insegnamento si svolgano in periodi non coincidenti.

Domanda: Riguardo allo strumento MS-Project, vorrei sapere a chi rivolgermi per averlo con licenza.

Risposta: Si rivolga all'ing. Burrafato (pmb@csai.unipa.it) allo CSAI lab (terzo piano DIE)

Domanda: Dobbiamo cominciare a sviluppare il progetto relativo alla tesina, ma ovviamente abbiamo bisogno di conoscere prima l'esatta scaletta della tesina. Non abbiamo capito dove dobbiamo inserire la parte relativa all'ERD e al database. Potrebbe indicarci la corretta collocazione all'interno del progetto?

Risposta: Per quanto riguarda la scaletta complessiva, vi consiglierei di riferirvi a quanto illustrato nel punto 5 dei consigli sulla stesura della tesina.

Per la progettazione del database potrete procedere in tal modo:
1) la progettazione concettuale poichè è strettamente legata alla analisi del dominio può essere posta nel capitolo 3.5.3 (modello degli oggetti) del documento RAD. A titolo di esempio si considerino i diagrammi delle classi presenti nell'esempio http://james.globalse.org/james1/J_courseDocs/RAD/RAD_VIP/RAD_VIP.html. Come si può notare essi sono dei dagrammi entità-relazioni espressi sotto forma di diagrammi delle classi (pratica abbastanza comune). Si può quindi usare lo stesso approccio dell'esempio anzidetto (definizione delle entità nel paragrafo Dizionario dei dati e descrizione delle loro relazioni in un altro paragrafo che chiamerei diagrammi entità relazioni se si usano gli ERD al posto dei diagrammi delle classi).
2) il progetto logico può essere inserito nel capitolo 5 (Data Management) del documento di System Design. Esso è infatti dedicato ad esplorare le problematiche relative ai dati e dar loro soluzione. Da questa analisi potrebbe ad esempio emergere l'esigenza di una distribuzione dei dati in più database (in base alla loro disponibilità/reperibilità) o server (per problemi di prestazioni).
3) Nell'Object Design andranno ovviamente dettagliate tutte le classi che permettono l'accesso ai dati e che sono state (probabilmente) introdotte nelle fasi precedenti.