Università del Salento Facoltà di Ingegneria Corso di Laurea in Ingegneria dell’Informazione Progetto di Ingegneria del Software Progettazione della Web Application “Niente di Nuovo” Mercatino dell’Usato Docente Prof. Luca Mainetti Studenti Luisa Vittoria Bruno matr. 20003762 Marco Grazioli matr. 20002349 1 Requisiti e Obiettivi Realizzare una Web Application di gestione di un mercatino dell’usato che permetta: A tutti gli utenti: • La visualizzazione degli articoli del catalogo Agli utenti registrati: • La pubblicazione e la modifica di inserzioni • L’acquisto di articoli posti in un “carrello della spesa” • La visualizzazione degli ordini effettuati Al gestore del servizio: • La gestione delle richieste di registrazione e di acquisto con notifica agli utenti interessati di modifica alle loro richieste attraverso l’invio automatico di un’ e-mail • La creazione e la modifica delle categorie del catalogo. 2 Casi d’Uso Dall’analisi dei requisiti sono emersi i seguenti Casi d’Uso: 3 Architettura del Database Dai casi d’uso sono emerse tre Macro Funzionalità, ad ognuna delle quali corrisponde una particolare area del Database Gestione del catalogo Gestione delle Inserzioni Gestione degli ordini 4 Diagramma dei Package I packages relativi ai test I packages relativi gestione degli ordini I packages relativi allaalla gestione delle inserzioni Il package “hibernate” contiene tutte le classi che sidel interfacciano catalogo utenti con il database 5 Diagrammi delle classi: Design Pattern Facade Pattern DAO: Le classi DAO si interfacciano con il Database Pattern Facade: Le classi Util nascondono alle Action del sistema la presenza delle classi DAO. 6 Diagrammi delle classi: Design Pattern Singleton Le classi Util servono a fornire delle funzionalità, senza memorizzare informazioni di stato, pertanto è stato possibile implementarle con il Pattern Singleton, in modo tale che le altre classi potessero accedere sempre alla stessa istanza di queste. 7 Diagrammi delle classi: Design Pattern Composite Considerando che il Catalogo è composto da Articoli e da Categorie e che le Categorie possono contenere altre Categorie e Articoli è stato possibile implementare questa struttura attraverso il Pattern Composite 8 Diagrammi delle classi: Design Pattern Command Il cambiamento di stato delle richieste di registrazione e di acquisto comporta l’esecuzione di due operazioni: • Aggiornamento dello stato • Invio e-mail di notifica Ognuna di queste operazioni può essere considerata un comando ed è stata implementa con il Pattern Command. Il Pattern Composite è stato applicato per la realizzazione del MacroCommand. 9 Diagrammi delle classi: Design Pattern Strategy Perstesso consentire il calcolo prezzoper del permettere totale del contenuto del Carrello, Lo Pattern è statodel utilizzato di usare diverse strategie per la utilizzando molteplici questa funzionalità è stata implementata con il generazione del nome algoritmi, del file immagine caricato contestualmente ad Pattern Strategy. un’inserzione. 10 Diagramma di sequenza: Conferma Registrazione La Action prepara i comandi da eseguire salvandoli nel MacroCommand Viene aggiornato lo stato Viene istanziato l’Invoker Viene inviata l’e-mail 11 Diagramma di sequenza: Creazione Nuova Inserzione La Action utilizza UploadFileUtil per la generazione del nome del file e per caricarlo Viene preparato l’articolo da salvare Viene salvato l’articolo 12 Test di Unità Durante lo sviluppo dell'applicazione sono stati effettuati alcuni test di unità per verificare la correttezza delle funzionalità sviluppate. In particolare, si è voluto testare l’applicazione dei pattern, la funzionalità di invio e-mail e la funzione di verifica delle credenziali al momento del login. • Calcolo degli elementi di una categoria, Design Pattern Composite; • MacroCommand, Design Patterns Composite e Command; • Calcolo del totale del carrello, Design Pattern Strategy ; • Generazione del nome del File, Design Pattern Strategy ; • Verifica delle credenziali del Login; • Invio E-mail. 13