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 )