Alcuni consigli sulla stesura della tesina

  1. 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/Studio One (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, 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. Le tesine proposte come esempio non sono esenti da errori. Esse vanno esaminate con molto spirito critico e in nessun modo devono sostituire il libro di testo che rimane la fonte di consultazione più attendibile.
     
  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)

  1. ODD per le tesine ridotte: A partire dal codice generato con il CASE tool (quello che va compilato!), aggiungere i commenti in JAVADoc come studiato. Si noti che il diagramma delle classi raffinato da cui si genera il codice fa parte del'ODD.
  2. Coloro i quali non codificassero la loro tesina in JAVA ma in C++ e che quindi non possono usare JAVADoc ma ugualmente DEVONO documentare il loro codice come parte dell'ODD, possono usare Doxygen che può essere scaricato all'indirizzo: http://www.stack.nl/~dimitri/doxygen/index.html.
  3. Uno degli obbiettivi del corso è sviluppare la capacità di lavoro in gruppo degli studenti (abilità fondamentale del software engineer), per questo è fortemente sconsigliata la presentazione di tesine individuali.

 


Frequently Asked Questions

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 gli esempi di tesine svolte o esempi degli autori del libro:  progetto JAMES, progetto TRAMP.

 

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.

 

Domanda: Non risulta chiara la strategia di composizione dei lotti di produzione

Risposta: Il processo si articola in tre fasi. Nella prima il programma provvederà ad associare automaticamente gli ordini che avendo data di consegna ragionevolmente vicina danno luogo ad un numero di pezzi coerente con le specifiche del lotto di produzione (50-150). Non è richiesto un particolare sforzo di identificazione di algoritmi sofisticati in questa fase. Essi prescinderebbero dagli obbiettivi e contenuti di questo corso. Nella seconda fase l'addetto alla produzione provvederà a comporre gli altri lotti di produzione (o ad aggiungere ordini a quelli creati dal programma). Qualora egli non potesse inserire uno o più ordini perchè facendo ciò violerebbe le specifiche numeriche del lotto di produzione allora tali ordini verranno sottoposti all'attenzione del responsabile della produzione che provvederà ad inserirli.
Si pensi al caso di un ordine da 180 pezzi. Esso può essere schedulato in due lotti successivi (ad es. 150 e 30 pezzi) . Questo pone il problema di far lavorare la fabbrica al di sotto del regime ottimale (50-150) di pezzi prodotti nel secondo lotto. Ovviamente può capitare che questi pezzi vadano a sommarsi a quelli di un altro ordine. In tal caso il problema può essere affrontato dall'addetto alla produzione. In caso contrario (non esistono altri ordini da sommare ai rimanenti 30 pezzi) viene coinvolto il responsabile della produzione che potrà scegliere se creare un unico lotto di 180 pezzi (facendo fare dello straordinario agli operai dell'azienda) oppure ad esempio due lotti da 90 pezzi che rientrano nei parametri standard di produzione ma avrebbero il difetto di impegnare la catena produttiva per il doppio del tempo relativo alla precedente scelta.
C'è da aspettarsi che il responsabile alla produzione sia coinvolto nella composizione di pochissimi lotti. La maggior parte del lavoro spetta all'addetto alla produzione.

 

Domanda: Risulta poco chiaro il testo della tesina dove nella sezione "Requisiti minimi del sistema" discute la composizione dei lotti di produzione.

Risposta: Al fine di rendere più chiaro il testo lo si modifica come segue (modifiche in corsivo):

 

Domanda: Come è possibile produrre lotti di più di 150 pezzi se la produzione giornaliera si suppone di 50 pezzi al giorno senza aumentare l'impegno della catena produttiva oltre i tre giorni (solitamente massimo impegno temporale per un lotto di 150 pezzi con 50 pezzi prodotti al giorno)?

Risposta: L'azienda può usufruire di turni di lavoro più lunghi (lavoro straordinario) oppure in determinate condizioni di sovraccarico di lavoro aggiungere un altro turno di lavoro (es. turno di notte) al fine di raddoppiare la produttività giornaliera. Questa scelta spetta al responsabile alla produzione. Ovviamente non è ragionevole supporre che la produzione giornaliera possa arrivare a qualunque numero di pezzi (es. 400).

 

Domanda: Ci sono errori nelle tesine proposte come esempio oppure è sbagliato il libro/sto sbagliando io (studente) l'impostazione?

Risposta: Le tesine proposte contengono probabilmente degli errori. Non sono da prendersi come strumento di studio ma pura esemplificazione di massima del lavoro da svolgere in termini di dimensioni delle parti e stile di documentazione. Mi è stato ad esempio riportato che in alcuni sequence diagram non sono presenti le dovute classi di controllo e/o entità. E' possibile, ciò non vuol dire che non dovevano esserci. La fonte di studio principale rimane il libro, secondariamente ci sono le slide da me presentate e gli appunti presi a lezione.

 

Domanda: Abbiamo un dubbio su quale sia la mansione dell'addetto ufficio clienti: interagisce col software o consegna gli ordini raccolti all'addetto produzione in maniera non automatica?

Risposta: Mi pare ragionevole supporre che l'addetto all'ufficio clienti introduca i dati dell'ordine ricevuti dal cliente nel sistema informatico. L'addetto alla produzione potrà quindi consultarli tramite il software.

 

Domanda: Bisogna fare degli senari delle eccezioni?

Risposta: Le eccezioni spesso necessitano di un approfondimento che giustifica uno scenario apposito ma nella tesina potete evitare quelle più banali

 

Domanda: Possiamo fare un caso d'uso senza aver fatto uno scenario inerente?

Risposta: Come da regola generale, un caso d'uso deve discendere dalla generalizzazione di uno o più scenari (testuali nella raccolta dei requisiti, sotto forma di sequence diagram nella analisi dei requisiti).

 

Domanda: Stiamo creando dei casi d'uso generali che comprendono, al loro interno, altri casi d'uso particolari. Che tipo di documentazione dobbiamo mettere per questo tipo di casi d'uso?

Risposta: La documentazione del caso d'uso va fatta come da scaletta proposta nel libro ed a lezione anche quando esso viene decomposto in altri più dettagliati. In più ovviamente esso avrà un nuovo diagramma dei casi d'uso contenente il maggior livello di dettaglio