Università degli Studi di Padova - SIAGAS
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Università degli Studi di Padova Dipartimento di Matematica "Tullio Levi-Civita" Corso di Laurea in Informatica Realizzazione di un’applicazione .NET WPF per la consultazione di informazioni relative ai prodotti della Grande Distribuzione Organizzata Tesi di laurea triennale Relatore Prof. Ranzato Francesco Laureando Sindico Carlo Matricola 1069322 Anno Accademico 2016-2017
Sindico Carlo: Realizzazione di un’applicazione .NET WPF per la consultazione di informazioni relative ai prodotti della Grande Distribuzione Organizzata, Tesi di laurea triennale, c Dicembre 2017.
Abstract Scopo di questa tesi di laurea è esporre il lavoro svolto dal laureando Sindico Carlo durante lo stage di trecentoventi ore presso l’azienda Retail Solutions S.R.L. con sede in Padova. Il progetto di stage si è incentrato sullo sviluppo di un’applicazione in tecnologia .NET WPF per la consultazione di documenti e informative relative ai prodotti e loro caratteristiche in ambito GDO e DO. Il progetto ha carattere sperimentale in quanto consente di esplorare i controlli WPF messi a disposizione dal framework grafico DevExpress, utilizzato come standard aziendale di rappresentazione delle interfacce e pannelli utente. Nella realizzazione del progetto è stato possibile, pertanto approfondire le potenzialità, i difetti e le caratteristiche della tecnologia adottata, nonchè le fasi che hanno portato alla realizzazione dell’applicazione che mira a sostituire il Libro Ingredienti che raccoglie e documenta tutte le componenti dei prodotti freschi e preparati allo scopo di informare su possibili elementi allergeni o specifiche intolleranze. Tutte le fasi, le problematiche e quanto prodotto durante il progetto sarà accuratamente esposto nei capitoli che compongono la presente tesi. iii
Ringraziamenti Innanzitutto, vorrei esprimere la mia gratitudine al Prof. Francesco Ranzato, relatore della mia tesi, per l’aiuto e il sostegno fornitomi durante la stesura del lavoro. Ho desiderio di ringraziare in particolar modo i miei genitori per il grande aiuto e il sostegno che mi hanno permesso di affrontare e concludere questo percorso di studi. Ringrazio Massimo Lana, tutor aziendale del mio stage, e tutti i dipendenti di Retail Solutions S.R.L., per avermi accolto e seguito durante il tirocinio. Desidero infine ringraziare i miei amici per tutte le bellissime avventure passate insieme e per il loro supporto. Padova, Dicembre 2017 Sindico Carlo v
Indice 1 Introduzione 1 1.1 L’azienda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Lo stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Organizzazione del testo . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Descrizione dello stage 3 2.1 Introduzione al progetto . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1 Considerazioni preliminari . . . . . . . . . . . . . . . . . . . . . 3 2.2 Verifica e validazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Vincoli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4.1 Linguaggi di programmazione . . . . . . . . . . . . . . . . . . . 5 2.4.2 Motori di ricerca testuali . . . . . . . . . . . . . . . . . . . . . 5 2.4.3 Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4.4 Database Management System . . . . . . . . . . . . . . . . . . 7 2.4.5 Strumenti di supporto all’attività di Codifica . . . . . . . . . . 8 2.4.6 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4.7 Strumenti per il versionamento . . . . . . . . . . . . . . . . . . 10 3 Funzionamento di Fresh Food Infopoint 13 3.1 Model-View-ViewModel . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3 Classi della Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3.1 LuceneService . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.2 Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.3.3 RepartiData . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.4 Reparto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.5 SendMessageTelegram . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.6 SyncDatabase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4 Classi della ViewModel . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.1 LibroIngredientiController . . . . . . . . . . . . . . . . . . . . . 19 3.4.2 SchedaProdottoController . . . . . . . . . . . . . . . . . . . . . 20 3.4.3 RicercaProdottoController . . . . . . . . . . . . . . . . . . . . . 20 3.4.4 ListaProdottiController . . . . . . . . . . . . . . . . . . . . . . 20 3.4.5 InvioEmailController . . . . . . . . . . . . . . . . . . . . . . . . 21 3.4.6 CondivisioneTelegramController . . . . . . . . . . . . . . . . . 21 3.5 Classi della View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5.1 LibroIngredientiView . . . . . . . . . . . . . . . . . . . . . . . . 22 vii
viii INDICE 3.5.2 SchedaProdottoView . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5.3 RicercaProdottoView . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.4 ListaProdottiView . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.5 InvioEmailView . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.5.6 CondivisioneTelegramView . . . . . . . . . . . . . . . . . . . . 24 4 Prodotto realizzato 25 4.1 Libro Ingredienti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Scheda Prodotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3 Ricerca Prodotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.4 Lista Prodotti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5 Tecnologie ausiliarie 29 5.1 Apache Lucene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1.1 Caratteristiche di Lucene . . . . . . . . . . . . . . . . . . . . . 29 5.1.2 Inserimento di un documento nell’indice . . . . . . . . . . . . . 30 5.1.3 Ricerca testo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2 Microsoft Sync Framework . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.1 Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.2 Processo di sincronizzazione . . . . . . . . . . . . . . . . . . . . 31 6 Conclusioni 33 6.1 Pianificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.2 Soddisfacimento degli obiettivi . . . . . . . . . . . . . . . . . . . . . . 34 6.3 Soddisfacimento dei requisiti . . . . . . . . . . . . . . . . . . . . . . . 34 6.4 Conoscenze acquisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.5 Considerazioni personali . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Appendices 37 A Analisi dei Requisiti 39 A.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 A.2 Casi d’uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 A.2.1 Requisiti di FreshFood Infopoint . . . . . . . . . . . . . . . . . 39 A.2.2 UC0: Scenario principale . . . . . . . . . . . . . . . . . . . . . 40 A.2.3 UC1: Visualizza pagina modalità di ricerca . . . . . . . . . . 41 A.2.4 UC2: Visualizza pagina Libro Ingredienti . . . . . . . . . . . 41 A.2.5 UC3: Selezione tipologia di ricerca . . . . . . . . . . . . . . . 42 A.2.6 UC3.1: Ricerca per nome prodotto . . . . . . . . . . . . . . . 42 A.2.7 UC3.2: Ricerca per bar code prodotto . . . . . . . . . . . . . 43 A.2.8 UC4: Selezione del risultato . . . . . . . . . . . . . . . . . . . 43 A.2.9 UC4.1: Selezione singolo risultato . . . . . . . . . . . . . . . . 44 A.2.10 UC4.2: Visualizza tutti i prodotti . . . . . . . . . . . . . . . . 44 A.2.11 UC5: Visualizza pagina Scheda Prodotto . . . . . . . . . . . . 44 A.2.12 UC5.1: Stampa prodotto . . . . . . . . . . . . . . . . . . . . . 44 A.2.13 UC6:Visualizza pagina ricerca prodotto . . . . . . . . . . . . . 44 A.2.14 UC6.1: Selezione reparto prodotto . . . . . . . . . . . . . . . . 45 A.2.15 UC6.2: Selezione caratteristiche prodotto . . . . . . . . . . . . 45 A.2.16 UC7: Visualizza risultato ricerca prodotto . . . . . . . . . . . . 46 A.2.17 UC8: Condivisione Telegram . . . . . . . . . . . . . . . . . . . 46 A.2.18 UC8.1: Inserimento username Telegram . . . . . . . . . . . . . 47
INDICE ix A.2.19 UC8.2: Errore inserimento username . . . . . . . . . . . . . . . 47 A.2.20 UC9: Invio Email . . . . . . . . . . . . . . . . . . . . . . . . . 48 A.2.21 UC9.1: Inserimento email . . . . . . . . . . . . . . . . . . . . . 48 A.2.22 UC9.2: Errore inserimento email . . . . . . . . . . . . . . . . . 49 A.3 Tracciamento dei Requisiti . . . . . . . . . . . . . . . . . . . . . . . . . 49 Glossario 53 Bibliografia 55
Elenco delle figure 2.1 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Apache Lucene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Microsoft .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4 Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.5 Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.6 DevExpress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.7 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.1 scenario principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 architettura di Fresh Food Infopoint . . . . . . . . . . . . . . . . . . . 15 3.3 Model di Fresh Food Infopoint . . . . . . . . . . . . . . . . . . . . . . 16 3.4 ViewModel di Fresh Food Infopoint . . . . . . . . . . . . . . . . . . . . 19 3.5 View di Fresh Food Infopoint . . . . . . . . . . . . . . . . . . . . . . . 22 4.1 finestra Libro Ingredienti . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 finestra Scheda Prodotto . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3 finestra Ricerca Prodotto . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.4 finestra lista prodotti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.1 architettura di apache lucene . . . . . . . . . . . . . . . . . . . . . . . 29 5.2 participant di Sync Framework . . . . . . . . . . . . . . . . . . . . . . 31 5.3 processo di sincronizzazione . . . . . . . . . . . . . . . . . . . . . . . . 31 A.1 architettura generale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 A.2 ricerca prodotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 A.3 selezione risultato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 A.4 stampa prodotto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 A.5 visualizza pagina ricerca prodotto . . . . . . . . . . . . . . . . . . . . . 46 A.6 condivisione telegram . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 x
ELENCO DELLE TABELLE xi A.7 invio email . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Elenco delle tabelle 6.1 Pianificazione periodi ore . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.2 Tabella del tracciamento dello stato dei requisiti funzionali . . . . . . 35 6.3 Tabella del tracciamento dello stato dei requisiti qualitativi . . . . . . 36 6.4 Tabella del tracciamento dello stato dei requisiti di vincolo . . . . . . 36 A.1 Tabella del tracciamento dei requisiti funzionali . . . . . . . . . . . . . 50 A.2 Tabella del tracciamento dei requisiti qualitativi . . . . . . . . . . . . 51 A.3 Tabella del tracciamento dei requisiti di vincolo . . . . . . . . . . . . . 51
Capitolo 1 Introduzione In questo capitolo verrà brevemente esposto il contesto in cui si è svolto lo stage, descrivendo le motivazioni che hanno spinto l’azienda a proporlo. 1.1 L’azienda Retail Solutions S.R.L. è un’azienda che opera nel settore ICT e realizza soluzioni informatiche ed attrezzature tecniche per la distribuzione al dettaglio food e non-food, per la ristorazione e per i servizi. È partner di grandi attori del mercato nazionale e internazionale che sono fra i migliori produttori di apparecchiature e software per il Retail, quali Wincor Nixdorf, Epson, Datalogic, Sirman, Axon Pos System. Retail Solutions si distingue nel campo delle tecnologie utilizzate per la realizzazione di soluzioni software per punti vendita destinate alla gestione del business retail, come ad esempio ONE 2.0 che è stato progettato per soddisfare le necessità gestionali dei punti vendita appartenenti ad una catena o ad un franchisor. L’azienda inoltre investe molto in ricerca e sviluppo ed è sempre pronta ad esplorare nuove tecnologie. 1.2 Lo stage Il progetto di stage svoltosi all’interno dell’azienda Retail Solutions è principalmente consistito nello sviluppo di una soluzione applicativa che faccia uso degli strumenti grafici touchscreen messi a disposizione dal framework DevExpress. L’applicazione mira a sostituire il libro ingredienti che attualmente risiede su supporto cartaceo il quale inevitabilmente comporta onerosi interventi per manutenzione e aggiornamento dei contenuti. La soluzione, oltre a eliminare le attività di manutenzione manuali, fornisce un accesso più agevole a tali informazioni invitando il cliente alla consultazione. L’azienda si pone l’obiettivo di creare un prodotto vendibile e che generi profitto attraverso la vendita dello stesso ai clienti. 1.3 Organizzazione del testo Il secondo capitolo descrive brevemente le condizioni, le metodologie e le tecnologie utilizzate durante lo stage. 1
2 CAPITOLO 1. INTRODUZIONE Il terzo capitolo descrive le scelte progettuali adottate e l’architettura che sta alla base dell’applicazione. Il quarto capitolo descrive in dettaglio come avviene l’interazione dell’utente con Fresh Food Infopoint. Il quinto capitolo descrive in dettaglio alcune tecnologie che si sono rivelate di maggiore impatto nello sviluppo del progetto. Nell’appendice vengono descritte le funzionalità dell’applicazione mediante una dettagliata analisi dei requisiti. Alla fine verrà presentata una considerazione finale nel capitolo "Conclusioni"
Capitolo 2 Descrizione dello stage In questo capitolo si intende illustrare nel dettaglio le fasi e le considerazioni che hanno portato allo sviluppo del progetto e che sono alla base della proposta di stage 2.1 Introduzione al progetto 2.1.1 Considerazioni preliminari L’azienda in cui si è svolto lo stage ha richiesto l’impiego di procedure, regole e strumenti adeguati per raggiungere il migliore risultato possibile. In particolare, durante lo stage sono stati richiesti i seguenti punti: ∗ Tracciabilità: è stato richiesto spesso di fornire un rendiconto delle principali attività che riguardano lo stato di avanzamento dei processi, al fine di verificare il rispetto degli obiettivi prefissati; ∗ Documentazione: descrizione di quanto è stato fatto, delle strategie utilizzate e dei dettagli implementativi in modo puntuale e preciso, per far sì che quanto è stato fatto sia di utilità all’azienda e sia riutilizzabile e replicabile in futuro, senza dover rifare tutte le attività, avendo già una strategia e una soluzione pronte e immediatamente applicabili; ∗ Misurazione: per ogni attività eseguita, deve essere misurabile il suo costo(in termini di tempo, nel caso del progetto qui esposto) e la sua qualità complessiva, in base a vari indicatori. Quanto esposto è stato tenuto in grande considerazione durante lo sviluppo, al fine di realizzare un prodotto quanto più possibile conforme agli standard di qualità aziendali. 2.2 Verifica e validazione L’attività di verifica e validazione è stata valutata in base al tempo disponibile durante lo stage. È stato importante soprattutto cercare un buon equilibrio nell’eseguire l’attività di verifica: troppo tempo investito infatti avrebbe portato ad un alto rischio di non finire completamente il prodotto, mentre non investirne abbastanza avrebbe portato ad una qualità bassa con la presenza di difetti. 3
4 CAPITOLO 2. DESCRIZIONE DELLO STAGE La qualità del prodotto è stata valutata non solamente nei termini del soddisfacimento dei requisiti, ma anche nei termini di soddisfazione dei clienti: portare a termine un prodotto che fosse in grado di attirare nuova clientela era, per FreshFood Infopoint, un obiettivo importante. Si è applicata la verifica come strumento per il controllo relativo al codice e alla documentazione prodotta mentre la validazione ha accertato che il prodotto finito soddisfacesse tutti i requisiti fissati in fase di analisi. La verifica e la validazione hanno trovato maggiormente posto nell’analisi dinamica del codice: l’analisi dinamica è stata effettuata utilizzando test ripetibili che permettessero di individuare possibili errori sul codice scritto durante la loro esecuzione. I due tipi di test più utilizzati sono stati: ∗ Test di unità ∗ Test di integrazione I test di unità si sono applicati nelle situazioni in cui si è voluto verificare il corretto funzionamento di piccole porzioni di codice, mentre i test di integrazione sono stati effettuati quando si è voluto verificare che l’integrazione tra le varie parti funzionasse senza problemi. Per effettuare i test di unità e di integrazione si è utilizzato la funzionalità già integrata presente in Visual Studio, ossia TestExplorer che permette di eseguire i test su più progetti di una soluzione. Questo ha permesso di rendere anche i test più semplici e maggiormente integrati con la piattaforma utilizzata. Durante lo sviluppo del prodotto si sono utilizzati diversi ambienti: ∗ ambiente di sviluppo, anche denominato dev; ∗ ambiente di produzione, chiamato prod. Questa suddivisione ha portato una migliore organizzazione. In un ambiente di sviluppo, lo sviluppatore si accerta che le funzionalità implementate funzionino tramite l’esecuzione di test dinamici. Una volta completato un insieme di funzionalità, si esegue il codice in un ambiente di test, in cui le nuove funzionalità vengono integrate con le altre già esistenti: vengono eseguiti poi test di integrazione, per valutare il comportamento dei diversi componenti dell’applicazione. Una volta ottenuti i risultati desiderati, si procede a rilasciare il prodotto in un ambiente di produzione e a renderlo disponibile al pubblico. 2.3 Vincoli Per quanto riguarda l’implementazione, non sono stati imposti allo stagista vincoli stringenti relativi ai dettagli implementativi, anche se è stato esplicitato di porre molta attenzione all’usabilità del prodotto, in quanto l’applicazione deve essere utilizzata da diverse categorie di utenti. Sono stati specificati dei requisiti, in rapporto con gli standard aziendali, che sono descritti nella sezione A. 2.4 Tecnologie utilizzate Per realizzare quanto è stato richiesto dall’azienda, si sono dovute apprendere svariate nuove tecnologie e linguaggi, di seguito elencati, che vanno ad aggiungersi a quelli pregressi, come ad esempio il C++ e il Java, già noti e utilizzati nel corso del progetto.
2.4. TECNOLOGIE UTILIZZATE 5 2.4.1 Linguaggi di programmazione C# figura 2.1: C# Il C# è un linguaggio di programmazione orientato agli oggetti sviluppato da Microsoft all’interno dell’iniziativa .NET e successivamente approvato come standard ISO (norma ISO/IEC 23270). La sintassi e struttura del C# prendono spunto da vari linguaggi, nati precedentemente quali C++, Java. Il risultato è un linguaggio che ha meno simbolismi rispetto al C++ e meno elementi decorativi rispetto a Java, ma adatto allo sviluppo di una vasta gamma di software. C# è il linguaggio che meglio descrive le linee guida sulle quali ogni programma .NET gira. Esso infatti è stato creato da Microsoft specificatamente per la programmazione nel framework .NET. I suoi tipi di dati "primitivi" hanno una corrispondenza univoca con i tipi .NET e molte delle sue astrazioni, come classi, interfacce, delegati ed eccezioni, sono particolarmente adatte a gestire il .NET framework. 2.4.2 Motori di ricerca testuali Apache Lucene figura 2.2: Apache Lucene Lucene è una API gratuita ed Open-Source concepita per realizzare applicazioni che necessitano di funzionalità di indicizzazione e ricerca full text. Lucene è molto nota ed usata per la realizzazione di motori di ricerca sia sul World Wide Web che sulle Intranet private. I dati gestiti da Lucene sono rappresentati come documenti (document) dotati di campi (fields) testuali. Questa genericità consente di realizzare, con le API di Lucene, prodotti indipendenti dal formato dei file: possono essere indicizzati con Lucene testi in PDF, HTML, Microsoft Word così come in ogni altro tipo di file dal quale sia possibile estrarre informazioni. L’applicazione Fresh Food Infopoint per la ricerca dei prodotti implementa le funzionalità di tale API. Versione utilizzata 7.0.1 Applicazione Viene utilizzato per la ricerca full text dei prodotti all’interno dell’applicazione.
6 CAPITOLO 2. DESCRIZIONE DELLO STAGE Vantaggi Possibilità di indicizzare ed eseguire query complesse sui metadati. Svantaggi Presenta difficoltà nel personalizzare campi e documenti strutturati. 2.4.3 Framework .NET figura 2.3: Microsoft .NET Framework La suite di prodotti .NET è un progetto all’interno del quale Microsoft ha creato una piattaforma di sviluppo software. La sua peculiarità è l’essere indipendente dalla versione operativa di Windows su cui è installata, e di includere molte funzionalità progettate espressamente per integrarsi in ambiente internet e garantire il massimo grado di sicurezza e integrità dei dati. Utilizza in modo esteso il concetto di modularità dei componenti software (Component Oriented Programming), proponendosi così come evoluzione dell’esistente modello COM. Versione utilizzata 4.5.1 Applicazione Viene utilizzato come piattaforma di sviluppo dell’applicazione. Vantaggi La portabilità del framework da una versione precedente a quella successiva non presenta problemi di compatibilità. Svantaggi Vi è una limitata possibilità di deployments ad elevata scalabilità. Windows Presentation Foundation - WPF Windows Presentation Foundation è una tecnologia all’interno del .NET Framework. Essa offre la base operativa per l’esecuzione di applicazioni Windows e riesce a rendere l’interfaccia grafica il più possibile indipendente dal codice logico. Per costruire un’interfaccia grafica infatti si utilizza un linguaggio ad hoc: l’Extensible Application Markup Language (XAML) è un linguaggio di markup basato su XML che permette la costruzione di interfacce grafiche senza la conoscenza di un linguaggio di programmazione.
2.4. TECNOLOGIE UTILIZZATE 7 Versione utilizzata 4.5.1 Applicazione Viene utilizzato per la creazione delle componenti grafiche dell’applicazione. Vantaggi Rende facile la divisione tra parte logica e parte grafica grazie all’uso del meccanismo di Data-Binding. Svantaggi Richiede l’apprendimento di un nuovo linguaggio con una curva di apprendimento bassa. Microsoft Sync Framework Il Microsoft Sync Framework è una piattaforma di sincronizzazione che consente la collaborazione, la condivisione di informazioni e l’accesso non in linea per applicazioni, servizi e dispositivi. Si tratta di un sistema aperto, grazie al quale si possono sincronizzare applicazioni qualsiasi, indipendentemente dal tipo specifico di origine dati da gestire, dal protocollo e dalla rete che si sta utilizzando. Ad esempio, i Sync Services per ADO.NET permettono la sincronizzazione fra database compatibili con ADO.NET, mentre gli altri provider a disposizione permettono la sincronizzazione di servizi web, archivi su file system e fonti dati personalizzate. Durante lo stage è stata utilizzata questa piattaforma per sincronizzare il database locale di Fresh Food Infopoint e il database remoto, per permettere l’utilizzo dell’applicazione anche in assenza di connessione a internet. Versione utilizzata 2.1 Applicazione Viene utilizzato per la sincronizzazione tra il database locale e remoto dell’applicazione. Vantaggi Un modello estensibile che consente di integrare più origini dati in un ecosistema di sincronizzazione. Svantaggi Presenta limiti di velocità di sincronizzazione per grandi moli di dati. 2.4.4 Database Management System Microsoft SQL Server Microsoft SQL Server è un DBMS relazionale prodotto da Microsoft. A differenza di altri database relazionali offre caratteristiche uniche nel suo genere che lo pongono per alcuni aspetti all’avanguardia nel settore dei database. È il DBMS usato in maniera predefinita dall’azienda e per questo motivo è stato scelto per questo progetto.
8 CAPITOLO 2. DESCRIZIONE DELLO STAGE figura 2.4: Microsoft SQL Server Versione utilizzata 2012 - 11.0.7001.0 Applicazione Viene utilizzato per il recupero dei dati relativi ai prodotti. Vantaggi Offre supporto completo per le chiavi esterne, supporta la modalità Always On che aumenta la disponibilità di un set di database utente per un’azienda. Svantaggi Limitata compatibilità per il suo utilizzo sui vari sistemi operativi. 2.4.5 Strumenti di supporto all’attività di Codifica Microsoft Visual Studio figura 2.5: Microsoft Visual Studio
2.4. TECNOLOGIE UTILIZZATE 9 Visual Studio è un ambiente di sviluppo integrato sviluppato da Microsoft, che supporta attualmente diversi tipi di linguaggi, quali C, C++, C#, Visual Basic, HTML, Javascript e che permette la realizzazione di applicazioni, siti web e servizi web. Visual Studio è inoltre multipiattaforma, in quanto è possibile realizzare programmi per server, workstation, pocket PC, smartphone e browser. Visual Studio integra la tecnologia IntelliSense la quale permette di correggere eventuali errori sintattici (ed alcuni logici) senza compilare l’applicazione, possiede un debugger interno per il rilevamento e la correzione degli errori logici nel codice in runtime e fornisce diversi strumenti per l’analisi prestazionale. Versione utilizzata 2017 - 15.4 Applicazione Viene utilizzato come ambiente di codifica per l’applicazione. Vantaggi Rende facile l’installazione di pacchetti aggiuntivi grazie all’utilizzo di NuGet, permette di correggere eventuali errori sintattici e logici senza compilare l’applicazione. Svantaggi L’ultima versione presenta diversi problemi nell’utilizzo di ReSharper. DevExpress figura 2.6: DevExpress DevExpress è un ambiente di sviluppo software che ha come principale finalità la realizzazione di interfacce utente per Microsoft Visual Studio in particolare lo sviluppo di sottosistemi grafici per renderizzare interfacce utente nelle applicazioni basate su Windows. DevExpress include una vasta quantità di controlli utente, quello utilizzato durante lo stage è stato Windows Presentation Foundation (WPF). Versione utilizzata 17.1
10 CAPITOLO 2. DESCRIZIONE DELLO STAGE Applicazione Viene utilizzato come ambiente per gestire tutti i controlli per realizzare interfacce grafiche. Vantaggi Supporta una vasta gamma di controlli che permettono di personalizzare le interfacce grafiche. Svantaggi La documentazone risulta essere a volte complessa. 2.4.6 API Telegram Bot Telegram Bot API permette di creare e connettere i bot al nostro sistema o applicazione. I bot di Telegram sono account speciali che non hanno bisogno di un numero di telefono da associare, ma vengono utilizzati come interfacce per eseguire il codice sul server Telegram e comunicare con il client. Versione utilizzata 3.4 Applicazione Viene utilizzato per inviare i messaggi tramite l’applicazione Telegram. Vantaggi Supporta una vasta gamma di funzionalità che permettono una forte interazione con l’utente. Svantaggi I bot Telegram non possono essere i primi a inviare i messaggi, ma deve esserci prima una richiesta dell’utente. 2.4.7 Strumenti per il versionamento Git figura 2.7: Git
2.4. TECNOLOGIE UTILIZZATE 11 Il sistema di versioning adottato per questo progetto e in generale utilizzato dall’azienda è Git, che negli ultimi anni si è affermato come uno dei migliori sistemi di controllo di versione. Le caratteristiche per cui si è distinto dagli altri software sono: ∗ L’architettura, progettata per essere totalmente distribuita, in modo da rendere possibile il lavoro e il versionamento offline ed anche un versionamento integrato con i principali IDE; ∗ Le funzionalità di branching e merging potenti, rapide e comode, che permettono una efficiente gestione di progetti, anche di grandi dimensioni; ∗ Le performance generalmente migliori e la possibilità di pubblicare i repository con i principali protocolli.
Capitolo 3 Funzionamento di Fresh Food Infopoint In questo capitolo verranno presentate le scelte progettuali adottate per lo sviluppo dell’applicazione e l’architettura che ne sta alla base. 3.1 Model-View-ViewModel figura 3.1: scenario principale 13
14 CAPITOLO 3. FUNZIONAMENTO DI FRESH FOOD INFOPOINT Lo sviluppo di una applicazione WPF viene reso più flessibile grazie all’adesione al pattern di sviluppo MVVM (Model-View-ViewModel). Questo pattern di sviluppo consente di separare le classi C# dell’applicazione che rappresentano la logica applicativa, dalle classi che si occupano dell’interfaccia grafica e dell’interazione con l’utente. Infatti un applicazione WPF è un insieme di template XAML, uno speciale linguaggio di markup modificato secondo le direttive WPF. Per mettere in relazione gli elementi (label, textbox, button) dell’interfaccia grafica, con gli oggetti del modello e le loro proprietà e i loro metodi, si deve creare una classe decorata con i controlli WPF che costituisce il cosiddetto ViewModel: si tratta della rappresentazione della logica dell’interfaccia utente, ovvero del "modello della vista" che l’utente avrà dei dati e delle operazioni dell’applicazione. In questo modo si ha il grosso vantaggio di poter cambiare l’interfaccia utente di una applicazione mantenendo inalterata tutta la sua logica applicativa. 3.2 Architettura Come si può vedere dall’immagine, le classi del Model rappresentano le entità che fanno da repository delle informazioni, e interagiscono con le librerie esterne, le classi del ViewModel agiscono da intermediario tra la View e il Model, esponendo le funzionalità adattandosi alle caratteristiche di astrazione WPF. Le classi della View rappresentano i template XAML che definiscono gli elementi UI di ogni pagina.
3.2. ARCHITETTURA 15 figura 3.2: architettura di Fresh Food Infopoint
16 CAPITOLO 3. FUNZIONAMENTO DI FRESH FOOD INFOPOINT 3.3 Classi della Model figura 3.3: Model di Fresh Food Infopoint Di seguito vengono descritte le classi più significative che compongono la logica di Fresh Food Infopoint, in relazione alle componenti che rappresentano la ViewModel dell’applicazione. BookData Descrizione Questa classe si interfaccia con il database, ottenendo la lista dei prodotti da visualizzare nel libro ingredienti e nella ricerca prodotto. Permette di definire il prodotto che deve essere inviato via mail o tramite telegram. Utilizza la classe Model:SyncDatabase per ottenere la lista dei prodotti aggiornata ogni qual volta si verifica una modifica al database remoto. Utilizza la classe Model:LuceneService per fornirgli la lista dei prodotti da indicizzare per la ricerca. Responsabilità ∗ Gestisce il recupero dei prodotti dal database; ∗ Gestisce l’aggiornamento della lista dei prodotti nel Libro Ingredienti ad ogni modifica del database;
3.3. CLASSI DELLA MODEL 17 ∗ Gestisce l’aggiornamento della lista dei prodotti nella Ricerca Prodotto ad ogni modifica del database; Dipendenze ∗ Model:LuceneService ∗ Model:SyncDatabase 3.3.1 LuceneService Descrizione Questa classe gestisce la ricerca di un prodotto. Attraverso la libreria Apache Lucene1 , questa classe indicizza all’interno di un documento ogni prodotto, assegnando ad ogni proprietà del prodotto un id con il quale Lucene effettua una ricerca. La ricerca avviene su più campi id per ciascun prodotto salvato nel documento, in questo modo l’utente può effettuare una ricerca non solo per nome del prodotto ma anche per altre caratteristiche quali gli ingredienti, gli allergeni. Responsabilità ∗ Gestisce l’indicizzazione dei prodotti all’interno dei documenti; ∗ Gestisce la ricerca di un prodotto; Dipendenze ∗ Model:Products:Product 3.3.2 Product Descrizione Questa classe fornisce le proprietà di un prodotto quali: ∗ Bar Code: indica il codice identificativo del prodotto; ∗ Nome: indica il nome del prodotto; ∗ Ingredienti: indica gli ingredienti del prodotto; ∗ Glutine: indica se il prodotto contiene glutine; ∗ Biologico: indica se il prodotto è biologico; ∗ Vegetariano: indica se il prodotto è vegetariano; ∗ Lattosio: indica se il prodotto contiene lattosio; ∗ Vegano: indica se il prodotto è vegano; ∗ Ecologico: indica se il prodotto utilizza una confezione ecologica; ∗ Reparto: indica il reparto di appartenenza del prodotto; 1 Si rimanda alla sezione 5.1 per una spiegazione più dettagliata dell’utilizzo di questa libreria.
18 CAPITOLO 3. FUNZIONAMENTO DI FRESH FOOD INFOPOINT ∗ Corsia: indica la corsia del supermercato dove trovare il prodotto; ∗ Allergeni: indica se il prodotto contiene allergeni; ∗ Tracce di: indica se il prodotto contiene tracce di altre sostanze. Responsabilità ∗ Gestisce le proprietà di un prodotto. 3.3.3 RepartiData Descrizione Questa classe si interfaccia con il database, ottenendo la lista dei reparti del supermercato in base ad una classificazione merceologica. Responsabilità ∗ Gestisce il recupero dei reparti dal database; ∗ Gestisce l’aggiornamento dei reparti nella Ricerca Prodotto ad ogni modifica del database; 3.3.4 Reparto Descrizione Questa classe gestisce le proprietà di un reparto, quali: ∗ CodiceReparto: indica il codice identificativo del reparto; ∗ NomeReparto: indica il nome del reparto. Responsabilità ∗ Gestisce le proprietà di un reparto. 3.3.5 SendMessageTelegram Descrizione Gestisce l’invio dei messaggi tramite l’applicazione di messaggistica Telegram. Utilizza le API di Telegram per inviare il messaggio della scheda prodotto visualizzata. Responsabilità ∗ Gestisce l’invio del messaggio a Telegram contenente la scheda prodotto. Dipendenze ∗ Telegram API
3.4. CLASSI DELLA VIEWMODEL 19 3.3.6 SyncDatabase Descrizione Permette la sincronizzazione tra il database locale e quello remoto. L’applicazione utilizza Microsoft Sync Framework2 per tale sincronizzazione, che ha il vantaggio di usufruire di un database locale sempre aggiornato anche nel caso assenza di connettività. Responsabilità ∗ Gestisce la sincronizzazione tra il database local dell’applicazione e quello remoto. Dipendenze ∗ Microsoft Sync Framework 3.4 Classi della ViewModel figura 3.4: ViewModel di Fresh Food Infopoint Di seguito vengono descritte le classi controller che rappresentano la ViewModel dell’applicazione. 3.4.1 LibroIngredientiController Descrizione Questa classe gestisce le richieste del libro ingredienti interfacciandosi con la classe LibroIngredientiView. Utilizza la classe Model:LuceneService per effettuare la ricerca. Responsabilità ∗ Viene utilizzata per processare le richieste di ricerca di un prodotto; 2 Si rimanda alla sezione 5.2 per una spiegazione più dettagliata di questo framework.
20 CAPITOLO 3. FUNZIONAMENTO DI FRESH FOOD INFOPOINT Dipendenze ∗ Model:LuceneService 3.4.2 SchedaProdottoController Descrizione Questa classe gestisce le richieste provenienti dalla scheda prodotto interfacciandosi con la classe View:SchedaProdottoView Responsabilità ∗ Viene utilizzata per processare le richieste di ottenimento delle caratteristiche di un prodotto; Dipendenze ∗ Model:Products:BookData ∗ Model:Reparti:RepartiData 3.4.3 RicercaProdottoController Descrizione Questa classe gestisce le richieste provenienti dalla ricerca prodotto interfacciandosi con la classe View:RicercaProdottoView Responsabilità ∗ Viene utilizzata per processare le richieste di ricerca di un prodotto specifico per mezzo dei filtri di ricerca; Dipendenze ∗ Model:Products:BookData ∗ Model:Reparti:RepartiData 3.4.4 ListaProdottiController Descrizione Questa classe gestisce le richieste provenienti dalla lista prodotti interfacciandosi con la classe View:ListaProdottiView Responsabilità ∗ Viene utilizzata per le richieste di ottenimento della lista dei prodotti cercata; Dipendenze ∗ Model:Products:BookData ∗ Model:Reparti:RepartiData
3.4. CLASSI DELLA VIEWMODEL 21 3.4.5 InvioEmailController Descrizione Questa classe gestisce le richieste provenienti dall’invio email interfacciandosi con la classe View:InvioEmailView Responsabilità ∗ Viene utilizzata per le richieste di invio email con la scheda prodotto; Dipendenze ∗ Model:Products:Product 3.4.6 CondivisioneTelegramController Descrizione Questa classe gestisce le richieste provenienti dalla condivisione telegram interfacciandosi con la classe View:CondivisioneTelegramView Responsabilità ∗ Viene utilizzata per processare le richieste per inviare un messaggio contenente la scheda prodotto tramite Telegram; Dipendenze ∗ Model:SendMessageTelegram
22 CAPITOLO 3. FUNZIONAMENTO DI FRESH FOOD INFOPOINT 3.5 Classi della View figura 3.5: View di Fresh Food Infopoint Di seguito vengono descritte le componenti che rappresentano la View dell’applicazione. 3.5.1 LibroIngredientiView Descrizione Gestisce la visualizzazione della ricerca di un prodotto descritto nel libro ingredienti. Utilizza la classe View:SchedaProdottoView per visualizzare i prodotti cercati. Responsabilità ∗ Viene utilizzata per effettuare la ricerca di un prodotto; ∗ Viene utilizzata per scegliere quali prodotti visualizzare nella scheda prodotto; Dipendenze ∗ ViewModel:LibroIngredientiController 3.5.2 SchedaProdottoView Descrizione Gestisce la visualizzazione dettagliata della scheda prodotto, permettendo all’utente di visualizzare il nome, gli ingredienti, gli allergeni e le "tracce di" del prodotto selezionato, o della lista prodotti. Responsabilità ∗ Viene utilizzata per visualizzare le caratteristiche di un prodotto;
3.5. CLASSI DELLA VIEW 23 Dipendenze ∗ ViewModel:RicercaProdottoController 3.5.3 RicercaProdottoView Descrizione Gestisce la visualizzazione della Ricerca Prodotto, permettendo all’utente di cercare un prodotto scegliendo il reparto e le qualità del prodotto. Utilizza la classe View:ListaProdottiView per visualizzare la lista dei prodotti che corrispondono ai criteri di ricerca. Responsabilità ∗ Viene utilizzata per cercare i prodotti che corrispondono alle caratteristiche scelte dall’utente; Dipendenze ∗ ViewModel:RicercaProdottoController 3.5.4 ListaProdottiView Descrizione Gestisce la visualizzazione della lista dei prodotti ricercati dall’utente. Responsabilità ∗ Viene utilizzata per visualizzare il nome, le qualità, la corsia, la promozione, di ciascun prodotto; Dipendenze ∗ ViewModel:ListaProdottiController 3.5.5 InvioEmailView Descrizione Gestisce la visualizzazione della finestra InvioEmail, permettendo all’utente di inviare un’email contenente la scheda prodotto visualizzata. Responsabilità ∗ Viene utilizzata per guidare l’utente nell’inserimento della propria email e ricevere la scheda prodotto; Dipendenze ∗ ViewModel:InvioEmailController
24 CAPITOLO 3. FUNZIONAMENTO DI FRESH FOOD INFOPOINT 3.5.6 CondivisioneTelegramView Descrizione Gestisce la visualizzazione della finestra CondivisioneTelegram, permettendo all’utente di ricevere un messaggio Telegram contenente la scheda prodotto visualizzata. Responsabilità ∗ Viene utilizzata per guidare l’utente nell’inserimento del proprio username e ricevere la scheda prodotto. Dipendenze ∗ ViewModel:CondivisioneTelegramController
Capitolo 4 Prodotto realizzato In questo capitolo verrà spiegata in dettaglio come avviene l’interazione dell’utente con Fresh Food Infopoint. 4.1 Libro Ingredienti figura 4.1: finestra Libro Ingredienti La figura 4.1 mostra il libro ingredienti che è la prima finestra che si apre all’avvio dell’applicazione. Tramite essa l’utente può effettuare una ricerca dei prodotti che fanno parte di un determinato reparto ad esempio gastronomia e macelleria. Il Libro Ingredienti presenta i seguenti componenti: ∗ la barra di ricerca permette all’utente di cercare un prodotto (1); ∗ completata la ricerca, l’utente visualizza la lista dei prodotti, selezionando un singolo prodotto viene riportato alla finestra Scheda Prodotto per visualizzarlo (2); ∗ il pulsante "VISUALIZZA LE SCHEDE DEI RISULTATI" permette all’utente di sfogliare la scheda prodotto della lista dei risultati (3). 25
26 CAPITOLO 4. PRODOTTO REALIZZATO 4.2 Scheda Prodotto figura 4.2: finestra Scheda Prodotto La figura 4.2 mostra la scheda di un prodotto. Tramite essa l’utente può sfogliare i prodotti visualizzando per ciascuna gli ingredienti, gli allergeni e se contiene tracce di altre sostanze. La Scheda Prodotto presenta i seguenti componenti: ∗ il pulsante "Stampa" permette all’utente di stampare la scheda prodotto visualizzata (1); ∗ il pulsante "Email" permette all’utente di ricevere un’email con la scheda prodotto visualizzata (2); ∗ il pulsante "Telegram" permette all’utente di ricevere un messaggio Telegram contenente la scheda prodotto visualizzata (3). ∗ i pulsanti direzionali permettono all’utente di scorrere le schede prodotto, qualora ci siano almeno due prodotti (4,5). 4.3 Ricerca Prodotto La figura 4.3 mostra la ricerca di un prodotto. Tramite essa l’utente può effettuare la ricerca di un prodotto specifico, selezionando il reparto e le caratteristiche di un prodotto. La Ricerca Prodotto presenta le seguenti componenti: ∗ la barra di ricerca permette all’utente di cercare un prodotto (1); ∗ la selezione del reparto permette all’utente di scegliere il reparto a cui appartiene il prodotto (2); ∗ i pulsanti "Senza Glutine", "Senza Lattosio", "Vegetariano", "Vegano", "Ecologico", "Biologico" permettono all’utente di filtrare la ricerca (3).
4.4. LISTA PRODOTTI 27 figura 4.3: finestra Ricerca Prodotto 4.4 Lista Prodotti figura 4.4: finestra lista prodotti La figura 4.4 mostra il risultato della ricerca prodotto. Tramite essa l’utente può scorrere tutti prodotti visualizzando nome, caratteristiche, e la corsia. La Lista Prodotti presenta le seguenti componenti: ∗ rappresenta la lista dei prodotti (1); ∗ i pulsanti direzionali permettono all’utente di scorrere la lista dei prodotti (2);
Capitolo 5 Tecnologie ausiliarie In questo capitolo verranno descritte in dettaglio alcune tecnologie che hanno avuto maggiormente impatto sullo sviluppo del progetto di stage. 5.1 Apache Lucene Lucene è una libreria che permette di avere in C# un motore di ricerca per diverse tipologie di file. Essa è estremamente flessibile in quanto permette di inserire nelle applicazioni le funzionalità di un motore di ricerca. figura 5.1: architettura di apache lucene 5.1.1 Caratteristiche di Lucene Il database che Lucene utilizza viene chiamato indice index. Se consideriamo un database relazionale possiamo dire che ogni indice contiene una sola tabella le cui righe 29
30 CAPITOLO 5. TECNOLOGIE AUSILIARIE rappresentano i documenti da noi inseriti. All’interno dell’indice vengono inseriti i documenti Document, a loro volta divisi in campi o colonne Fields. Alcuni campi testuali vengono indicizzati per la ricerca mentre altri, ad esempio l’identificatore del documento, vengono salvati e utilizzati come riferimento al documento da indicizzare. 5.1.2 Inserimento di un documento nell’indice L’inserimento di un documento all’interno dell’indice comporta una scansione del testo, per individuare le parole presenti; tale procedimento prende il nome di analisi ed ovviamente è dipendente dalla lingua del testo. Lucene fornisce un analizzatore standard, mirato sulle necessità delle lingue occidentali più diffuse: una volta che il documento (o meglio, i suoi campi) sono stati indicizzati questi sono disponibili per l’esecuzione di ricerche. 5.1.3 Ricerca testo La ricerca nell’indice avviene utilizzando una sorta di linguaggio di interrogazione. Lucene utilizza classi che derivano da Query e che si trovano nel package org.apache.lucene.search. L’accesso in lettura avviene tramite la classe IndexSearcher, mentre quello in scrittura avviene tramite la classe Writer. 5.2 Microsoft Sync Framework Microsoft Sync Framework è una piattaforma di sincronizzazione che permette l’accesso offline di una sorgente di dati per applicazioni, servizi e dispositivi. Gli sviluppatori possono creare il proprio sistema di sincronizzazione tra la propria applicazione e una sorgente di dati sfruttando un qualsiasi protocollo di rete, permettendo in questo modo il roaming, lo sharing e il prelievo dei dati anche offline. 5.2.1 Providers Un aspetto chiave del Sync Framework è la capacità di creare provider personalizzati. I provider permettono a qualsiasi sorgente di dati di partecipare al processo di sincronizzazione Peer to Peer, quando questa sincronizzazione viene abilitata. L’applicazione Fresh Food Infopoint infatti, utilizza il provider Database synchronization provider che permette la sincronizzazione tra database. Un altro aspetto fondamentale per capire come avviene la sincronizzazione con il Sync Framework è la componente Participant di un provider che rappresenta il luogo dove le informazioni di una sorgente di dati si possono recuperare. Un participant può essere un web service, un laptop, o anche una USB flash drive.
5.2. MICROSOFT SYNC FRAMEWORK 31 figura 5.2: participant di Sync Framework 5.2.2 Processo di sincronizzazione Il seguente diagramma mostra come un provider utilizza Sync Framework per comunicare con una sorgente di dati e recuperare lo stato delle informazioni da uno store. Ogni provider comunica con altri provider attraverso una sessione di sincronizzazione. figura 5.3: processo di sincronizzazione Data Source Il Data Source contiene le informazioni che hanno bisogno di essere sincronizzate e salvate. Può essere un database relazionale, un file, un servizio web. Ogni provider che partecipa al processo di sincronizzazione ha accesso al Data Source.
32 CAPITOLO 5. TECNOLOGIE AUSILIARIE Metadata Il provider permette di salvare le informazioni sullo stato e sui cambiamenti avvenuti nel Data Source. Metadata può essere salvato in un file senza la necessità che il database o qualsiasi altra sorgente di dati sia stata sincronizzata.
Capitolo 6 Conclusioni 6.1 Pianificazione Prima di iniziare il periodo di stage presso l’azienda Retail Solutions S.R.L, sono stati pianificati i tempi previsti per uno svolgimento completo del progetto. Questo studio ha portato all’individuazione dei seguenti periodi: ∗ Analisi: periodo di analisi di studio delle tecnologie con l’obiettivo di individuare tutti i requisiti richiesti per la realizzazione dell’applicazione; ∗ Progettazione: periodo in cui si è svolta progettazione architetturale e progettazione di dettaglio, individuando componenti, classi e moduli per la realizzazione del progetto; ∗ Sviluppo: periodo in cui è stata realizzata la parte di codice dell’applicazione; ∗ Verifica: periodo dedicato alla verifica del prodotto realizzato, conformemente alle norme aziendali di Retail Solutions S.R.L. ∗ Documentazione: periodo dedicato alla documentazione del codice prodotto durante lo Sviluppo. In esso sono state spiegate tutte le funzionalità in modo dettagliato a livello di codice ed è stato realizzato un documento apposito per il raggiungimento di tale scopo. Si noti che l’aver scritto sequenzialmente i periodi da svolgere durante lo stage non comporta che la loro realizzazione debba essere svolta allo stesso modo. Come concordato con l’azienda, l’individuazione e pianificazione dei periodi servono solo per stimare il tempo necessario per lo svolgimento del progetto. La pianificazione effettiva di questi periodi segue infatti il modello di ciclo di sviluppo descritto in sezione 6.4. 33
34 CAPITOLO 6. CONCLUSIONI Periodo Attività Ore Analisi 96 Studio del framework DevExpress e delle componenti 32 WPF Studio delle API Apache Lucene per la indicizzazione 32 e ricerca testuale Studio della tecnologia Microsoft Sync Framework per 32 la sincronizzazione tra database Progettazione 120 Progettazione architetturale 60 Progettazione di dettaglio 60 Sviluppo 40 Codifica 40 Verifica 48 Verifica e test funzionamento componenti 48 dell’applicazione Documentazione 16 Redazione documentazione relativa al progetto 16 Totale 320 tabella 6.1: Pianificazione periodi ore 6.2 Soddisfacimento degli obiettivi Il tirocinio formativo si è svolto secondo i tempi inizialmente concordati, concludendosi il giorno 05/11/2017. Non si sono verificati ritardi evidenti e i risultati ottenuto hanno soddisfatto pienamente le aspettative dell’azienda, che ha espresso una valutazione positiva dell’applicazione tale da considerarla un prodotto vendibile. 6.3 Soddisfacimento dei requisiti Gli obiettivi descritti nell’appendice A, dedicata al tracciamento dei requisiti individuati durante il periodo di Analisi, hanno avuto il seguente risultato:
6.3. SODDISFACIMENTO DEI REQUISITI 35 Requisito Stato R.F.1 Completato R.F.2 Completato R.F.3 Completato R.F.3.1 Completato R.F.3.2 Completato R.F.4 Completato R.F.4.1 Completato R.F.4.2 Completato R.F.5 Completato R.F.5.1 Completato R.F.6 Completato R.F.6.1 Completato R.F.6.2 Completato R.F.7 Completato R.F.8 Completato R.F.8.1 Completato R.F.9 Completato R.F.9.1 Completato tabella 6.2: Tabella del tracciamento dello stato dei requisiti funzionali Requisito Stato R.Q.1 Completato R.Q.2 Completato
36 CAPITOLO 6. CONCLUSIONI R.Q.3 Completato tabella 6.3: Tabella del tracciamento dello stato dei requisiti qualitativi Requisito Stato R.V.1 Completato R.V.2 Completato tabella 6.4: Tabella del tracciamento dello stato dei requisiti di vincolo 6.4 Conoscenze acquisite Lo stage mi ha permesso di acquisire nuove conoscenze tecnologiche e metodologiche e di approfondire quelle che già conosco. In particolare per quanto riguarda le tecnologie: ∗ C#: linguaggio di programmazione di cui già possedevo alcune conoscenze acquisite in precedenza, grazie ad alcune esperienze personali. Lo stage mi ha permesso di andare oltre quella che era la mia conoscenza di base approfondendo gli aspetti più avanzati del linguaggio; ∗ DevExpress: Libreria che ho dovuto imparare da zero. Si è rivelata un potente ed efficace strumento per la realizzazione di interfacce utente presenti nell’applicazione. DevExpress mi è stato di aiuto per comprendere i numerosi controlli WPF che permettono di personalizzare in maniera approfondita le interfacce utente. Inoltre per quanto riguarda le metodologie: ∗ Metodologia Scrum: Per lo sviluppo si è ricorsi al framework agile Scrum, che è quello utilizzato dall’azienda, eseguendo ovviamente daily Scrum quotidianamente per fare il punto sulla situazione e facendo sprint di durata di una/due settimane. Personalmente non ho mai utilizzato questa metodologia, ma durante lo stage ho avuto modo di comprenderne le tempistiche e gli obiettivi prefissati, riscontrando un elevato livello di produttività che tale permette. 6.5 Considerazioni personali Dal punto di vista formativo l’esperienza è stata sicuramente soddisfacente, in quanto mi ha permesso di avere un contatto con un’azienda che opera nel settore informatico ed avere esperienza diretta di come si lavora in quest’ambiente; sono rimasto molto soddisfatto del clima e dell’accoglienza che mi è stata riservata nell’azienda. È stata una esperienza estremamente interessante e degna conclusione del mio percorso di studi.
Appendices 37
Appendice A Analisi dei Requisiti In questo capitolo verranno analizzate le funzionalità dell’applicazione e descritti i casi d’uso principali. A.1 Introduzione Le prime due settimane di stage sono state dedicate quasi interamente allo studio della complessa architettura del framework DevExpress. Per affrontare quanto appena evidenziato è stato effettuato un attento studio dei principali controlli di cui è composto il framework, in particolare sperimentando i controlli WPF che permettono di sviluppare applicazioni abilitate all’uso del touchscreen. In seguito, si sono analizzate le richieste poste dall’azienda in merito alle funzionalità desiderate al fine di eseguire un’attenta analisi dei requisiti per estrapolare i casi d’uso prima di poter cominciare a progettare il progetto. A.2 Casi d’uso A.2.1 Requisiti di FreshFood Infopoint L’applicazione FreshFood Infopoint non fornisce alcun tipo di registrazione in quanto il suo scopo è la consultazione del libro ingredienti e la ricerca di un prodotto da banco o reparto specifico. Nei casi d’uso si è scelto quindi solo il termine Utente per rappresentare tutti i clienti che utilizzano l’applicazione. Per Sistema si intende l’applicazione Fresh Food Infopoint. 39
40 APPENDICE A. ANALISI DEI REQUISITI A.2.2 UC0: Scenario principale figura A.1: architettura generale ∗ Attori: Utente; ∗ Descrizione: L’Utente deve poter accedere alla Ricerca Prodotto, effettuare una ricerca per nome, bar code del prodotto, scegliere come filtri di ricerca le caratteristiche del prodotto, selezionare il reparto del prodotto, visualizzare la lista dei prodotti ricercati. L’Utente deve poter accedere al Libro Ingredienti, effettuare una ricerca per nome e bar code del prodotto, sfogliare attraverso uno slider il singolo prodotto o un insieme di prodotto come risultato della ricerca. L’Utente può inoltre ricevere la Scheda Prodotto tramite messaggio Telegram, per mail, oppure stampare tale scheda. ∗ Precondizione: l’Utente ha avviato l’applicazione; ∗ Postcondizione: Il Sistema ha fornito tutte le funzionalità richieste dall’Utente. ∗ Flusso principale:
A.2. CASI D’USO 41 1. L’Utente visualizza la pagina modalità di ricerca (UC1) 2. L’Utente visualizza la pagina Libro Ingredienti (UC2) 3. L’Utente seleziona la tipologia di ricerca (UC3) 4. L’Utente ricerca per nome prodotto (UC3.1) 5. L’Utente ricerca per bar code prodotto (UC3.2) 6. L’Utente seleziona il risultato nel Libro Ingredienti (UC4) 7. L’Utente seleziona il singolo prodotto nel Libro Ingredienti (UC4.1) 8. L’Utente visualizza tutti i prodotti nel Libro Ingredienti (UC4.2) 9. L’Utente visualizza la pagina Scheda Prodotto (UC5) 10. L’Utente stampa il prodotto (UC5.1) 11. L’Utente visualizza la pagina Ricerca Prodotto (UC6) 12. L’Utente seleziona il reparto del prodotto (UC6.1) 13. L’Utente seleziona le caratteristiche del prodotto (UC6.2) 14. L’Utente visualizza il risultato della ricerca prodotto (UC7) 15. L’Utente visualizza la pagina Condivisione Telegram (UC8) 16. L’Utente inserisce il proprio username Telegram (UC8.1) 17. L’Utente visualizza la pagina Invio Email (UC9) 18. L’Utente inserisce la propria email (UC9.1) A.2.3 UC1: Visualizza pagina modalità di ricerca ∗ Attori: Utente; ∗ Descrizione: L’Utente ha la possibilità di scegliere se consultare il Libro Ingredienti o la Ricerca Prodotto. Per effettuare quest’azione deve premere i relativi pulsanti; ∗ Precondizione: l’Utente visualizza la pagina modalità di ricerca; ∗ Postcondizione: L’Utente ha accesso al Libro Ingredienti oppure alla Ricerca Prodotto. A.2.4 UC2: Visualizza pagina Libro Ingredienti ∗ Attori: Utente; ∗ Descrizione: L’Utente ha la possibilità di visualizzare la pagina di ricerca prodotto nel Libro Ingredienti; ∗ Precondizione: L’Utente accede alla pagina Libro Ingredienti; ∗ Postcondizione: Il Sistema fornisce all’Utente la ricerca nel Libro Ingredienti.
Puoi anche leggere