Progetto di ingegneria del software : EcommerceNow sistema per l'ecommerce Beretta Andrea Bianchi Riccardo Carminati Edoardo Carminati Paolo Cesare Tadini Marco 607441 606470 610327 580807 607307 INDICE 1 Introduzione 3 2 Analisi dei requisiti 4 3 Glossario 6 4 Casi d'uso 7 5 Diagrammi delle sequenze 20 6 Descrizione dei moduli 34 7 Diagramma delle collaborazioni 36 8 Diagramma delle classi 37 9 Architettura del sistema 41 10 Diagramma delle componenti 42 11 Diagramma dei deployement 43 12 Diagramma stati transizioni 44 13 Struttura del database 47 INTRODUZIONE Il progetto di cui svilupperemo in queste pagine l’analisi si pone come obiettivo la realizzazione di un servizio che permetta la creazione e gestione di negozi virtuali da parte dei gestori dell’esercizio e la ricerca e l’acquisto di articoli da parte di eventuali clienti. Il servizio, nello specifico, è pensato come portale web idealmente diviso in due sezioni distinte , una relativa alla gestione del negozio ed un’altra dedicata ai clienti. Nella prima sezione il commerciante può effettuare diverse operazioni: Tramite un form iscriversi al portale e creare il proprio negozio; Gestire i prodotti presenti nel negozio (inserimento,ricerca, modifica e cancellazione); Gestire gli ordini dei clienti; Visualizzare il dettagli dei prodotti e dei clienti. Nella seconda sezione, dopo essersi iscritto, il cliente può: Ricercare un prodotto presente all’interno del negozio; Visualizzare il dettaglio dell’articolo ricercato; Gestire il proprio carrello inserendo e cancellando articoli; Confermare e richiedere l’ordine. SCREENSHOOT n°1 : Il logo del progetto ANALISI DEI REQUISITI FUNZIONALI 1.MUST: il gestore del negozio al primo accesso deve procedere alla registrazione 2. MUST: Il gestore del negozio può inserire gli articoli solo dopo l’autenticazione [#1] 3. MUST: Il gestore del negozio può modificare gli articoli solo dopo l’autenticazione [#1] 4. MUST: Il gestore del negozio può cancellare gli articoli solo dopo l’autenticazione [#1] 5. MUST: Il gestore del negozio può gestire gli ordini dei clienti solo dopo l’autenticazione [#1] 6. MUST: Il gestore del negozio può visualizzare il dettaglio degli ordini solo dopo l’autenticazione [#1] 7. MUST: il gestore del negozio puo’ visualizzare i dati di un cliente solo dopo l’autenticazione [#1] 8. SHOULD: il portale restituisce al cliente (o al gestore ) un messaggio di articolo non trovato se non trova il prodotto cercato in quanto inesistente [#12] 9. MUST : il cliente al primo acquisto deve procedere alla registrazione 10.MUST : Il cliente puo’ accedere al carrello solo dopo l’autenticazione [#9] 11. MUST : una volta completata la registrazione il sistema provvede ad inviare un’email con i dati necessari per il login, e conferma l’avvenuto invio del messaggio. [#1, #9] 12. MUST : Cliente e Gestore, possono ricercare articoli all’interno del database,tramite un motore di ricerca 13. MUST: il sistema restituisce un messaggio di errore in caso di autenticazione non corretta, sia per il gestore che per il cliente [#2-7, #10] 14. SHOULD : durante la registrazione ( sia lato cliente che gestore ), nel caso si scelga un uid gia’ esistente il sistema mostre un messaggio di uid gia’ esistente [#1. #9] 15. SHOULD : il sistema restituisce un messaggio di benvenuto in caso di autenticazione corretta, sia per il gestore che per il cliente [#2-7, #10] 16. SHOULD: il sistema restituisce un messaggio di errore nel caso si cerchi di accedere al carrello senza essersi autenticati al sistema [#10] 17. SHOULD: il sistema mostra il contenuto del carrello dopo qualsiasi operazione ad esso legata ( ad esempio inserimento, cancellazione ). 18. SHOULD : dopo l’operazione di inserimento/cancellazione/modifica di un articolo il sistema mostra un messaggio di conferma al gestore. [#2, #3, #4] 19. SHOULD : dopo l’operazione di gestione/cancellazione di un ordine, il sistema mostra al gestore il nuovo elenco degli ordini, con i dati aggiornati all’ultima operazione effettuata. [#5] 20. SHOULD : il sistema provvede ad avvisare tramite email il cliente il cui ordine sia stato modificato dal gestore del negozio [#5] 21. MAY : Il motore di ricerca prevede tre diverse modalità: "almeno una parola", "tutte le parole" oppure "la frase esatta". [#12] NON FUNZIONALI 1.MUST: EcommerceNow è accessibile da qualsiasi utente munito di computer, modem, connessione internet e browser. 2.MUST: Gli articoli nel carrello dell’utente vengono mantenuti anche una volta terminata la sessione. 3.MUST: solo i gestori del negozio possono accedere alla sezione di gestione (per modifica, inserimento, cancellazione, gestione ordini, visualizzazione utenti iscritti). 4.SHOULD: EcommerceNow garantisce una buona usabilità con qualsiasi tipo di browser . 5.MAY: EcommerceNow notifica l’esaurimento di un prodotto. TECNOLOGICI 1.MUST: il protocollo di comunicazione usato fra l’utente e EcommerceNow è http 2.MUST: il protocollo di comunicazione usato tra il gestore e EcommerceNow e' http 3.MUST: il gestore del negozio accede ad EcommerceNow e ai suoi dati via web attraverso un’interfaccia realizzata con tecnologia Jsp 4.MUST: il cliente del negozio accede ad EcommerceNow e ai suoi dati via web attraverso un’interfaccia realizzata con tecnologia Jsp 5.SHOULD: il database utilizzato è di tipo relazionale INVERSI 1.MUST: EcommerceNow scarta eventuali iscrizioni non compilate correttamente 2.MUST: EcommerceNow non consente ai gestori del negozio di accedere a dati altrui GLOSSARIO Autenticazione: processo attraverso il quale il gestore del negozio il cliente comunica la sua login e password ad EcommerceNow per poter compiere determinate operazioni(gestione del negozio per il gestore e acquisto dei prodotti per il cliente) EcommerceNow: Portale web che permette la creazione di negozi e l’acquisto di prodotti dagli stessi Gestore del negozio: EcommerceNow responsabile dell’interazione tra il negozio ed Messaggio di articolo non trovato: messaggio che comunica all’utente o al gestore che il prodotto richiesto non è stato trovato Messaggio di errore: messaggio che specifica la mancata autenticazione Messaggio di uid gia’ esistente : messaggio che avvisa del fatto che esiste gia’ un utente con l’user id prescelto Messaggio di conferma: messaggio che specifica l’avvenuta operazione su un articolo Negozio: attività commerciale di fornitura di prodotti/servizi Registrazione: processo attraverso il quale il gestore del negozio o il cliente comunica i propri dati ad EcommerceNow,ottenendo login e password per l’accesso successivo al sistema Ricerca: operazione attraverso la quale viene generato un messaggio di risposta o di default in risposta ad un richiesta Utente: (sinonimo di Cliente) entità che effettua la richiesta ad EcommerceNow CASI D'USO Registrazione negozio 1.Il gestore comunica al sistema i dati del suo negozio e sceglie uno userid 2.Il sistema aggiorna il database con le informazioni immesse 3.Il sistema genera a random una password per il nuovo gestore 4.Il sistema crea un database per il nuovo gestore 5.il sistema provvede a creare le directory con tutti i file necessari per il sito del nuovo gestore 6.Il sistema invia login e password all'email con cui e' stata effettuata la registrazione 7.Il sistema avvisa dell'avvenuto invio dell'email SCREENSHOOT n°2 :Il form per la registrazione di un nuovo negozio Alternativa: Userid gia' esistente Al passo 2 il sistema s’accorge che esiste gia' un negozio online registrato al servizio che utilizza lo stesso userid, ed invita il gestore a cambiare login. FIGURA n°1 : Registrazione di un nuovo negozio Autenticazione 1.Il gestore del negozio comunica al sistema la sua login e la sua password 2.Il modulo di autoenticazione controlla la correttezza della coppia login/password 3.Il sistema manda un messaggo di benvenuto all'utente Alternativa 1: password errata Al passo 2 il sistema si accorge che il gestore ha digitato una password errata e gli rifiuta l’accesso al sistema con un messaggio in cui lo invita a controllare l’esattezza della password. Inserimento nuovo articolo nel db 1.Il gestore del negozio, una volta autenticato indica i dati relativi al nuovo articolo che vuole aggiungere al db ( nome, descrizione, prezzo, keywords ed eventualmente immagine associataIl 2.Il sistema aggiorna il database 3.Il sistema conferma l'avvenuto inserimento FIGURA n°3 : Inserimento di un nuovo articolo nel db Modifica di un articolo esistente 1.Una volte che il gestore si e' autenticato, sceglie di modificare un articolo 2.Il sistema mostra l’elenco degli articoli memorizzati 3.Il gestore comunica comunica i dati che intende modificare relativi all'articolo scelto 4.Il sistema aggiorna il database 5.Il sistema conferma l'avvenuta modifica SCREENSHOOT n°3 : Form per la modifica di un articolo FIGURA n°4 : Modifica di un prodotto esistente Cancellazione di un articolo esistente 1.Una volta che il gestore si e' autenticato, sceglie di cancellare un articolo 2.Il sistema mostra l’elenco degli articoli memorizzati 3.Il gestore seleziona l'articolo che non e' piu' intenzionato a vendere 4.Il sistema aggiorna il database 5.Il sistema conferma l'avvenuta cancellazione SCREENSHOOT n°4 : Elenco degli articoli in catalogo FIGURA n°5 : Cancellazione di un prodotto esistente Modifica ordini 1. Una volta che il gestore si e' identificato accede alla gestione degli ordini 2. il sistema mostre gli ordini memorizzati 3. il gestore puo' a questo punto modificare i dati dell'ordine tra cui: - lo status dell'ordine su chiuso o aperto( in pratica Chiudere un ordine aperto o riaprire un ordine precedentemente chiuso ) - la disponibilita' di un'articolo all'interno di un dato ordine 4. Il sistema aggiorna in base alle modifiche il database ( nel dettaglio le 2 tabelle ordini e dettaglio_ordini ) 5. Il sistema provvede ad inviare un'email all'utente che ha effettuato l'ordine per avvisarlo dei cambiamenti avvenuti. 6. Il sistema conferma l'avvenuta modifica, mostrando i dati aggiornati relativi agli ordini FIGURA n°6 : Modifica dello stato o degli attributi di un ordine Cancellazione ordini 1. Una volta che il gestore si e' identificato sceglie l’opzione per cancellare un ordine 2. Il sistema mostre gli ordini memorizzati 3. Il gestore comunica il codice dell'ordine da cancellare (sceglie l'ordine da cancellare) 4. Il sistema aggiorna in base alle modifiche il database ( nel dettaglio le 2 tabelle ordini e dettaglio_ordini ) 5. Il sistema conferma l'avvenuta cancellazione FIGURA n°7 : Cancellazione di un ordine Visualizzazione dettagli articolo 1.Una volta che il gestore si e' identificato visualizza gli articoli nel database ( elenco con codice, prezzo e nome ) 2.Il gestore comunica il codice dell'articolo da visualizzare ( sceglie l'articolo dall'elenco) 3.Il sistema mostra il dettaglio dell'articolo ( codice, nome, prezzo, descrizione, immagine) FIGURA n°8 : Visualizzazione dettaglio prodotto nota : viene richiesta l'autenticazione perche' nell'elenco degli articoli compariranno anche le icone collegate alla modifica e alla cancellazione dell'articolo in questione. nota2 : in alternativa e' possibile visualizzare il dettaglio di un articolo scegliendolo dall'elenco dei risultati di una ricerca. Visualizzazione dati cliente 1.Una volta che il gestore si e' identificato sceglie di visualizzare i dati dei propri clienti 2. Il sistema gli visualizza l'elenco degli utenti registrati presso il suo negozio, come una semplice lista con codice, nome e cognome del cliente. 3. Il gestore comunica il codice del cliente da visualizzare ( sceglie il cliente dall'elenco) 4. Il sistema mostra in dettaglio i dati del cliente ( codice, nome, cognome, indirizzo, telefono , email , ecc. ) SCREENSHOOT n°5 : Dettaglio Cliente FIGURA n°9 : Visualizzazione dettaglio cliente nota e' possibile visualizzare i dati di un cliente anche durante la gestione degli ordini, cliccando direttamente sul codice del cliente che ha effettuato l'ordine Ricerca articolo 1.Una volta che il gestore si e' identificato, effettua la sua ricerca in base alla modalita' precelta ( codice, tutte le parole, almeno una parola, la frase esatta) 2.Il sistema riceve la richiesta 3.Il sistema cerca all'interno del database gli articoli che rispettano i criteri 4.Il sistema restituisce al gestore l'elenco degli articoli cercati (codice, nome e prezzo, affiancati da due icone per la cancellazione e la modifica del prodotto) FIGURA n°10 : Ricerca articolo LATO CLIENTE Ricerca articolo 1.L'utente effettua la sua ricerca in base alla modalita' prescelta ( codice del'articolo, tutte le parole, almeno una parola, la frase esatta) 2.Il sistema riceve la richiesta dell'utente 3.Il sistema cerca all'interno del database gli articoli che rispettano i criteri della ricerca 4.Il sistema restituisce all'utente l'elenco degli articoli cercati FIGURA n°11 : Ricerca di un articolo effettuata con successo Alternativa: nessun prodotto trovato Il sistema non trova il prodotto/prodotti cercati all'interno del database del negozio, restituendo un messaggio di errore. FIGURA n°12 : Ricerca di un articolo senza risultati Per la ricerca dal lato gestore e' del tutto uguale a differenza di due particolari : - e' necessario effettuare il login prima di effettuare ricerche sul db - nei risultati della ricerca, accanto all'articolo saranno presenti due icone , per la modifica e la cancellazione dell'articolo stesso. Registrazione 1.Il cliente comunica al sistema i suoi dati personali e sceglie uno userid 2.Il sistema aggiorna il database con le informazioni immesse 3.Il sistema genera una password per il nuovo cliente 4.Il sistema invia login e password all'email indicata nel form di registrazione 5.Il sistema avvisa dell'avvenuto invio dell'email FIGURA n°13 : Registrazione di un nuovo cliente Alternativa: Userid gia' esistente Al passo 2 il sistema s’accorge che esiste gia' un negozio online registrato al servizio che utilizza lo stesso userid, ed invita l’utente a cambiare login. Autenticazione 1.Il cliente del negozio comunica al sistema la sua login e la sua password 2.Il modulo di autoenticazione controlla la correttezza della coppia login/password 3. Il istema manda un messaggo di benvenuto all'utente Alternativa 1: password errata Al passo 2 il sistema si accorge che l'utente ha digitato una password errata e gli rifiuta l’accesso alle funzioni solo per utenti registrati con un messaggio in cui lo invita a controllare l’esattezza della password. Visualizzazione dettaglio articolo 1.Il cliente richiede l'elenco degli articoli in vendita 2.Il sistema cerca gli articoli all'interno del database e mostra l'elenco come una semplice lista con, codice articolo, nome, prezzo ed un'icona sulla quale cliccare per avere maggiori dettagli 3.Il cliente sceglie l'articolo 4.Il sistema mostra in dettaglio l'articolo ( codice, nome, descrizione, prezzo ed eventuale immagine associato nota : in alternativa e' possibile visualizzare il dettaglio di un articolo scegliendolo dall'elenco dei risultati di una ricerca. SCREENSHOOT n°7 : Dettaglio Prodotto Aggiunta di un articolo al carrello 1.Una volta che il cliente si e' identificato con la coppia username-password ottenute nella fase di registrazione, sceglie l'articolo da aggiungere al carrello 2.Il sistema carica eventuali dati del carrello presenti in un cookie del pc del cliente 3.Il sistema aggiunge l'articolo al carrello 4.Il sistema provvede a salvare i dati del carrello sempre utilizzando i cookie 5.Il sistema conferma l'avvenuto inserimento mostrando la lista degli articoli presenti nel carrello FIGURA n°14 : Aggiunta di un articolo al carrello Cancellazione di un articolo dal carrello 1.Una volta che il cliente si e' identificato con la coppia username-password ottenute nella fase di registrazione, accede al carrello 2. Il sistema gli mostra gli articoli presenti nel suo carrello (andando a leggerli da un cookie sulla macchina del cliente) 3. L'utente sceglie l'articolo da eliminare dal carrello 4. Il sistema elimina l'articolo dal carrello 5. Il sistema salva i dati del carrello in un cookie sul pc dell'utente 6. Il sistema conferma l'avvenuta cancellazione mostrando la lista degli articoli nel carrello FIGURA n°15 : Cancellazione di un articolo dal carrello Conferma di un ordine 1. Una volta che l'utente si e' identificato con la coppia username-password accede al proprio carrello sceglie di confermare il proprio ordine 2. Il sistema mostra gli articoli presenti nel carrello, caricando i dati da un cookie sul pc dell'utente 3. Il cliente sceglie di confermare il proprio ordine 4. Il sistema registra l'ordine nel database 5. Il sistema provvede a svuotare il carrello 6. Il sistema salva lo stato del carrello in un cookie 7. Il sistema avvisa che la conferma dell'ordine e' stata effettuata Visualizzazione articoli presenti nel carrello 1. Una volta che l’utente si e’ identificato con la coppia username-password, sceglie di visualizzare l’elenco degli articoli presenti nel carrello 2. Il sistema carica i dati relativi al carrello leggendoli da un cookie sul pc dell’utente 3. Il sistema mostra gli articoli present FIGURA n°16 Elenco degli articoli nel carrello DIAGRAMMI DELLE SEQUENZE Per ciascuna delle attività presenti nei casi d’uso precedentemente illustrati, disegniamo ora il diagramma delle sequenze che specifica il comportamento interno del Sistema nei diversi casi. LATO GESTORE NEGOZIO Registrazione nuovo negozio FIGURA n°17 : Registrazione nuovo gestore (negozio) Supponiamo in questo diagramma che non sia stato scelto uno userid gia’ esistente Autenticazione gestore negozio FIGURA n°18 : Autenticazione gestore In questo diagramma delle sequenze si mostrano i due casi alternativi in cui viene riconosciuta la coppia username-password e quello dove viene negato l’accesso al Gestore. Negli altri diagrammi delle sequenze che seguiranno si supporra' per semplicita' che il Gestore si autentichi in modo corretto. In particolare questa assunzione riguarda : Inserimento nuovo prodotto Modifica prodotto Cancellazione prodotto Gestione ordini Cancellazione ordini Ricerca articoli Dettaglio clienti e ordini Aggiunta di un nuovo articolo FIGURA n°19 : Aggiunta di un nuovo articolo al db Si suppone che il Gestore sia a conoscenza dei prodotti già inseriti e che quindi non cerchi di ripetere l’inserimento di un prodotto già noto ... In tal caso nel database saranno presenti due tuple con gli stessi dati, differenti solo nel codice dell'articolo ( poiche' nn viene specificato dal gestore, ma e' generato automaticamente trattandosi di un contatore ) Modifica di un articolo FIGURA n°20 : Modifica di un articolo esistente Si suppone che il Gestore non possa operare su un prodotto inesistente, in quanto gli sono stati appena mostrati gli articoli presenti nel db Cancellazione articolo Visualizzazione Dettaglio articolo(da elenco) FIGURA n°22 : Visualizzazione dettaglio articolo da un elenco Visualizzazione dettaglio articolo (da ricerca) FIGURA n°23 : Visualizzazione dettaglio articolo da risultati ricerca Si suppone per semeplicita’ che la ricerca abbia esito positivo Gestione/Modifica ordini FIGURA n°24 : Modifica dettaglio e stato di un ordiine Cancellazione ordine FIGURA n°25 : Cancellazione di un ordine Visualizzazione dettaglio cliente FIGURA n°26 : Visualizzazione dettaglio cliente Ricerca di un articolo FIGURA n°26 : Ricerca di un articolo LATO CLIENTE Ricerca articolo FIGURA n°27 : Ricerca di un artiicolo Registrazione cliente FIGURA n°28 : Registrazione nuovo cliente Dettaglio articolo FIGURA n°29 : Dettaglio articolo,partendo dall’elenco degli articoli FIGURA n°30 : Dettaglio articolo dal risultato di una ricerca Si suppone per semplicita’ che la ricerca abbia esito positivo Autenticazione FIGURA n°31 : Autenticazione di un cliente In questo diagramma delle sequenze si mostrano i due casi alternativi in cui viene riconosciuta la coppia username-password e quello dove viene negato l’accesso al cliente. Negli altri diagrammi delle sequenze che seguiranno si supporra' per semplicita' che il cliente si autentichi in modo corretto. In particolare questa assunzione riguarda : Inserimento articolo nel carrello Cancellazione articolo dal carrello Visualizzazione contenuto del carrello Conferma dell'ordine Aggiunta di un articolo al carrello FIGURA n°32: Aggiunta di un articolo al carrello Cancellazione di un articolo dal carrello FIGURA n°33: Cancellazione di un articolo dal carrello Conferma di un ordine FIGURA n°34: Conferma di un ordine Visualizzazione articoli presenti nel carrello FIGURA n°34 : visualizzazione articoli nel carrello Moduli di interfaccia Webserver:Tomcat ->e' il modulo sempre attivo che rappresenta l'interfaccia con i gestori dei punti vendita ed i clienti. E' implementato nello specifico come un sito web attraverso cui interagire. Login:Session -> e' il modulo software create all'atto del login di un qualsiasi gestore di punto vendita. Si occupa dell'interazione con il webserver e con le classi che vanno a lavorare a “diretto contatto” con il database. Login_cliente:Cliente -> e' il modulo software creato all'atto del login di un cliente di un qualsiasi punto vendita. Si occupa dell'interazione con il webserver e i moduli per la gestione del carrello. Moduli di servizio Db:Postgre -> e' il modulo che si occupa dell'interfacciamento con il database sul quale vengono memorizzati i dati relativi ai punti vendita, clienti, prodotti e ordini. Nello specifico il database potrebbe essere PostgreSQL con i rispettivi driver JDBC . SMTP:Postfix -> e' il modulo per l'interfacciamento con un MTA (Mail Transport Agent ), come exim, postfix o sendmail. Nel nostro caso specifico supponiamo di usare postfix come mta. Essenzialmente si occupa dell'invio mail di notifica per le registrazioni e gli ordini. Cookie:Biscotto -> modulo che si occupa della creazione e dell'interazione con un cookie sulla macchina del cliente, per tenere traccia del carrello anche una volta terminata la sessione. Moduli di business Gestore:Negozio -> Modulo che si fa carico della creazione dell'account del gestore all'atto della registrazione,evitando duplicati. Utente:Cliente -> Modulo che si occupa della generazione dell'account del cliente,all'atto della registrazione,evitando duplicati. Carrello:Shopbag -> e' il modulo che si occupa interamente della gestione del carrello della spesa utilizzato dai clienti per i propri ordini. Comprende azioni come aggiunta e cancellazione di articoli dal carrello stesso oltre alla conferma dell'ordine. Add_Art:Newart -> e' il modulo che gestisce l'aggiunta di un nuovo articolo, memorizzandone i dati relativi nel database del negozio di riferimento. Art_List:Edit -> e' il modulo che si occupa di andare a leggere dal database i dati ai prodotti relativi ad un punto vendita. Serve per agevolate la modifica dei dati di prodotto consentendo la visualizzazione al gestore dei vecchi dati memorizzati. Art_list:Delete -> questo modulo svolge la stessa funzione del precedente, solamente che si occupa del caso in cui vengono eliminati articoli preesistenti. Art_list:list -> stessa funzione dei moduli precedenti,ma in questo caso viene utilizzato per visualizzare il dettaglio di un articolo, sceglendolo dall'elenco Art_list:elenco -> vale lo stesso discorso fatto per list, solo che in questo caso e' dal lato del cliente,e quindi non sono disponibili alcune funzionalita' che sono invece accessibili dal gestore del negozio. Results:Ricerca -> e' il modulo che si occupa dell ricerca effettuata in base ai vari criteri, tra gli articoli del db,sia per il gestore che x il cliente. Lista_clienti:Clienti -> e' il modulo che genera l'elenco dei clienti di un dato esercizio andando a leggerli dal database,dal quale il gestore puo' poi leggere in dettaglio i dati del cliente. Gestione_ordini:ordine -> e' il modulo con i dati relativi agli ordini di un dato esercizio ( che vengono letti come sempre dal database dello specifico negozio) . Serve per agevolare la modifica dello stato degli ordini e la loro evasione, consentendo la visualizzazione dello stato attuale e dei dettagli degli ordini. Gestione_ordini:delete -> Questo modulo e' simile al precedente solamente che si occupa del caso in cui venga cancellato un ordine, dopo che sia stato evaso od annullato DIAGRAMMA DELLE COLLABORAZIONI FIGURA n°35: Il diagramma delle collaborazioni Dal diagramma delle collaborazioni disegnato risulta che i moduli più critici che potrebbero rappresentare dei colli di bottiglia se non implementati in modo corretto, sono: Webserver:Tomcat, Login:Session, Login_Cliente:Cliente, Db: Postgre in quanto sono quelli che maggiormente interagiscono con altri moduli del Sistema di EcommerceNow DIAGRAMMA DELLE CLASSI FIGURA n°36: Diagramma delle classi Diamo ora una breve descrizione del significato di ciascuna classe all’interno del progetto: WebServer -> classe statica allocata al momento dell’avvio del sistema che si occupa dell’interfacciamento diretto via web con i gestori dei negozi ed utenti che vogliono interagire con EcommerceNow Login -> classe che viene istanziata ogni volta che un gestore del negozio accede alla sezione di gestione di EcommerceNow, comunicando login e password. Gli oggetti di questa classe sono riferiti al singolo gestore e, mantenendo il suo profilo, gli consentono di operare con il sistema in seguito ad una sola operazione di autenticazione. Login_cliente -> classe che viene istanziata ogni volta che un utente comunica login e password, potendo cosi usufruire del carrello e di conseguenza avere la possibilità di acquistare prodotti. Gli oggetti di questa classe sono riferiti al singolo utente e gli consentono di operare con il sistema in seguito ad una sola operazione di autenticazione. Gestore -> classe contenente le generalità del negozio, utilizzata per inserire un nuovo negozio in Emeral. Utente -> classe contenente le generalità dell'utente, utilizzata per la registrazione di un nuovo utente. Db -> classe che si occupa dell’interfacciamento con un data base relazionale. Gli oggetti di questa classe sono permanentemente attivi nel sistema: creati al momento dell’attivazione e cancellati solo allo spegnimento. Questa classe è costruita in modo tale da generare automaticamente delle query in seguito all’invocazione di alcuni dei suoi metodi. Add_art -> classe contenente i dati relativi ad un prodotto e la login del Punto Vendita che lo fornisce, questa classe risulta di particolare utilità nel momento in cui si vuole aggiungere un nuovo prodotto a quelli già segnalati. Art_list -> classe che rappresenta la lista dei prodotti di un punto vendita, è utilizzata nel momento in cui si voglia eliminare uno di tali prodotti o modificarne i dati. List_clienti -> classe che rappresenta la lista dei clienti registrati presso un negozio, utilizzata nel momento in cui il gestore di tale esercizio voglia esaminare in dettaglio i dati di uno di tali clienti SMTP -> Classe che si occupa dell'interfacciamento con un Mail Transfer Agent. Questa classe genera le email di conferma per le registrazioni o di avviso riguardo alla gestione degli ordini e provvede a inviarle tramite l'MTA . Cookie -> Classe che si occupa della creazione e modifica dei cookie sulla macchina dell'utente ( inteso come cliente ) , in modo da tenere traccia dei dati del suo carrello anche dopo la chiusura del browser. Istanziata quando viene visualizzato il contenuto del carello ( comprese le operazioni di aggiunta e cancellazione ), per controllare quali fossero gli articoli gia' presenti. Results -> classe che rappresenta i risultati di una ricerca, sia effettuata dal lato che che da quello del gestore, con qualche differenza tra le operazioni effettuabili sui risultati Carrello -> classe che si occupa della gestione del carrello della spesa, istanziata quando il cliente aggiunge/rimuove un oggetto dal carrello o vuole semplicemente visualizzarne il contenuto . Strettamente legato alle classi cookie e db ( per quest'ultimo solo nel caso della conferma di un ordine ). Gestione_ordini -> classe che rappresenta la lista degli ordini ( e relativi dettagli ) presenti nel database di un negozio registrato su EcommerceNow. Viene utilizzata per la gestione degli ordini ovvero per la modifica dei dati relativi ad ognuno di essi e la cancellazione. Vediamo ora di specificare meglio le strutture dati utilizzare nella definizione delle classi sopra descritte : Tipo di dato che memorizza i dati anagrafici e di login di un cliente Struct Dati_cliente : Codice: Long Integer Nome : String[25] Cognome: String[30] Uid : String[15] Password : String[15] Email : String[35] Indirizzo : String[40] Cap : String[5] Citta' : String[30] Provincia : String[2] Telefono : String[12] Ip : String[15] Tipo di dato che memorizza i dati relativi ad un punto vendita ed il suo proprietario. Struct Dati_negozio : User_id : String[15] Password : String[15] Ip : String[15] Nome_esercizio : String [50] Nome : String[25] Cognome : String[40] CodiceFiscale : String[16] PartitaIva : String[11] Indirizzo : String[40] Citta' : String[35] Provincia : String[2] CAP : String[5] Telefono : String[12] Email : String[35] Tipo di dato che memorizza i dati relativi ad un articolo Strutct Dati_art : Codice: Long Integer Nome : String[70] Prezzo : Long Integer Descrizione : String[255] Image : String[40] Keywords : String[255] Tipo di dato che memorizza i dati generali relativi ad un ordine Struct Dati_ordine : Codice_ordine : Long Integer Codice_cliente : Long Integer Data : String[7] Stato : Boolean Spedizione : String[8] Tipo di dato che memorizza i dettagli delle singole voci di un ordine Struct Dettaglio_ordine : Codice_articolo : Long Integer Codice_ordine : Long Integer Quantita : Integer Disponibilita' : Boolean Carico : Long Integre Tipo di dato che memorizza i dati letti da un cookie : Struct Dati_carrello : Codice_articolo : Long Integer Nome : String[70] Quantita : Integer Prezzo : Long Integer ARCHITETTURA DEL SISTEMA FIGURA n°37: Architettura del sistema DIAGRAMMA DELLE COMPONENTI Distinguiamo ora le componenti software nelle quali verranno raggruppate le classi . FIGURA n°38: Diagramma delle componenti N.b. Le componenti vengono costruite tenendo separati i diversi tipi di moduli (interfaccia, business e servizio) DIAGRAMMA DEI DEPLOYEMENT Vediamo ora la struttura “fisica” del sistema ed indichiamo dove ogni componente va installata. FIGURA n°39: Diagramma dei deployment DIAGRAMMA STATI TRANSIZIONI Per alcune classi caratterizzate da un buon numero di stati disegniamo (a titolo esemplificativo) il diagramma stati-transizioni, per mostrarne il comportamento dinamico. FIGURA n°40: La classe login FIGURA n°40: La classe carrello La classe gestore Si potrebbero disegnare dei diagrammi analoghi per ogni classe del Sistema, in genere però lo si fa solo per quelle classi il cui comportamento dinamico è piu’ complesso da capire per colui che dovrà implementarle. STRUTTURA DEL DATABASE In questa sezione diamo una descrizione grafica di quale potrebbe essere la struttura logica del database utilizzato per l'applicazione di e-commerce : FIGURA n°41: Relazioni tra le tabelle del db del singolo gestore Rappresentiamo ora le varie tabelle con un maggior grado di dettaglio , illustrando i tipi di dati per i vari campi che le compongono : Articoli FIGURA n°42: Tabella articoli Ordini : FIGURA n°43: Tabella ordini Dettaglio ordini FIGURA n°44: Tabella dettaglio_ordini Clienti FIGURA n°45: Tabella clienti Admin FIGURA n°46: Tabella admin Dati FIGURA n°47: Tabella dati NOTA Per la stesura dei diagrammi e’ stato utilizzato Dia v. 0.88 . Il software e’ disponibile sia per linux che per windows ( Http://www.lysator.liu.se/~alla/dia )