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 /