Progetto: Sito Internet per prenotare i biglietti di concerti

Come impostare lo sviluppo di un progetto
As proposed by the project sponsor
As specified in the project request
As produced by the programmers
As designed by the senior analyst
As installed at the user's site
What the user wanted
Impostazione di un Progetto
Marconi Team
Pag 1/13 /
Nell'intento di mostrare come impostare in modo metodologicamente corretto lo sviluppo di un progetto,
ipotizziamo la creazione di un sito e procediamo a svilupparne uno, calcando la mano sugli aspetti metodologici e
semplificando al massimo.
E' solo una proposta e nell'arco della vostra carriera incontrerete modelli e standard migliori.
Note tipografiche: per distinguere la parte relativa allo sviluppo da quella di commento il testo solo descrittivo è
incorniciato e in carattere Comic Sans MS
Requisiti e Obiettivi (Traccia)
In questa fase viene formalizzato COSA viene richiesto dal punto di vista dell'UTENTE. Spesso l'utente non
ha le idee chiare su quello che le moderne tecnologie possono effettivamente fornine, ma è lui che paga (con i
soldi -l'azienda-, con il voto -il professore-) per cui bisogna capire COSA richiede l'UTENTE.
E' un punto di vista ESTERNO.
Se si tratta di un “cliente vero”,
è la fase dell’”intervista”: dovete intervistare il committente e capire, spesso assieme, quali sono
le caratteistiche del prodotto che vi viene richiesto (prendere appunti).
Se si tratta di una traccia:
Un metodo suggerito da alcuni testi di preparazione alle certificazioni professionali è il seguente:
• leggere la traccia (cercando di interpretarla)
• rileggere la traccia
• riproporla a memoria cercando di inquadrare i punti fondamentali
• rileggere la traccia
sembra una cretinata, ma provate a farlo……
OUTPUT di questa fase: Documento di REQUISITI E OBIETTIVI
(Spesso coincide con la traccia o con una richiesta di servizio da parte di una ditta).
TRACCIA
Si richiede la progettazione un Sito tramite il quale sarà possibile prenotare i biglietti per i concerti
organizzati da alcuni cantanti o complessi. La prenotazione avviene direttamente da casa propria tramite un
collegamento ad internet. La società che gestisce il sito provvede successivamente ad elaborare i dati raccolti
tramite Internet.
Nel sito devono essere presenti una serie di pagine contenenti le informazioni sui vari cantanti/complessi,
sui concerti da loro organizzati e su alcune caratteristiche turistiche e storiche dei luoghi dove si svolgeranno. Una
volta scelto un certo concerto deve essere possibile prenotarlo fornendo nome cognome ecc.
I dati inviati attraverso Internet dai possibili clienti, devono essere raccolti ed elaborati per procedere poi
alla organizzazione dei concerti. Sarà così possibile effettuare analisi per decidere se per esempio basta un teatro
o ci vuole uno stadio, se magari il concerto è da annullare per mancanza di prenotazioni ecc.
Nel presente documento questa parte -quella di back office- sarà prevista solo nella fase di analisi iniziale e
non ulteriormente approfondita.
Impostazione di un Progetto
Marconi Team
Pag 2/13 /
Analisi Funzionale
INPUT di questa fase: Documento di REQUISITI e OBIETTIVI
In questa fase viene descritto COSA il PROGETTISTA ha capito che viene richiesto dall'UTENTE e quindi
COSA ha intenzione di sviluppare.
E' un punto di vista INTERNO.
Se si tratta di un “cliente vero”,
si inizia con un ”brain storming”: il gruppo di progetto si riunisce e sulla base dei dati raccolti dal
collega che ha “intervistato” il cliente, si cercano di capire le funzionalità richieste.
Non sempre il progettista "c'azzecca", per cui è fondamentale un passo di verifica col
committente: una volta scritte le Specifiche Funzionali (l’Output dell’Analisi Funzionale), la si fa
pervenire al committente e la si fa firmare per l'approvazione, a scanso di equivoci e future
contestazioni (è lui che paga e quindi "lui" ha sempre ragione).1
Se si tratta di una traccia:
siete soli e non potete confrontarvi con nessuno. E’ il momento più importante e delicato di tutta
la progettazione. Ci vuole molta concentrazione ed abitudine ad affrontare problemi simili.
Dobbiamo, in forma discorsiva, evidenziare:
• gli Obiettivi (ciò che sarà sviluppato)
• i NON Obiettivi (esplicita elencazione di cosa non è previsto -a scanso di future contestazioni-)
Fino ad ora, parlando di Obiettivi intendevamo Obiettivi di PRODOTTO, da far conoscere anche all'esterno.
In fase di analisi i progettisti definiscono anche gli Obiettivi di PROGETTO, ai soli fini interni, nei quali
evidenziare delle scelte tecniche, per esempio:
• le risorse uomo (dipendenti o consulenti) da utilizzare
• quali prodotti Sw e Hw utilizzare
• lo sviluppo di un piccolo prototipo per provare la scelte che porteranno allo sviluppo del prodotto finale
• lo sviluppo di moduli non espressamente richiesti dal committente ma che noi sviluppiamo lo stesso ora,
perché è più economico farlo, e che forniremo in futuro ad un determinato prezzo ma a costo zero.2
Osserviamo che la fase di analisi è fondamentale da due distinti punti di vista.
ESTERNO: il committente conosce (ed approva) quanto stiamo per produrre.
INTERNO: impostiamo l'analisi del prodotto3 che stiamo per realizzare.
Noi svilupperemo un unico documento da cui stralciare, i pezzi o le componenti, che non interessano il
committente.
Nelle Specifiche Funzionali facciamo rientrare anche la VTOC (Visual Table of Contents) nella quale
evidenziare -magari contestualmente- la gerarchia delle funzioni e delle pagine Web.
Decidiamo che anche l'analisi ER dei dati fa parte di questa fase poiché ci serve per comprendere la
complessità del problema.
N.B.
Questi dati sono importanti per stabilire la quantità di risorse da impegnare nel progetto (ore uomo o
altro). Potremo così calcolare il costo, e di conseguenza il prezzo da richiedere al committente. Può
anche avvenire che i costi superino il prezzo che il cliente e disposto a pagare. La nostra Sotware
House potrà decidere che: o non è interessata a proseguire, oppure, ipotizzando che ci siano nel
1
In particolari situazioni, in progetti molto “costosi”, si siglano le singole pagine.
Prezzo: a quanto lo vendo, Costo: quanto mi costa.
3
I "cimiteri" dell'informatica sono pieni di tizi che si mettono davanti al computer a sviluppare senza aver
capito COSA devono sviluppare, .. e poi pensano di essere dei "chiavici" dato che lavorano 16 ore al giorno.
2
Impostazione di un Progetto
Marconi Team
Pag 3/13 /
mercato altre ditte a cui fornire il prodotto, si potrebbe "andare ad investimento" sviluppando lo
stesso il prodotto (i "miei" dipendenti li pago lo stesso e quindi piuttosto che "farli cazzeggiare su
internet” o con le "chat" li faccio lavorare a qualcosa di produttivo).4
La VTOC, sarà comunicata anche al committente, mentre non è necessario comunicargli l’analisi dei dati E.R.
OUTPUT di questa fase: Documento di SPECIFICHE FUNZIONALI contenete:
• descrizione discorsiva delle funzionalità
• VTOC (gerarchia funzioni e/o pagine web)
• E.R. dei dati
Specifiche Funzionali
Dobbiamo sviluppare un progetto tramite il quale deve essere possibile gestire i concerti di cantanti o
gruppi musicali appartenenti ad una determinata organizzazione.
Il progetto si articola in due moduli:
1. La parte Internet (front office) che prevede lo sviluppo del sito con una serie di pagine che permettono
ad un utente collegatosi ad internet, di conoscere alcune informazioni sui vari cantanti/complessi, sui
concerti da loro organizzati ed eventualmente su alcune caratteristiche turistiche e storiche dei luoghi ove
si svolgeranno. Infine potrà registrare una propria prenotazione ad uno o a più concerti.
I dati da fornire on-line tramite un modulo sono:
Nome, Cognome, Via, Cap, Città, Provincia (tutti campi obbligatori ma senza validazione su città e
provincia)
Non è prevista una conferma alla prenotazione, né un accesso certificato da password.
notare l'esplicitazione dei -non obiettiviSono previsti 4 contanti o gruppi, una pagina per cantante, indicativamente 4 concerti per ogni contante o
gruppo, fino a tre pagine per ogni località. Eventuali testi delle canzoni e foto degli artisti devono essere
forniti dal committente (Informarsi sui diritti SIAE ecc.).
notare la quantificazione delle pagine, per non trovarsi a sviluppare “la piccola enciclopedia della canzone” ....
gratis.
La struttura del sito sarà graficamente coerente, senza inutili sovrabbondanze grafiche.
Per limitare i tempi di caricamento non sono previste musiche. Nell’intestazione è previsto il logo del
committente ed una gif animata nella quale scorrono i nomi dei cantanti.
2. La parte di back office, dove i dati inviati attraverso Internet dai possibili clienti vengono raccolti ed
elaborati per procedere poi alla organizzazione dei concerti.
Il data base on-line sarà copiato via ftp a cura del committente, dalla macchina del Provider alla macchina
del committente, e localmente avverranno le elaborazioni di back office. Durante questa fase la pagina di
Prenotazione resterà indisponibile.
notare l'esplicitazione che l'elaborazione dei dati non è on line
Le interrogazioni previste sono le seguenti:
Deve essere possibile effettuare le seguenti interrogazioni:
• Contare quanti sono i biglietti venduti per un certo concerto
• Contare quanti sono, per ogni concerto, i biglietti venduti per i concerti di un certo artista
• Dato il nome e il cognome di una persona vedere quali sono i concerti di cui ha prenotato il biglietto
• Elenco dei concerti che si svolgono in un periodo compreso tra due date.
• Elenco dei concerti che si svolgono in un certo luogo
lasciamo spazio alla fantasia per aggiungere altre funzionalità sulla gestione dei dati ……
4
La gestione dei progetti con la schedulazione delle attività e delle risorse, valutazione costi ecc. è un
argomento a se stante, che non viene preso in considerazione in questo documento.
Impostazione di un Progetto
Marconi Team
Pag 4/13 /
Schema gerarchico generale del Progetto (V.T.O.C.)
“generale” perché indichiamo sia la gerarchia delle funzioni che la gerarchia della pagine web
Concerti
Sito Web
Home Page
Nino D'Angelo
Concerto di Bari
Bari turistica
Back office
...........
Concerto ....
PRENOTA
........
Prenotazione effettuata e scrittura
Impostazione di un Progetto
Caricamento dati
Discografia
PRENOTA
.........
....., testi, ecc.
Prenotazione effettuata e scrittura
Marconi Team
Pag 5/13 /
Interrogazioni
Conta prenotazioni su concerto
.......
Esempi di pagine Web
Questa è una ipotesi per la Home page.
Dalla Home Page si accede alla pagina del singolo cantante o complesso
Impostazione di un Progetto
Marconi Team
Pag 6/13 /
Dalla pagina del singolo cantante si accede alla pagina (o alle pagine) della sua biografia e alle pagine dei
vari concerti previsti. Quella che segue è l’ipotesi per la pagina del Concerto di Bari di Nino d’Angelo
Dalla pagina del concerto scelto si accede alla pagina (o alle pagine) delle informazioni turistico storiche del
luogo dove si tiene il concerto e si può effettuare la prenotazione.
Nella pagina di prenotazione si compila un “modulo” con alcuni dati personali e si invia la richiesta di
prenotazione. Questi dati vengono registrati in un data base sul Server per essere successivamente (Modulo
di backoffice) sottoposti ad elaborazione.
Impostazione di un Progetto
Marconi Team
Pag 7/13 /
Specifiche Funzionali -Obiettivi di ProgettoIl prodotto deve essere sviluppato rispettando lo standard metodologico aziendale. Privilegiando la
documentazione. In memoria di tutti i “chiavici” che hanno fatto i “creativi” scrivendo l’sql direttamente in ASP
o PHP, le query devono essere prima provate in access.
Il prodotto deve essere sviluppato a bassi costi, inoltre le risorse uomo che la nostra azienda può utilizzare
sono poco più che “bassa manovalanza”5 per cui bisogna sviluppare subito un prodotto semplice ma
funzionante.
La parte dinamica del sito deve essere ridotta al minimo ed isolata in pochissime pagine (forse due),
identiche per tutto il sito.
Dopo ricerche di mercato si è stabilita l’inutilità ad investire in un prodotto integrato per la creazione dinamica
di siti relativi a questa fascia di mercato.
Questa parte, logicamente, non sarà comunicata al committente, assieme all’analisi ER che segue.
Analisi dei dati E.R.
Relazioni
tArt(idArt, Nome, Cognome, Note)
tConc(idConc, Luogo, Data,idArt)
tPren(idPren, nome, Cognome, Via, Cap, Città, Provincia, IdConc)
nome
……..
tConc
………
Chiave
idConc
luogo
data
idArt
Primaria
esterna
Tipo
autoincrement
char
data
numerico
Lungh.
range
30
Obbligatorio
default
NOTE
Si
Si
Si
Interrogazioni
Il modello dei dati è stato testato con le seguenti interrogazioni e risponde ai requisiti:
• Elenco dei biglietti venduti per un certo concerto
• Contare quanti sono i biglietti venduti per un certo concerto
• Contare quanti sono, per ogni concerto, i biglietti venduti per i concerti di un certo artista
• Dato il nome e il cognome di una persona vedere quali sono i concerti di cui ha prenotato il
biglietto
• Elenco dei concerti che si svolgono in un periodo compreso tra due date.
• Elenco dei concerti che si svolgono in un certo luogo
• ... e tante altre ancora.......
5
Sono neo assunti dell’ITIS Marconi, per di più della 5IB (peggio non ci poteva andare)
Impostazione di un Progetto
Marconi Team
Pag 8/13 /
Analisi Tecnica
INPUT di questa fase: Documento di SPECIFICHE FUNZIONALI.
In questa fase viene impostato COME sviluppare ciò che è stato precedentemente descritto nel
Documento di SPECIFICHE FUNZIONALI.
E' un punto di vista TECNICO, che inquadra e dettaglia COME sviluppare e non più COSA.
Meglio si sarà lavorato nella fase precedente, più veloce ed efficiente sarà l’attività corrente.
Fondamentale è il rispetto dello standard aziendale.
Se si tratta di un’“azienda vera”,
bisogna produrre in un gruppo di lavoro in cui tutti devono capire il lavoro di tutti gli altri.
L’attività deve essere “collaborativa” e non si deve perdere tempo per “interpretare” il
lavoro degli altri. A causa degli alti costi della manutenzione è fondamentale la cura della
documentazione6.
6
CICLO DI VITA DEL SOFTWARE
(N.B. questi sono dati reali per software professionale)
3% 3%
5%
7%
Requisiti
Spec. Funzionali
8%
Spec. Tecniche
Codice
Test dei Moduli
7%
Test completo
67%
Manutenzione
Se poi vogliamo entrare in dettaglio, il 67% dell’attività di manutenzione è così ripartito:
MANUTENZIONE
9%
11%
Nuove funzioni richieste
dagli utenti
42%
Modifiche varie
Tuning del Software
10%
Disegno di nuove funzioni
10%
Correzione di errori nella
fase di requirements
18%
Impostazione di un Progetto
Correzione di errori nella
fase di disegno e codifica
Marconi Team
Pag 9/13 /
Se si tratta di una traccia:
il Professore è solo contro tutte le vostre prove. Se ogni volta deve interpretare quello che
avreste voluto dire, ma che non avete detto, finirà col valutarvi in modo negativo.
Siate ordinati e chiari nello svolgimento della prova.
Se per risolvere un determinato problema state cominciando a aggiungere soluzioni complesse,
FERMATEVI e sicuramente troverete una soluzione semplice semplice.
Ricordatevi:
Tutto ciò che non c’è non può guastarsi
Per le leggi di Murphy fate una ricerca con Google
OUTPUT di questa fase: Documento di SPECIFICHE TECNICHE contenete:
• Data Flow (unico o uno per ogni modulo)
•
Se l’approccio è Procedurale, per ognuno dei moduli previsti in VTOC:
Schema grafico della Form di interfaccia
Psedocodifica o diagramma a blocchi
[Codifica completa di documentazione]
•
Se l’approccio è Relazionale (Access puro), per ognuno dei moduli previsti in VTOC
Istruzione o istruzioni SQL che implementano la funzionalità
Schema grafico della maschera o del report
•
Se l’approccio è Misto (Access + Moduli di codice + WEB), per ognuno dei moduli previsti in VTOC
Istruzione o istruzioni SQL che implementano la funzionalità
Schema grafico della maschera o del report (ed eventuale codice di script aggiunto)
della pagina WEB (ed eventuale codice di script aggiunto, sia lato client che lato server)
della Form e la pseudocodifica o il codice relativo in VB, Java, C, Delphi ecc.
Specifiche Tecniche
Questo progetto ha finalità didattiche e quindi non perderemo tempo in fronzoli inutili.
La grafica è ridotta al minimo per risparmiare tempo. Con questo obiettivo, Fireworks, è l’ideale. Infatti la gif
animata del titolo sarà sviluppata con Fireworks, gli effetti grafici evoluti di Flash sono un -non obiettivo-.
Utilizziamo Dreamweaver, la 3.0 va bene, sia perché abbiamo la licenza d’uso, sia perché dobbiamo fare
cose semplici, sia perché ...basta ed avanza...
Prevediamo:
• due template, uno per tutte le pagine del sito, uno, derivato dal primo, per le pagine dinamiche: la
Prenota.asp e la pagina di scrittura sul data base Registra.asp,
• l’utilizzo di un semplice foglio di stile
Impostazione di un Progetto
Marconi Team
Pag 10/13 /
•
un’organizzazione delle cartelle del sito secondo il seguente schema:
da cui si evince che prevediamo una home page (index.htm), una cartella per ogni cantante, una cartella per
il data base (ACCESS), e due sole pagine dinamiche (ASP) che saranno utilizzate nella seguente maniera:
Per ogni pagina terminale dei concerti
per cui chi sviluppa le singole pagine dei vari concerti chiamerà la Prenota.asp
specificando nel link l’id del singolo concerto, nel nostro caso “../Prenota.asp?idconc=1”
La Prenota.asp deve:
1. “capire” su quale concerto è stata attivata
2. portarlo a video nel bordo grigio a sinistra
3. inserire l’id del concerto come campo nascosto nel modulo in cui il cliente compila i suoi dati
Nell’head:
dim idalucerc, dep, strConn, strSql
idconc = "" & Request.QueryString("idconc")
Set cn = Server.CreateObject("ADODB.Connection")
strConn = "Provider = Microsoft.Jet.Oledb.4.0;
server.mappath("dati/concerti.mdb")
cn.Open strConn
Set rs = Server.CreateObject("ADODB.Recordset")
Impostazione di un Progetto
Marconi Team
Data
Source
=
"&
Pag 11/13 /
strSql = "SELECT tArt.nome,tConc.luogo,tConc.data FROM tArt,tConc where
tArt.idArt = tConc.idArt and tConc.idConc= " & idconc & ";"
rs.Open strSql, cn
<%Response.Write(
rs.Fields("nome")) %>
<%=
rs.Fields("luogo")%>
<%=
%>
rs.Fields("data")
Come da specifiche, i campi del modulo sono a digitazione obbligatoria (ma senza ulteriori validazioni) per
cui sarà inserito, client side, il seguente codice JavaScript:
<script language="JavaScript" type="text/JavaScript">
// controllo i dati inseriti dall'utente
function controlla() {
var mymodulo = document.modulo;
if (mymodulo.txtcognome.value == "") {
alert("Devi inserire il cognome ");
mymodulo.txtcognome.focus();
return false;
};
if (mymodulo.txtnome.value == "") {
alert("Devi inserire il nome");
………………………………………..
return true;
Å !!!!!
};
</script>
perché questo codice sia attivato è necessario che la form sia creata così: (notate
controlla())
<form
name="modulo"
method="post"
action="registra.asp"
controlla()">
onSubmit="return
onSubmit="return
La Registra.asp deve:
1. portare a video i dati “passati” dal modulo della Prenota.asp
2. inserire nel data base i dati acquisiti
Nell’head:
Notare la “pulizia” fatta con la Replace per eliminare i caratteri <apostrofo> eventualmente presenti
<%
Set mycn = Server.CreateObject("ADODB.Connection")
str_conn = "Provider = Microsoft.Jet.Oledb.4.0; Data Source
server.mappath("dati/concerti.mdb")
mycn.open str_conn
depnome = Replace(Request.Form("txtnome"),"'","''")
Impostazione di un Progetto
Marconi Team
=
"&
Pag 12/13 /
depcognome = Replace(Request.Form("txtcognome"),"'","''")
depvia = Replace(Request.Form("txtvia"),"'","''")
depcap = Replace(Request.Form("txtcap"),"'","''")
depcitta = Replace(Request.Form("txtcitta"),"'","''")
depprovincia = Replace(Request.Form("txtprovincia"),"'","''")
depidconc = Replace(Request.Form("hidconc"),"'","''")
' leggo la riga che descrive il concerto
dep="select * from tconc,tart where tart.idart=tconc.idart AND idconc= "
& depidconc
Set RS = mycn.Execute(dep) ' leggo
depluogo= rs.fields("luogo")
depdata= rs.fields("data")
departista= rs.fields("nome")
' inserisco la penotazione
dep ="INSERT INTO tpren (nome,cognome,via,cap,citta,provincia,idconc)
values ("
dep= dep & "'" & depnome &"','" & depcognome &"','" & depvia
dep= dep & "','" & depcap &"','" & depcitta &"','" & depprovincia
dep= dep & "'," & depidconc & ")"
%>
Set RS = mycn.Execute(dep) ' inserisco
mycn.Close
Set rs=nothing
Set mycn=nothing
<% =depnome %>
………………………………………….
………………………………………….
Qui finiscono le nostre note ed ora tocca a voi, mi raccomando:
utilizzando lo standard che
vi è stato distribuito!
Visitate le pagine dei manuali on line della nostra intranet
Seguirà un’appendice7, relativa a Dreamweaver, contenente:
Come impostare un template
Come impostare un foglio di stile
7
Non a breve
Impostazione di un Progetto
Marconi Team
Pag 13/13 /