Università degli Studi di Padova - SIAGAS

Pagina creata da Angela Stefani
 
CONTINUA A LEGGERE
Università degli Studi di Padova - SIAGAS
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
Università degli Studi di Padova - SIAGAS
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.
Università degli Studi di Padova - SIAGAS
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
Università degli Studi di Padova - SIAGAS
Università degli Studi di Padova - SIAGAS
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
Università degli Studi di Padova - SIAGAS
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