• Non ci sono risultati.

Imperial, un interfaccia grafica utente per il lancio di produzione

N/A
N/A
Protected

Academic year: 2022

Condividi "Imperial, un interfaccia grafica utente per il lancio di produzione"

Copied!
80
0
0

Testo completo

(1)

Corso di Laurea in Informatica

Universit` a degli Studi di Padova

Imperial, un’interfaccia grafica utente per il lancio di produzione

Tesi di laurea triennale

Anno Accademico 2017-2018

Laureando

Bile E. Christian Prince Carlos

Relatore

Dott. Armir Bujari

(2)

Sommario

Il presente documento descrive il lavoro svolto nel periodo di stage della durata di trecentoventi ore, presso l’azienda SOGEA S.R.L di Treviso. Lo scopo dello stage `e stato lo studio della tecnologia QtQuick tramite l’implementazione di un applicativo che permetta ad un’azienda del settore Fast Fashion, di pianificare la produzione di capi di abbigliamento su dispositivi touch di grandi dimensioni.

Tesi di laurea triennale Pagina I di VIII

(3)

Ringraziamenti

Desidero innanzitutto ringraziare il Dott. Bujari Armir, relatore della mia tesi, per l’aiuto attento e preciso che `e riuscito a darmi durante la sua stesura (nonch´e per la pazienza dimostrata nell’insegnarmi a scrivere una tesi accurata). `E sempre bello trovare dei professori che amano la loro materia tanto da riuscire a trasmettere la passione anche agli studenti, sono perci`o molto contento di aver lavorato con Lei.

Ringrazio tutte le persone con cui sono venuto a contatto durante lo stage presso SOGEA S.R.L. Grazie in particolare al mio tutor aziendale Ronchin Simone, che mi ha seguito per tutta la durata dello stage ed aiutato a scrivere la tesi. Grazie per avermi coinvolto fin da subito nella definizione del progetto a cui avrei lavorato, permettendomi in questo modo di svolgere un lavoro che `e stato anche per me di grande interesse.

Un grazie di cuore va a tutta la mia famiglia e in particolare a mio fratello e sua moglie, per tutto il sostegno che mi hanno dato in questi anni di universit`a.

Ringrazio i miei compagni di universit`a diventati amici a cui ora non potrei mai rinun- ciare. Questi anni sarebbero stati molto diversi senza di voi. Grazie per le risate, il sostegno, e per aver sopportato le mie strane trasformazioni in persona noiosa e antipatica prima degli esami. Lucas, Singh, Elvis, Vincenzo, Andrea, Damien, Beatrice, Valentina, Eleonora, Matteo, Emanuele, Fabio, sono grato di aver conosciuto persone speciali come voi.

Grazie di cuore.

(4)

“Lo studio `e come la luce che illumina la tenebra dell’ignoranza, e la conoscenza che ne risulta `e il supremo possesso, perch´e non potr`a esserci tolto neanche dal pi`u abile dei ladri. Lo studio `e l’arma che elimina quel nemico che `e l’ignoranza. `E anche il miglior amico che ci guida attraverso tutti i nostri momenti difficili.”

–Dalai Lama.

(5)

Indice

1 Introduzione 1

1.1 Motivazione . . . 1

1.2 Azienda . . . 1

2 Il Progetto 2 2.1 Dominio applicativo . . . 2

2.2 Descrizione del progetto . . . 4

2.3 Prodotto finale . . . 4

2.4 Utente finale . . . 5

2.5 Obiettivi . . . 5

2.6 Vincoli metodologici . . . 7

2.7 Vincoli temporali . . . 7

2.8 Vincoli tecnologici . . . 7

2.9 Rischi e complessit`a del progetto . . . 7

2.10 Pianificazione . . . 8

2.11 Analisi preventiva dei rischi . . . 9

2.12 Qualit`a . . . 11

2.12.1 Qualit`a di prodotto . . . 11

2.12.2 Qualit`a di processo . . . 12

3 Ambiente di lavoro 13 3.1 Versionamento . . . 13

3.2 Altri strumenti per la gestione di progetto . . . 13

3.3 Documentazione . . . 13

3.3.1 QDoc . . . 13

3.3.2 TeXstudio . . . 13

3.3.3 StarUML . . . 14

3.4 Ambiente di sviluppo . . . 14

3.4.1 IDE . . . 14

3.4.2 Sistemi operativi . . . 14

4 Analisi dei requisiti 15 4.1 Casi d’uso . . . 15

4.2 Attori . . . 15

4.2.1 Attori primari . . . 15

4.2.2 Attori secondari . . . 15

4.3 Diagrammi dei casi d’uso generali . . . 16

4.3.1 Operatore non autenticato . . . 16

4.3.2 Operatore autenticato . . . 17

4.4 Altri diagrammi d’uso . . . 18

4.4.1 UC3: Ricerca modello . . . 19

(6)

4.4.2 UC9: Lancio produzione . . . 20

4.5 Requisiti . . . 22

4.5.1 Requisiti funzionali . . . 22

4.5.2 Requisiti di qualit`a . . . 25

4.5.3 Requisiti di Vincolo . . . 26

4.6 Riepilogo . . . 26

5 Studio delle tecnologie 27 5.1 QML . . . 27

5.2 QtQuick . . . 27

5.3 Alternative tecnologiche cross-platform . . . 28

6 Progettazione 29 6.1 Progettazione architetturale dell’applicativo . . . 29

6.2 Altre librerie usate . . . 30

6.2.1 SortFilterProxyModel . . . 30

6.2.2 Quick Promise . . . 30

6.3 Progettazione di dettaglio . . . 30

6.3.1 Model . . . 31

6.3.2 ViewModel . . . 34

6.3.3 View . . . 39

6.3.4 Design patterns . . . 49

6.3.5 Diagrammi di sequenza . . . 49

6.4 Progettazione interfaccia grafica utente . . . 52

6.4.1 Layout . . . 52

6.4.2 Responsiveness . . . 54

6.4.3 Lingua . . . 54

6.5 Riepilogo . . . 54

7 Codifica 55 8 Verifica e Validazione 56 8.1 Verifica . . . 56

8.1.1 Verifica Robustezza . . . 56

8.1.2 Verifica Modificabilt`a . . . 57

8.1.3 Verifica efficienza nel tempo . . . 58

8.1.4 Verifica Accuratezza . . . 60

8.1.5 Verifica Usabilit`a . . . 60

8.2 Validazione . . . 60

8.2.1 Soddisfazione . . . 60

(7)

9 Conclusioni 61

9.1 Raggiungimento degli obiettivi . . . 61

9.2 Resoconto dell’analisi dei rischi . . . 62

9.3 Consuntivo finale . . . 64

9.3.1 Qualit`a del processo . . . 66

9.4 Valutazione personale e conoscenze acquisite . . . 66

10 Bibliografia 68

Glossario 69

(8)

Elenco delle figure

1 Fasi principali di produzione di una maglietta . . . 3

2 Diagramma Work Breakdown Structure delle attivit`a di sviluppo . . . 9

3 Attenzione da portare ad un rischio . . . 10

4 Rappresentazione degli attori primari nei diagrammi dei casi d’uso . . . . 15

5 Rappresentazione degli attori secondari nei diagrammi dei casi d’uso . . . 16

6 Diagramma dei casi d’uso generali operatore non autenticato . . . 16

7 Diagramma dei casi d’uso generali operatore autenticato . . . 17

8 UC3: Ricerca modello . . . 19

9 UC9: Lancio produzione . . . 20

10 UC9.1: Inserimento quantit`a per taglia . . . 21

11 UC9.2: Inserimento automatico da curva . . . 21

12 Architettura Model–View–ViewModel (MVVM) . . . 29

13 Progettazione architettura dell’applicativo . . . 30

14 Diagramma delle classi Model 1/3 . . . 31

15 Diagramma delle classi Model 2/3 . . . 32

16 Diagramma delle classi Model 3/3 . . . 33

17 Diagramma delle classi ViewModel 1/5 . . . 34

18 Diagramma delle classi ViewModel 2/5 . . . 35

19 Diagramma delle classi ViewModel 3/5 . . . 36

20 Diagramma delle classi ViewModel 4/5 . . . 37

21 Diagramma delle classi ViewModel 5/5 . . . 38

22 Diagramma delle classi View 1/10 . . . 39

23 Diagramma delle classi View 2/10 . . . 40

24 Diagramma delle classi View 3/10 . . . 41

25 Diagramma delle classi View 4/10 . . . 42

26 Diagramma delle classi View 5/10 . . . 43

27 Diagramma delle classi View 6/10 . . . 44

28 Diagramma delle classi View 7/10 . . . 45

29 Diagramma delle classi View 8/10 . . . 46

30 Diagramma delle classi View 9/10 . . . 47

31 Diagramma delle classi View 10/10 . . . 48

32 Diagramma di sequenza: Inserimento tramite curva delle quantit`a per il lancio . . . 50

33 Diagramma di sequenza: Salvo lancio . . . 51

34 Diagramma di sequenza: Ricerca modelli . . . 52

35 Layout dell’applicativo . . . 53

(9)

Elenco delle tabelle

1 Obiettivi del progetto . . . 5

2 Valutazione della complessit`a . . . 7

3 Priorit`a degli obiettivi . . . 9

4 Rischi identificati . . . 10

5 Alcuni requisiti funzionali . . . 23

6 Tabella dei requisiti di qualit`a . . . 25

7 Tabella dei requisiti di vincolo . . . 26

8 Totale dei requisiti . . . 26

9 Classi Model 1/3 . . . 31

10 Classi Model 2/3 . . . 32

11 Classi Model 3/3 . . . 33

12 Classi ViewModel 1/5 . . . 34

13 Classi ViewModel 2/5 . . . 35

14 Classi ViewModel 3/5 . . . 36

15 Classi ViewModel 4/5 . . . 37

16 Classi ViewModel 5/5 . . . 38

17 Classi View 1/10 . . . 39

18 Classi View 2/10 . . . 40

19 Classi View 3/10 . . . 41

20 Classi View 4/10 . . . 42

21 Classi View 5/10 . . . 43

22 Classi View 6/10 . . . 44

23 Classi View 7/10 . . . 45

24 Classi View 8/10 . . . 46

25 Classi View 9/10 . . . 47

26 Classi View 10/10 . . . 48

27 Totale classi . . . 54

28 SFOUT e LCOM4 delle componenti architetturali . . . 58

29 Instabilit`a delle componenti architetturali . . . 58

30 Alcuni risultati di benchmark . . . 58

31 Complessit`a asintotiche . . . 59

32 Esiti della verifica di usabilit`a . . . 60

33 Requisiti soddisfatti . . . 61

34 Obiettivi raggiunti . . . 61

35 Attualizzazione dei rischi . . . 62

36 Differenza ore consuntivo-preventivo . . . 64

(10)

Capitolo 1

Introduzione

In questo capitolo vengono brevemente descritti l’azienda SOGEA S.R.L, presso la quale ho svolto lo stage, e i motivi per i quali ho scelto di fare questo progetto.

1.1 Motivazione

I motivi per i quali ho scelto di fare lo stage presso la SOGEA s.r.l sono due:

1. Sede: La sede dell’azienda si trova a poco meno di quattro chilometri dalla mia residenza, ed `e raggiungibile in poco pi`u di un quarto d’ora in bici. Grazie a questa vicinanza ho potuto evitare i costi di trasporto e i ritardi dei mezzi pubblici;

2. Il progetto: Il progetto in s´e mi `e sembrato interessante per il contesto e per le tecnologie da usare. Il mondo della produzione di abbigliamento mi era com- pletamento estraneo, ho pensato che avere delle conoscenze al riguardo potranno aiutarmi ad affrontare progetti simili per la sua parte gestionale, in un lavoro futuro.

Anche la tecnologia QtQuick[5] mi era nuova, conoscevo Qt Widgets[26], in quanto posto come vincolo tecnologico per il progetto nel corso di Programmazione ad Oggetti al secondo anno di universit`a, ma non QtQuick. Perci`o anche in questo caso sapere una tecnologia in pi`u mi sar`a utile in futuro.

1.2 Azienda

SOGEA nasce nel 1980 con una precisa filosofia: accompagnare il continuo miglioramento dei suoi clienti nel loro sviluppo tecnologico-organizzativo e nella loro crescita dimensio- nale. In oltre 35 anni di attivit`a il tratto distintivo di SOGEA `e diventato un valore condiviso da migliaia di aziende in Italia e all’estero che hanno fatto di SOGEA il loro partner ICT (Information and Communications Technology).

SOGEA sviluppa e realizza soluzioni software dedicate alle diverse e complesse esigen- ze delle PMI(Piccole Medie Imprese), coinvolgendo tutti gli aspetti strategici del loro business, come per esempio l’area amministrativa-finanziaria, il controllo di gestione, la produzione, la logistica e la sicurezza. Il metodo di sviluppo scelto `e AgileG, simile al metodoScrumG, in cui viene fatta un’analisi preliminare dei requisiti, seguita da sviluppi incrementali fino al prodotto finale. Nelle fasi di sviluppo c’`e una forte collaborazione tra i membri del team e tra il team e il cliente. Una volta il prodotto consegnato, il cliente viene assistito nell’utilizzo e negli eventuali problemi software che possono emergere del prodotto.

Il core business `e il sistema ERP (Pianificazione delle risorse d’impresa) che offre funzio- nalit`a di logistica, di gestione e controllo delle produzioni, di configurazione di prodotto e documenti. Attualmente la SOGEA `e impegnata nell’Industry 4.0G con l’automa- zione e l’SMM (Smart Manufacturing Manager) che consente di evolvere le aziende manufatturiere, e di condurle con mano a quella evoluzione industriale.

(11)

Capitolo 2

Il Progetto

Questo capitolo specifica il progetto svolto contestualizzandolo nel dominio applicativo, definendo gli obiettivi da raggiungere, la pianificazione iniziale, la qualit`a da raggiungere, e i probabili rischi che potevano perturbare le attivit`a di progetto.

2.1 Dominio applicativo

Il Fast Fashion[3] `e il settore dell’industria dell’abbigliamento che produce collezioni ispirate all’alta moda ma messe in vendita a prezzi contenuti e rinnovate in tempi brevissimi. Le aziende di questo settore utilizzano una strategia di produzione nata negli anni 80 negli Stati Uniti, denominata ”Metodo di risposta rapida”, basato sulla massimizzazione del guadagno tramite la massimizzazione dell’efficienza produttiva.

Infatti, l’efficienza produttiva permette la creazione di nuovi prodotti in tempi rapidi, che invogliano i consumatori a visitare pi`u spesso i negozi di abbigliamento.

Per questo motivo le attivit`a di produzione dei capi di abbigliamento in questo settore, devono essere il pi`u possibile automatizzate con mezzi rigorosamente efficienti ed efficaci.

Il processo atto alla gestione dell’intero ciclo di vita del prodotto, viene chiamato PLM[4](product lifecycle management ). Esso enfatizza l’automazione di molte fasi del ciclo di vita per ridurre significativamente i tempi di produzione, ad esempio l’uso di software ad hoc per il disegno del modello. Le fasi principali di produzione di un capo di abbigliamento sono:

1. Ideazione: fase maggiormente creativa, essa si suddivide nelle seguenti sottofasi:

(a) Design del modello: tenendo conto delle tendenze di moda, delle variazioni nel gusto e nel comportamento del consumatore;

(b) Modellistica: In questa fase vengono decisi ladistinta baseG, come produrre il capo e le varianti (articoli).

2. Prototipo: questa fase consiste nel creare un prototipo a fini di approvazione del modello;

3. Approvazione del modello: Il capo di abbigliamento viene approvato dall’organo aziendale incaricato, il quale approva valutando i costi di produzione, i tempi di produzione, e il guadagno dalla sua vendita (caratteristiche del modello capaci di suscitare il cliente a comprare);

4. Avvio in produzione: UnarticoloG deciso in fase di modellistica e approvato, `e lanciato in produzione;

5. Articolo prodotto: L’articolo `e stato prodotto nelle taglie e quantit`a specificate ed `e pronto ad essere distribuito nei negozi per la vendita.

(12)

Articolo 1

Descrizione: Maglietta SUPREME Base Codice tessuto: IEKL90

Taglie: M Colori:

Articolo 2

Descrizione: Maglietta SUPREME con taschino Codice tessuto: IEKL90

Codice tessuto tasca: JKLO78 Taglie: M

Colore maglietta + colore tasca:

          +          

Maglietta SUPREME

Prototipo Prototipo

Disegno del modello

Modellistica Modellistica

Lancio in produzione di 3000 capi di taglia M con il colore:

+

Approvato

Distribuzione del prodotto finito Produzione

terminata

Figura 1: Fasi principali di produzione di una maglietta

(13)

2.2 Descrizione del progetto

Il progetto mira alla creazione di un’applicazione su dispositivi touch di grandi dimensioni, che permetta la pianificazione della produzione di capi di abbigliamento. Il cliente richiedente del prodotto software `e una delle prime aziende ad implementare il processo produttivo Fast Fashion[3] in Italia, per questo viene richiesto un prodotto altrettanto rapido, intuitivo e che permetta di avere uno sguardo di insieme sulla situazione della produzione in tempo reale, e inoltre permetta di attivare nuove collezioni o produzioni.

Per pianificare una produzione, l’utente deve innanzitutto accedere all’applicazione con le sue credenziali di accesso. Una volta autenticato, l’utente potr`a:

ˆ Cercare un modello: Filtrare e visionare tutti gli articoli in base allo stato del prodotto finito nel PLM[4] o in base a parole chiavi su determinate caratteristiche di quest’ultimi. Alla selezione dell’articoloG, verr`a visualizzato il modello con il suo tessuto principale, i colori con i quali pu`o essere prodotto e tutti i tessuti che potrebbero sostituire quello principale.

ˆ Cercare un tessuto: Il programma consentir`a di filtrare e visionare tutti i tessuti giacenti in magazzino. Alla selezione del tessuto verranno visualizzati tutti gli articoli che richiedono il tessuto in questione.

Per lanciare una produzione l’utente dovr`a selezionare una coppia di articolo e tessuto, arriver`a poi nella schermata unica di lancio dove potr`a:

ˆ Richiedere la creazione di un nuovo articolo in quanto la combinazione selezionata non `e ancora esistente. Alla conferma verr`a comunicato aLectraG la richiesta di creazione del nuovo articolo. All’interno dell’applicativo vi sar`a una sezione dove si potr`a vedere tutte le richieste effettuate e lo stato di ognuna.

ˆ Lanciare una nuova quantit`a in produzione nel momento in cui la combina- zione selezionata sia approvata. Per la conferma del lancio verranno richiesti il codice colore e la quantit`a da produrre, precisa per taglia oppure attraverso una curva di distribuzione che spalmer`a la quantit`a totale sulle singole taglie. Alla conferma del lancio verr`a generata una stampa con la specifica dei dati specificati.

2.3 Prodotto finale

Il prodotto finale da rilasciare al cliente richiedente `e molto pi`u complesso e non pu`o essere sviluppato interamente nelle attivt`a di stage. Per questo motivo l’applicativo sviluppato durante le attivit`a di stage, rappresenter`a un prototipo da presentare entro fine anno al cliente, e verr`a successivamente ampliato con nuove funzionalit`a fino ad ottenere il prodotto finale da rilasciare. L’applicazione comunicher`a con un server gi`a sviluppato, tramite chiamateRESTG.

(14)

2.4 Utente finale

L’utente finale dell’applicazione `e un operatore dell’azienda che possiede un’esperienza nel settore e un’ottima conoscenza del mercato. `E in grado di individuare i prodotti che potrebbero rendere al meglio al momento tra quelli offerti e individuare nuove proposte.

Tuttavia egli possiede competenze informatiche basse, per questo motivo `e richiesta un’interfaccia touch intuitiva, pi`u user-friendlyG possibile.

2.5 Obiettivi

Sono riportati nella Tabella sottostante gli obiettivi fissati per lo stage con rispettivo identificativo, importanza e breve descrizione.

L’identificativo(Id) `e la stringa che identifica univocamente ogni obiettivo e rispetta la notazione [Importanza][Identificativo], dove l’importanza `e la sigla tra Ob, De e Fa, a seconda che l’obiettivo sia obbligatorio, desiderabile o facoltativo; l’identificativo `e un numero progressivo.

Un obiettivo `e classificato, secondo la sua utilit`a strategica, come:

ˆ Obbligatorio: gli obiettivi rientranti in questa categoria, sono irrinunciabili all’azienda e dovranno necessariamente essere soddisfatti;

ˆ Facoltativo: `e l’importanza attribuita agli obiettivi il cui soddisfacimento `e del tutto facoltativo, ma utili in quanto renderebbero il progetto pi`u completo;

ˆ Desiderabile: Non strettamente necessario soddifarlo, ma a valore aggiunto riconoscibile;

Tabella 1: Obiettivi del progetto Id Importanza Descrizione

Ob01 Obbligatorio Integrazione di dati provenienti da applicativi esterni in un’unica base dati centralizzata Ob02 Obbligatorio Configurazione di pi`u postazioni client che

condividono gli stessi dati

Ob03 Obbligatorio Sincronizzazione e consistenza dei dati tra le postazioni client e la postazione server centralizzata

Ob04 Obbligatorio Interfaccia utente orientata al touch screen senza l’utilizzo di mouse e tastiera

Ob05 Obbligatorio Interfaccia utente intuitiva, in quanto gli end user non hanno particolare confidenza con dispositivi tecnologici

(15)

Ob06 Obbligatorio Visualizzazione di immagini ad alta definizione Ob07 Obbligatorio Ricerca di modelli

Ob08 Obbligatorio Permettere di esplorare i dettagli dei modelli proposti

Ob09 Obbligatorio Lancio di una nuova produzione di abbigliamenti a partire da un modello

Ob10 Obbligatorio Suggerimento di potenziali tessuti abbinabili ad un certo modello

Ob11 Obbligatorio Ordine di un tessuto suggerito per un modello Ob12 Obbligatorio Ricerca di tessuti

Ob13 Obbligatorio Permettere di esplorare i dettagli dei tessuti Ob14 Obbligatorio Lancio di una nuova produzione di abbigliamenti

a partire dal tessuto

Ob15 Obbligatorio Visualizzazione della giacenzaG dei tessuti Ob16 Obbligatorio L’applicazione deve essere fluida nell’utilizzo Ob17 Obbligatorio Redigere una documentazione del lavoro svolto

Fa01 Facoltativo Interfaccia utente personalizzabile direttamente dall’end user in termini di carattere

Fa02 Facoltativo Interfaccia utente personalizzabile direttamente dall’end user in termini di colori

De01 Desiderabile Gestione multilingua, visto la possibilit`a di installazione in paesi esteri

De02 Desiderabile Gestione permessi associati ai profili utente per limitare alcune operativit`a in base al profilo end user

De03 Desiderabile Gestione permessi associati ai profili utente per configurare i dati accessibili in base al profilo end user

(16)

2.6 Vincoli metodologici

E stato concordato con SOGEA S.R.L che lo stage fosse svolto presso la sede operativa` della stessa, a Treviso, affinch´e io potessi essere inserito nel contesto aziendale ed avere la possibilit`a di confrontarmi col resto del team di esperti, oltre che a preservare la massima riservatezza sui dati personali dell’azienda e dei suoi clienti. Non `e stato posto nessun vincolo sui processi di qualit`a e di sviluppo da adottare, almeno di essere giustificati con prodotti documentali a fine stage.

2.7 Vincoli temporali

Lo stage prevede un totale ore lavorative di 320 ripartite in 8 settimane, 8 ore giornaliere dal Luned`ı al Venerd`ı, dalle 8.30 alle 18.00 con un’ora e mezza di pausa pranzo dalle 12.30 alle 14.00. Mi era permesso di avere dei giorni di indisposizione o di indisponibilit`a per impegni universitari, potevo recuperare le ore perse facendo giorni in pi`u di quelli previsti.

2.8 Vincoli tecnologici

L’azienda ha richiesto che lo sviluppo dell’applicativo avvenga nel linguaggio di program- mazione C++, e utilizzando il framework QtQuick[5] di cui l’azienda vuole valutare i pregi e difetti per un eventuale inserimento nelle sue attivit`a di sviluppo di interfacce utenti. Inoltre mi `e stato chiesto di identificare eventuali alternative tecnologiche a QtQuick, migliori in qualche aspetto.

2.9 Rischi e complessit`a del progetto

Dopo una valutazione qualitativa basata sulle mie conoscenze e competenze a risolvere problemi simili agli obiettivi di progetto da raggiungere, sono giunto a totalizzare 7 obiettivi di complessit`a bassa, 8 di complessit`a alta e 7 di complessit`a media. La complessit`a alta, si verifica maggiormente nello sviluppo dell’interfaccia grafica utente, ad esempio gli obiettivi Ob04, Ob05, Fa01. La tabella sottostante riassume gli obiettivi funzionali e di qualit`a da raggiungere, con le valutazioni qualitative di complessit`a a raggiungerli:

Tabella 2: Valutazione della complessit`a

Obiettivi Complessit`a

Ob01, Ob02, Ob03, Ob07, Ob12, Ob09, Ob14 Media Ob04, Ob05, Ob10, Ob16, Fa01, De01, De02, De03 Alta Ob06, Ob08, Ob11, Ob13, Ob15, Ob17, Fa02 Bassa

(17)

2.10 Pianificazione

Il progetto `e stato diviso in 6 periodi, ciascuno con una durata valutata preventivamente in ore di formazione, di sviluppo effettivo del prodotto, e di ricerca di soluzioni alternative tecnologiche o di sviluppo:

ˆ Periodo 1 (40 ore) ∼ Spiegazione del contesto dell’applicativo, spiegazione dell’ambiente QtQuick[5] e analisi dei requisiti:

– Con il supporto del tutor aziendale comprendere il problema, la tecnologia di sviluppo dell’interfaccia, il contesto di lavoro, e i requisiti.

ˆ Periodo 2 (40 ore): Utilizzo diRESTG service in modalit`a sincrona e asinrona, e gestione dei dati nel framework QT:

ˆ Periodo 3 (120 ore): Sviluppo dell’applicativo secondo specifiche

ˆ Periodo 4 (40 ore): Trovare eventuali soluzioni alternative per realizzare l’appli- cativo con la stessa tecnologia o con tecnologie alternative, valutando i vantaggi e svantaggi di queste.

ˆ Periodo 5 (40 ore): Test dell’applicativo e delle soluzioni alternative

ˆ Periodo 6 (40 ore): Valutazione del lavoro: Redigere una relazione del lavoro svolto valutando le tecnologie utilizzate, la qualit`a del lavoro svolto, eventuali soluzioni alternative.

Il periodo relativo alle attivit`a di sviluppo e il periodo relativo alle attivit`a di verifica e validazione sono stati accorpati per formare un solo periodo che `e stato suddiviso in 3 periodi, suddivisi a loro volta in altri 3 periodi, i quali mirano rispettivamente allo sviluppo per soddisfare gli obiettivi in base alla loro importanza e alla loro priorit`a. Si definiscono le seguenti priorit`a:

ˆ Alta: Obiettivo da raggiungere nei primi incrementi;

ˆ Media: Obiettivo da raggiungere dopo aver raggiunto gli obiettivi di priorit`a alta;

ˆ Bassa: Obiettivo da raggiungere per ultimo.

(18)

Figura 2: Diagramma Work Breakdown Structure delle attivit`a di sviluppo La tabella sottostante `e stata concordata con il tutor aziendale, e riordina gli obiettivi in ordine di priorit`a e utilit`a decrescenti.

Tabella 3: Priorit`a degli obiettivi

Obiettivi Importanza Priorit`a

Ob01, Ob02, Ob03, Ob04, Ob07, Ob09, Ob12, Ob14, Ob15, Ob16

Obbligatorio Alta

Ob05, Ob08, Ob13, Ob17 Obbligatorio Media

Ob06, Ob10, Ob11, Obbligatorio Bassa

Fa01 Facoltativo Media

Fa02 Facoltativo Bassa

De02, De03 Desiderabile Alta

De01 Desiderabile Bassa

2.11 Analisi preventiva dei rischi

Prima di iniziare il progetto, ho identificato i rischi che potrebbero portare il progetto a sforare le ore pianificate, ho poi valutato per ciascun rischio, la probabilit`a di accadimento

(19)

nel corso del progetto e il grado di impatto. Pi`u precisamente, un rischio ha:

ˆ Probabilit`a alta: se si verificher`a quasi sicuramente;

ˆ Probabilit`a media: c’`e una possibilit`a concreta che si verifchi;

ˆ Probabilit`a bassa: si verificher`a raramente;

ˆ Impatto alto: provoca uno sforamento significativamente le ore pianificate, difficilmente risolvibile o irrisolvibile;

ˆ Impatto medio: provoca uno sforamento significativo delle ore pianificate, ma risolvibile;

ˆ Impatto basso: provoca sforamenti trascurabili (al massimo 8 ore di lavoro in pi`u).

La figura sottostante mostra l’attenzione, tramite azioni preventive ed eventualmente correttive, da portare ad ogni rischio identificato.

Trascurabile in parte

Inaccettabile.

Attenzione moderata

Inaccettabile.

Maggiore attenzione

Completamente trascurabile

Completamente trascurabile

Accettabile.

Attenzione moderata

Trascurabile in parte

Accettabile.

Maggiore attenzione

Accettabile.

Minore attenzione

Probabilità

Bassa Media Alta

Impatto

AltoMedioBasso

Figura 3: Attenzione da portare ad un rischio La tabella sottostante elenca i rischi identificati.

Tabella 4: Rischi identificati

Id Descrizione Probabilit`a Impatto

Rsk01 Poca familiarit`a con il dominio applicativo. Alta Medio

(20)

Rsk02 Poca familiarit`a con la tecnologia QtQuick[5].

Alta Medio

Rsk03 Poca familiarit`a con il linguaggio QML. Alta Medio Rsk04 Complessit`a alta dell’obiettivo Ob04. Alta Medio Rsk05 Complessit`a alta dell’obiettivo Ob05. Alta Alto Rsk06 Complessit`a alta dell’obiettivo Ob10. Alta Medio Rsk07 Complessit`a alta dell’obiettivo Ob16. Alta Alta Rsk08 Complessit`a alta dell’obiettivo Fa01. Media Alto Rsk09 Complessit`a alta dell’obiettivo De01. Bassa Alto Rsk10 Complessit`a alta dell’obiettivo De02. Bassa Medio Rsk11 Complessit`a alta dell’obiettivo De03. Bassa Medio Rsk12 Un obiettivo di progetto `e incorretto. Bassa Alto Rsk13 Inadattabilit`a delle tecnologie allo sviluppo

di applicazioni veloci.

Media Medio

2.12 Qualit`a

In questa sottosezione, illustro i piani e le strategie adottate per garantire la qualit`a di prodotto e di processo. Il piano prevedeva un sistema di misurazione e verifica continua nelle attivit`a di progetto per rilevare e correggere tempestivamente eventuali anomalie per massimizzare l’economicit`a.

2.12.1 Qualit`a di prodotto

Gli obiettivi di qualit`a del prodotto richiesti, e quelli impliciti derivanti dal dominio applicativo, portavano al monitoraggio delle seguenti qualit`a di prodotto:

ˆ Qualit`a esterne

Accuratezza: Grado di accuratezza della capacit`a del prodotto a soddisfare i bisogni sotto specifiche condizioni. Verificabilit`a con metodi di analisi statica e dinamica, con indicatori invece di metriche. Valore accettabile: x ≥ 80%.

Robustezza: Capacit`a del prodotto a sopportare ingressi diversi (giusti, sbagliati, tanti, pochi) dall’utente e dall’ambiente. Verificabile con metodi di analisi

(21)

dinamica e misurabile con la seguente metrica (personalizzazione della metrica Sensitivity usata in statistica per valutare i classificatori binari):

Robustezza: X = d+ed d: Il numero di output corretti.

e: Il numero di fallimenti osservati.

Il valore accettabile: X ≥ 90% per ogni unit`a.

Efficienza nel tempo: Capacit`a del prodotto ad essere computazionalmente veloce. Verificabile con benchmarkG, e misura in millisecondi. Valore inaccettabile:

x ≥ 3000ms di risposta di un’unit`a.

Usabilit`a: L’essere comprensibile, apprendibile e attraente del prodotto.

Verificabile sottoponendo il prodotto in esecuzione, a valutazioni qualitative del tutor aziendale;

ˆ Qualit`a interne:

Modificabilit`a: L’essere modificabile ed estendibile con nuove funzionalit`a del prodotto. Verificabile con metodi di analisi statica e metrica di instabilit`a definita come segue:

Instabilit`a: I = AC A: Indice di accoppiamento.

C: Indice di coesione.

Il valore accettabile: I < 1 per ogni unit`a.

ˆ Qualit`a in uso:

Soddisfazione: Indice di soddisfazione del cliente. Da verificare mostrando ogni incremento al tutor aziendale, che grazie alla sua esperienza di sviluppo software in quel ambito, esprimer`a una soddisfazione che sar`a una buona approssimazione della soddisfazione del cliente.

2.12.2 Qualit`a di processo

Il tempo `e la risorsa limitata su cui potevano contare le attivit`a del progetto di stage, era quindi necessario monitorare le attivit`a di progetto per non superare le ore pianificate e garantire una copertura totale degli obiettivi. Ho quindi deciso di usare la metrica Cost Variance[14] adattando la sua definizione alle mie esigenze nel modo seguente:

Cost Variance (CV): CV = EV − AC EV (Earned Value)= Totale obiettivi raggiunti

Totale obiettivi × Totale ore;

AC (Actual Cost) `e il totale delle ore impiegate per raggiungere gli obiettivi.

Un valore di CV maggiore di 0 indica che il progetto evolve con maggior efficienza rispetto a quanto pianificato, mentre un valore minore di 0 indica che evolve con minor efficienza.

(22)

Capitolo 3

Ambiente di lavoro

In questo capitolo vengono presentati gli strumenti utillizati per svolgere correttamente le attivit`a di progetto.

3.1 Versionamento

Per quanto riguarda il versionamento, lo strumento utilizzato `e TortoiseSVN[15]. Questo strumento `e basato sul Subversion di Apache (SVN), e prevede un’interfaccia grafica facile da usare, infatti bastano due clic per il commit e il pull. Scritto per girare come un’estensione di Microsoft Windows, `e un programma gratuito e utilizzato dall’azienda come strumento di controllo versione nella gestione di configurazione dei suoi prodotti.

3.2 Altri strumenti per la gestione di progetto

ˆ Google Drive: per la condivisione veloce di file come guide, documentazioni, riferimenti utili e documenti informali.

ˆ Google Calendar: per la gestione degli eventi ed impegni.

3.3 Documentazione

Per quanto riguarda la produzione del manuale sviluppatore lo strumento utilizzato dall’azienda `e QDoc. Mentre per la redazione di documenti come ad esempio la relazione di lavoro svolto richiesta, l’azienda usa solitamente i pacchetti Microsoft Office, ma mi ha delegato la scelta del software da utilizzare per la loro produzione.

3.3.1 QDoc

QDoc[16] `e uno strumento per la generazione automatica di documentazione a partire dal codice commentato di classi C++ e/o QML. Genera documentazione sia in HTML che in WEBXML, senza generare i diagrammi delle classi. `E uno strumento semplice da usare ed `e installato insieme a Qt Creator[17]. Questo strumento `e sempre stato utilizzato dall’azienda in quanto strumento offerto da Qt Framework, il framework su cui si appoggiano quasi tutte le produzioni software dell’azienda.

3.3.2 TeXstudio

TeXstudio `e un editore di file scritti nel linguaggio di markup LATEX, linguaggio usato per la produzione di documenti basato sul programma di composizione tipografica TEX.

E distribuito con una licenza di software libero ed `` e disponibile per praticamente tutti i sistemi operativi, tra cui Microsoft Windows, macOS e le varie distribuzioni Linux.

Ho scelto questo strumento perch´e l’ho utilizzato pi`u volte per la redazione di relazioni

(23)

di progetti universitari e altri documenti, quindi ho pi`u pratica con questo strumento rispetto ai pacchetti Microsoft Office che ho utilizzato pochissimo tanti anni fa.

3.3.3 StarUML

Per la modellazione concettuale del sistema e la progettazione, `e stato necessario modellare con UML, la mia scelta `e ricaduta su StarUML disponibile in versione gratuita di prova.

L’ho identificato come il software pi`u completo e di facile utilizzo fra quelli dedicati (ad esempio, GNU Dia), oltre ad averlo usato nel progetto didattico di ingegneria del software. StarUML supporta sia i costrutti di UML 1.x che di UML 2.x e permette di modellare casi d’uso, i diagrammi delle classi, degli oggetti, delle attivit`a e di sequenza;

produce inoltre diagrammi di aspetto semplice ed essenziale adatti ad essere inseriti in relazioni formali.

3.4 Ambiente di sviluppo 3.4.1 IDE

L’applicazione richiesta doveva essere sviluppata con QtQuick[5] di Qt Framework. L’IDE utilizzato `e stato Qt Creator[17] in quanto unico IDE sul mercato che permetta lo sviluppo di applicazioni in Qt Framework. Questo IDE `e lo strumento di sviluppo dell’azienda da tanti anni, ed ha il vantaggio di aumentare la produttivit`a grazie alle sue numerose semplificazioni nella scrittura di codice.

3.4.2 Sistemi operativi

Il sistema operativo scelto dall’azienda per le sue attivit`a di progetto `e Microsoft Windows, in quanto cliente di molti prodotti Microsoft Windows come Microsoft Office. Bench´e questo sistema operativo abbia il difetto, che ho appreso durante un progetto universitario, di fare molte ottimizzazioni grafiche indesiderate che fanno credere che la codifica di un certo elemento grafico sia apparentemente corretta, non `e stato possibile cambiarlo in quanto imposto.

(24)

Capitolo 4

Analisi dei requisiti

Questo capitolo presenta l’analisi dei requisiti svolta per il progetto, approfondita con alcuni diagrammi dei casi d’uso e tabelle dei requisiti.

4.1 Casi d’uso

I diagrammi dei casi d’uso sono diagrammi UML che servono a descrivere le interazioni fra il sistema e gli utenti, esponendo cos`ı l’insieme delle funzionalit`a del sistema dal punto di vista dell’ utente. Ogni caso d’uso `e classificato secondo la seguente convenzione:

UC[Codice padre]*.[Codice identificativo]

ˆ Codice padre: il codice identificativo del caso d’uso generico che ha generato il caso d’uso in esame. Se il caso d’uso non `e stato generato da altri, va tralasciato;

ˆ Codice identificativo: Identifica univocamente il caso d’uso. `E un codice composto da sole cifre.

4.2 Attori

4.2.1 Attori primari

Un attore primario `e un utente che interagisce con il sistema per raggiungere un obiettivo.

Sono stati definiti i seguenti attori primari:

ˆ Operatore non autenticato: Un operatore dell’azienda cliente, come descritto nellasottosezione 2.4, che non ha ancora effetuato l’autenticazione presso il sistema;

ˆ Operatore autenticato: Un operatore dell’azienda cliente, come descritto nella sottosezione 2.4, che `e stato autenticato presso il sistema.

Figura 4: Rappresentazione degli attori primari nei diagrammi dei casi d’uso 4.2.2 Attori secondari

Un attore secondario `e un utente che interagisce con il sistema per aiutarlo a raggiungere gli obiettivi dell’attore primario. Vengono definiti i seguenti attori secondari:

(25)

ˆ LectraG: sistema esterno che fornisce tutti i dati relativi al PLM[4].

Figura 5: Rappresentazione degli attori secondari nei diagrammi dei casi d’uso 4.3 Diagrammi dei casi d’uso generali

4.3.1 Operatore non autenticato

Figura 6: Diagramma dei casi d’uso generali operatore non autenticato

ˆ Attori primari: Operatore non autenticato;

ˆ Descrizione: L’operatore non autenticato vuole accedere alle funzionalit`a del sistema;

ˆ Precondizione: Il sistema offre solo la funzionalit`a di autenticazione all’operatore non autenticato.

ˆ Postcondizione: Il sistema ha autenticato l’operatore;

ˆ Scenario principale:

(26)

– L’operatore non autenticato si autentica presso il sistema (UC1).

ˆ Estensioni:

– Se l’operatore non autenticato inserisce erroneamente le credenziali di accesso, viene ritornato un messaggio di errore (UC2).

4.3.2 Operatore autenticato

Figura 7: Diagramma dei casi d’uso generali operatore autenticato

ˆ Attori primari: Operatore autenticato;

(27)

ˆ Descrizione: L’operatore autenticato accede alle funzionalit`a del sistema;

ˆ Precondizione: Il sistema offre le seguenti funzionalit`a all’operatore autenticato:

– Ricerca di modelli (UC3);

– Ricerca di tessuti (UC8);

– Visualizzazione di una lista di modelli (UC4);

– Visualizzazione di un modello (UC5);

– Visualizzazione di una lista di tessuti (UC7);

– Visualizzazione di un tessuto (UC6);

– Lancio produzione (UC10);

– Richiesta nuova abbinazione modello e tessuto (UC12);

– Personalizzazione dell’interfaccia grafica (UC13);

– Visualizzazione delle richieste di lancio effetuate (UC14);

– Confermare un lancio di produzione sospeso (UC15).

ˆ Postcondizione: Il sistema ha offerto le funzionalit`a riservate all’operatore autenticato;

ˆ Scenario principale:

– L’operatore autenticato apre l’interfaccia grafica per accedere alle funzionalit`a.

ˆ Estensioni:

– Se l’operatore autenticato non inserisce una quantit`a di produzione nella fase di lancio, viene ritornato un messaggio di errore (UC10);

– Se l’operatore autenticato inserisce una quantit`a di produzione maggiore della giacenzaG del tessuto, in fase di lancio produzione, viene ritornato un messaggio di errore (UC11);

4.4 Altri diagrammi d’uso

In questa sezione presento, con un ulteriore livello di dettaglio, alcuni diagrammi d’uso presenti in Figura 7.

(28)

4.4.1 UC3: Ricerca modello

Figura 8: UC3: Ricerca modello

ˆ Attori primari: Operatore autenticato

ˆ Descrizione: L’operatore autenticato effettua una ricerca di modelli che possiedono certe caratteristiche;

ˆ Precondizione: Il sistema permette all’operatore autenticato di effettuare una ricerca di modelli in base al loro stato o ad una parola chiave;

ˆ Postcondizione: Il sistema ha ricevuto i dati di filtro ed ha ritornato all’utente, una lista di modelli che possiedono le caratteristiche richieste;

ˆ Scenario principale:

– L’operatore autenticato inserisce una parola chiave (UC3.1);

– L’operatore autenticato seleziona uno stato del ciclo di vita dell’articoloG: UC3.3, UC3.4, UC3.5, UC3.6, UC3.7, UC3.8.

(29)

4.4.2 UC9: Lancio produzione

Figura 9: UC9: Lancio produzione

ˆ Attori primari: Operatore autenticato;

ˆ Descrizione: L’operatore autenticato lancia la produzione di un modello;

ˆ Precondizione: L’utente ha selezionato un modello, un tessuto e un colore del modello. Il sistema gli permette di inserire una quantit`a di produzione per le taglie in cui l’articoloG verr`a prodotto;

ˆ Postcondizione: La richiesta di lancio produzione `e stata validata da sistema ed aggiunta alla lista delle richieste di lanci produzione;

ˆ Scenario principale:

– L’operatore autenticato seleziona un modello;

– L’operatore autenticato seleziona un tessuto del modello;

– L’operatore autenticato seleziona un colore del modello;

– L’operatore autenticato seleziona inserisce una quantit`a da produrre per ogni taglia.

UC9.1: Inserimento quantit`a per taglie

(30)

Figura 10: UC9.1: Inserimento quantit`a per taglia

ˆ Attori primari: Operatore autenticato;

ˆ Descrizione: L’operatore autenticato inserisce una quantit`a per una taglia di produzione dell’articoloG;

ˆ Precondizione: Il sistema permette all’utente di inserire una quantit`a di produ- zione per ogni taglia disponibile dell’articolo;

ˆ Postcondizione: Il sistema ha validato le quantit`a inserite;

ˆ Scenario principale:

– L’operatore autenticato inserisce una quantit`a da produrre per ogni taglia (UC9.1.1).

UC9.2: Inserimento automatico da curva

Figura 11: UC9.2: Inserimento automatico da curva

(31)

ˆ Attori primari: Operatore autenticato;

ˆ Descrizione: L’operatore autenticato sceglie di inserire in modo automatico le quantit`a di produzione per ogni taglia;

ˆ Precondizione: Il sistema permette all’utente di inserire in modo automatico una quantit`a di produzione per ogni taglia, inserendo un totale e scegliendo una curva di distribuzione;

ˆ Postcondizione: Il sistema ha validato le quantit`a inserite;

ˆ Scenario principale:

– L’operatore autenticato seleziona l’inserimento automatico delle quantit`a da produrre per ogni taglia;

– L’operatore autenticato inserisce il totale di vestiti da produrre indipendente- mente dalle taglie (UC9.2.1);

– L’operatore autenticato seleziona la curva di ripartizione del totale nelle diverse taglie (UC9.2.2).

4.5 Requisiti

Sono riportati di seguito i requisiti individuati per il progetto con rispettivo codice identificativo, importanza e breve descrizione. Il codice identificativo `e la sigla che identifica ogni requisito e rispetta la seguente notazione:

R[Tipo][Importanza][Identificativo]

ˆ Tipo:

– F: requisito funzionale;

– V: requisito di vincolo;

– Q: requisito di qualit`a.

ˆ Importanza:

– O: requisito obbligatorio;

– D: requisito desiderabile;

– F: requisito facoltativo.

ˆ Identificativo: codice che identifica in modo univoco un requisito. Viene rap- presentato con la notazione decimale puntata per rendere pi`u intuibile la forma gerarchica.

4.5.1 Requisiti funzionali

Al termine dell’ attivit`a di analisi dei requisiti, sono stati identificati e consolidati 76 requisiti funzionali. La tabella che segue presenta alcuni di questi requisiti.

(32)

Tabella 5: Alcuni requisiti funzionali Id Importanza Descrizione

RFO01 Obbligatorio Un operatore non autenticato deve potersi autenti- care.

RFO01.1 Obbligatorio Per autenticarsi, un operatore non autenticato deve poter inserire il suo nome utente.

RFO01.2 Obbligatorio Per autenticarsi, un operatore non autenticato deve poter inserire la sua password.

RFO02 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di modelli.

RFO02.1 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di un modello preciso inserendo il codice modello.

RFO02.2 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di un modello preciso inserendo il codice del suo tessuto principale.

RFO02.5 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di modelli che sono in stato distinta baseG. RFO02.9 Obbligatorio Un operatore autenticato deve poter effettuare una

ricerca di modelli che sono in stato lanciato.

RFO02.10 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di modelli che sono in stato in produzione.

RFO03 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di tessuti.

RFO03.1 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di un tessuto preciso inserendo il codice tessuto.

RFO03.2 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di tessuti che contengono una certa caratteristica specificata nel campo breve descrizione.

RFO03.3 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di tessuti che contengono una cer- ta caratteristica specificata nel campo descrizione estesa.

(33)

RFO03.4 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di tessuti inserendo un limite inferiore di giacenzaG.

RFO03.5 Obbligatorio Un operatore autenticato deve poter effettuare una ricerca di tessuti inserendo un limite superiore di giacenzaG.

RFO06 Obbligatorio Un operatore autenticato deve poter lanciare una produzione di abbigliamento.

RFO06.1 Obbligatorio Per lanciare una produzione, l’operatore autenti- cato deve poter selezionare un modello e un tes- suto associato con giacenzaG aggiornata all’ultimo minuto.

RFO06.2 Obbligatorio Per lanciare una produzione, l’operatore autenticato deve in alternativa poter selezionare un tessuto con giacenzaG aggiornata all’ultimo minuto e un modello associato.

RFO06.3 Obbligatorio Per lanciare una produzione, l’operatore autenticato deve poter selezionare un colore di produzione.

RFO06.4 Obbligatorio Per lanciare una produzione, l’operatore autenticato deve poter inserire manualmente la quantit`a.

RFO06.4.1 Obbligatorio Per inserire manualmente la quantit`a, l’operatore autenticato deve poter inserire una quantit`a per una taglia del modello.

RFO06.5 Obbligatorio Per lanciare una produzione, l’operatore autenticato deve poter inserire in automatico la quantit`a.

RFO06.5.1 Obbligatorio Per inserire in automatico la quantit`a, l’operatore autenticato deve poter inserire il totale.

RFO06.5.2 Obbligatorio Per inserire in automatico la quantit`a, l’operato- re autenticato deve poter selezionare una curva di ripartizione.

RFO06.6 Obbligatorio Se l’operatore autenticato non inserisce nessuna quan- tit`a, l’applicazione deve dare un messaggio di errore di quantit`a non specificata.

(34)

RFO06.7 Obbligatorio Se l’operatore autenticato inserisce una quantit`a mag- giore della giacenzaG del tessuto, l’applicazione deve dare un messaggio di errore di tessuto insufficiente per la quantit`a specificata.

RFF01 Facoltativo Un operatore autenticato deve poter modificare l’aspetto dell’interfaccia grafica.

RFF01.1 Facoltativo Un operatore autenticato deve poter aumentare la dimensione dei caratteri fino 200%.

RFF01.3 Facoltativo Un operatore autenticato deve poter selezionare un nuovo colore per lo sfondo dell’applicazione.

RFD01 Desiderabile Un operatore autenticato dovrebbe poter cambiare la lingua dell’applicazione.

RFD01.1 Desiderabile Un operatore autenticato dovrebbe poter cambiare la lingua dell’applicazione in inglese.

RFD02 Desiderabile Un operatore autenticato dovrebbe aver accesso so- lo ai modelli della collezione di cui `e autorizzato a consultare.

4.5.2 Requisiti di qualit`a

Tabella 6: Tabella dei requisiti di qualit`a Id Importanza Descrizione

RQO01 Obbligatorio L’interfaccia grafica deve essere veloce nel cambio finestra.

RQO02 Obbligatorio L’interfaccia grafica deve essere veloce nel caricamento di una lista di modelli.

RQO03 Obbligatorio L’interfaccia grafica deve essere veloce nel caricamento di una lista di tessuti.

RQO04 Obbligatorio L’interfaccia grafica deve essere intuitiva.

(35)

4.5.3 Requisiti di Vincolo

Tabella 7: Tabella dei requisiti di vincolo Id Importanza Descrizione

RVO01 Obbligatorio L’interfaccia grafica deve essere sviluppata con il framework QtQuick 2.x .

RVO02 Obbligatorio L’interfaccia grafica deve essere compatibile con schermi di risoluzione di almeno 1920x1080.

RVO03 Obbligatorio L’interfaccia grafica deve essere compatibile con dispositivi touch screen senza l’uso di mouse.

RVO04 Obbligatorio L’interfaccia grafica deve essere compatibile con dispositivi touch screen senza l’uso di tastiera.

RVO05 Obbligatorio L’interfaccia grafica deve essere compatibile con schermi di risoluzione di almeno 10 pollici.

RVO06 Obbligatorio Deve essere fornita una relazione del lavoro svolto.

RVO06.1 Obbligatorio La relazione deve riassumere il processo di sviluppo adottato.

RVO06.2 Obbligatorio La relazione deve riassumere i pregi e difetti di QtQuick.

RVF01 Obbligatorio Devono essere fornite alternative a QtQuick.

4.6 Riepilogo

Tabella 8: Totale dei requisiti

Tipo Obbligatori Desiderabili Facoltativi

Funzionale 65 5 6

Vincolo 8 0 2

Qualit`a 4 0 0

(36)

Capitolo 5

Studio delle tecnologie

Questo capitolo presenta brevemente le tecnologie richieste per lo sviluppo dell’applicazione, QtQuick e QML, e le alternative a quest’ultime.

5.1 QML

QML[6] (Qt Meta Language o Qt Modelling Language) `e un linguaggio dichiarativo che consente di descrivere le interfacce utente in termini di componenti visive e in che modo interagiscono e si relazionano tra loro. Offre una sintassi dichiarativa, molto leggibile, simile a JSON con supporto per espressioni JavaScript. Viene principalmente usato per lo sviluppo di applicazioni per dispositivi mobile: Ubuntu Touch, SailfishOS, Android, iOS, Windows Phone oltre che su Linux, Windows, OSX.

Un documento QML definisce una gerarchia di oggetti con un layout strutturato altamente leggibile, viene caricato ed eseguito dal runtime QML. I tipi e le funzionalit`a pi`u comuni alle interfacce utente sono forniti nell’importazione di QtQuick[8].

5.2 QtQuick

QtQuick[5] `e una tecnologia per interfacce grafiche utente che separa la progettazione dichiarativa dell’interfaccia dalla logica di businessG. Invece delle tradizionali APIG C++ di Qt, l’interfaccia grafica utente dell’applicazione `e scritta in QML, al quale QtQuick fornisce sia un’API[7] QML (tipi QML per la creazione di interfacce utente con il linguaggio QML), sia un’API[8] C++ per estendere applicazioniQMLcon codice C++.

Le applicazioni sviluppate con questa tecnologia seguono una progettazione top-down partendo da un design architetturale Model-View o Model–View–ViewModel[18].

Vantaggi

ˆ Applicazionecross-platformG, sia desktop che mobile, con un’interfaccia utente fluida e dinamica;

ˆ Componenti grafici non nativi, cio`e indipendenti dal sistema operativo. Ad esempio un bottoneQML non cambia la sua apparenza se `e visualizzato su un dispositivo Android piuttosto che su dispositivo ios;

ˆ Documentazione fornita molto ricca;

Svantaggi

ˆ Peggioramento delle performance di caricamento di una finestra composta di tanti elementi grafici personalizzati;

(37)

ˆ Il caricamento asincrono di componenti grafici si limita ad un sottoinsieme molto ristretto di tipi QML, e nel caso di un’esecuzione asincrona di una funzione Java- Script, i tipi dei parametri permessi sono: boolean, number, string, object, array e ListModel;

ˆ Alcuni servizi nativi non disponibili, ad esempio l’uso della fotocamera, del microfono ecc...;

ˆ Tecnologia ancora molto giovane, il primo rilascio `e avvenuto nel 2010 e il rilascio della versione stabile `e stato nel mese di giugno 2018. La community di sviluppatori che usano questa tecnologia `e quindi piccola, questo rende difficile ottenere un aiuto esterno in caso di difficolt`a;

5.3 Alternative tecnologiche cross-platform

Quando si vuole sviluppare un’applicazionecross-platformG, la prima scelta di linguaggio di programmazione che si fa `e Java. Negli ultimi 5 anni sono nate molte tecnologie open source o a pagamento, basate sul linguaggio di scripting ad oggetti ed eventi JavaScript, per lo sviluppo di applicazioni cross-platform. In modo da aiutare le aziende, che non riuscivano a permettersi diversi team per lo sviluppo di applicazioni cross-platform, ad usare un codice condiviso scritto con HTML, CSS e JavaScript. Alcune di queste tecnologie sono: NativeScript, Electron, Ionic Framework, React Native.

Vantaggi principali delle tecnologie JavaScript cross-platform:

ˆ Veloce da imparare per chi ha familiarit`a con le tecnologie web;

ˆ Sviluppo pi`u veloce delle applicazioni;

ˆ Interfacce grafiche pi`u belle con tanti effetti grafici;

ˆ Componenti grafici (pulsanti, input ecc..) nativi;

ˆ Alta affidabilt`a e robustezza delle applicazioni;

Svantaggi principali delle tecnologie JavaScript cross-platform:

ˆ Come QtQuick, alcune di queste tecnologie richiedono la scrittura di codice nativo per le dipendenze verso servizi nativi;

ˆ Problemi di sicurezza in quanto JavaScript `e conosciuto per questo suo difetto;

Esistono altre tecnologie basate su altri linguaggi di programmazione per lo sviluppo di applicazioni cross platform come Xamarin nel linguaggio C#, mentre Qt rimane il migliore per lo sviluppo di applicazioni cross-platform nel linguaggio C++.

(38)

Capitolo 6

Progettazione

In questo capitolo illustro le attivit`a di progettazione svolte (progettazione architettu- rale, progettazione di dettaglio e progettazione dell’interfaccia grafica), approfondite di diagrammi delle classi, diagrammi di sequenza, tabelle delle classi e librerie utilizzate.

6.1 Progettazione architetturale dell’applicativo

La fase di progettazione architetturale `e stata pi`u veloce del previsto in quanto ho deciso di usare l’architettura che era stata scelta in passato per sviluppare il primo prototipo del prodotto. Questa architettura non `e altro che un’istanza del design architetturale Model–View–ViewModel[18] (MVVM).

Figura 12: Architettura Model–View–ViewModel (MVVM) Il MVVM ha le seguenti qualit`a:

ˆ Netta separazione dei componenti architetturali, aumentando cos`ı la riusabilit`a, la modularit`a e la testabilit`a dell’applicazione;

ˆ Incapsulazione che aumenta la manutenibilit`a e l’estendibilit`a.

In QtQuick[5], l’architettura MVVM dell’applicazione `e progettata nel seguente modo:

ˆ Model: Namespace di classi C++ che rappresentano la logica di businessG dell’applicazione: il modello, il tessuto, una curva di ripartizione ecc...;

ˆ ViewModel: Namespace di classi C++ che estendono le classi QObject, QSort- FilterProxyModel e QAbstractItemModel. In questo namespace ho aggiunto il sottonamespace,ViewsSettings, di classi che hanno il compito di fornire alle views tutti i dati relativi alle impostazioni di stile e di layout;

ˆ View: Namespace di tipi classici QML e tipi QML personalizzati. Inoltre in questo ho aggiunto il sottonamespace, FFPViewsComponents, di tipi QML personalizzati usati frequentemente dalle views, ad esempio bottoni, labels ecc... .

(39)

Figura 13: Progettazione architettura dell’applicativo 6.2 Altre librerie usate

6.2.1 SortFilterProxyModel

Questa libreria `e stata suggerita dal tutor aziendale in quanto usata per sviluppare il primo prototipo dell’applicativo. Essa riduce i tempi di codifica offrendo una classe prefabbricata(SortFilterProxyModel[19]) che permette di filtrare una lista di oggetti generici, in base a diversi parametri. Ho usato questa libreria per implementare le funzionalit`a di ricerca.

6.2.2 Quick Promise

Quick Promise[20] `e una libreria che sfrutta il tipo Timer di QML per simulare l’oggetto Promise[21], tanto conosciuto dagli sviluppatori di applicazioni in JavaScript, per le chiamate asincrone in QtQuick, evitando cos`ı l’uso della programmazione concorrente che avrebbe allungato i tempi di sviluppo dovuto a tutti i problemi legati alla concorrenza tra thread.

6.3 Progettazione di dettaglio

Per avere una progettazione di dettaglio basata sul framework QtQuick, nei diagrammi delle classi sottostanti, ho usato le seguenti convenzioni:

ˆ Lo stereotipo <<invokable>> `e stato applicato ai metodi e funzioni statiche delle classi del namespace ViewModel, e significa che questa funzione pu`o essere invocata dalle views;

ˆ Lo stereotipo <<QMLTYPE>> `e stato applicato alle classi del namespace View, e significa che questa classe `e in realt`a un tipo QML personalizzato;

ˆ Gli stereotipi <<QPROPERTY>> e <<readonly>> sono stati applicati a campi dati di alcune classi ViewModel, e significano che questi campi dati sono utilizzabili dalle views tramite metodi get e set appropriati, e costanti se sono readonly;

(40)

6.3.1 Model

Figura 14: Diagramma delle classi Model 1/3

Tabella 9: Classi Model 1/3 Classe Descrizione

Servizi Questa classe `e un insieme di funzioni statiche per effetuare determinate chiamateRESTG.

LogProgram le istanze di questa classe permettono di registrare uno storico, detto anche log, dell’applicazione.

Shop classe che rappresenta un negozio di abbigliamento.

ShopLinea classe che rappresenta una linea di abbigliamento.

ShopStagione rappresenta una stagione di abbigliamento.

(41)

Figura 15: Diagramma delle classi Model 2/3

Tabella 10: Classi Model 2/3 Classe Descrizione

Articolo Rappresenta un articoloG.

Lancio Classe che rappresenta un lancio di produzione.

LancioDettaglio Classe di oggetti che sono dettagli di lanci di produzione.

Diba Rappresenta la distinta baseG di un articolo.

Colore Classe la cui istanza rappresenta il colore di un articolo.

Filtro Classe le cui istanze rappresentano clausole di una query.

(42)

Figura 16: Diagramma delle classi Model 3/3

Tabella 11: Classi Model 3/3 Classe Descrizione

SAIFFPLibrary Insieme di funzioni statiche per le connessioni al server.

Materiale Rappresenta un materiale in magazzino, necessario alla produzione di abbigliamenti.

Taglia Rappresenta una taglia di produzione di un abbigliamento.

Menu Classe delle funzionalit`a principali visualizzate in prima finestra.

ProdottoFinito Rappresenta un prodotto finito, e contiene informazioni sul modello e il tessuto principale.

(43)

6.3.2 ViewModel

Figura 17: Diagramma delle classi ViewModel 1/5

Tabella 12: Classi ViewModel 1/5 Classe Descrizione

Colori Il singleton di questa classse contiene i parametri statici, modificabili, sul colore di diversi componenti grafici.

Layout Il singleton di questa classe contiene i parametri, modificabili, del layout dell’applicativo.

(44)

Figura 18: Diagramma delle classi ViewModel 2/5

Tabella 13: Classi ViewModel 2/5 Classe Descrizione

Appoggio Questa classe rappresenta un middleware per le operazioni di login, logout, salva lancio e salva richiesta.

ElencoFiltri Tipo lista di oggetti di tipo Model::Filtro.

ListModello Generalizzazione di alcune classi del ViewModel che rappresentano una lista di oggetti.

SAIFFPGeneral Classe di costanti di operazioni permesse in una query al lato server.

(45)

Figura 19: Diagramma delle classi ViewModel 3/5

Tabella 14: Classi ViewModel 3/5 Classe Descrizione

CurveModel Lista di curve statistiche.

Curve Curva statistica sulle taglie, cio`e una statistica di utilizzo di determinate taglie.

TagliaCurve Classe che deriva da QObject. Rappresenta una taglia oggetto di una curva di statistica.

(46)

Figura 20: Diagramma delle classi ViewModel 4/5

Tabella 15: Classi ViewModel 4/5 Classe Descrizione

ColoreModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Colore.

DibaModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Diba.

LancioModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Lancio.

MenuModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Menu.

ArticoloModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Articolo.

MaterialeModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Materiale.

(47)

Figura 21: Diagramma delle classi ViewModel 5/5

Tabella 16: Classi ViewModel 5/5 Classe Descrizione

TagliaModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Taglia.

ProdottoFinitoModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::ProdottoFinito.

ShopModel Classe concreta che deriva da ListModello. Rappresenta una lista di oggetti Model::Shop.

(48)

6.3.3 View

Figura 22: Diagramma delle classi View 1/10

Tabella 17: Classi View 1/10 Classe Descrizione

FFPLancio Tipo QML personalizzato per visualizzare tutte le informazioni su un lancio.

FFPTaglia Tipo QML personalizzato per visualizzare tutte le informazioni su una taglia in fase di lancio produzione.

FFPColore Tipo QML personalizzato per visualizzare tutte le informazioni su un colore di unarticoloG.

(49)

Figura 23: Diagramma delle classi View 2/10

Tabella 18: Classi View 2/10 Classe Descrizione

FFMateriale Tipo QML personalizzato per visualizzare tutte le informazioni di un materiale.

FFPArticolo Tipo QML personalizzato per visualizzare tutte le informazioni di un articolo.

FFPModello Tipo QML personalizzato per visualizzare tutte le informazioni di un modello.

FFPDibaMat Tipo QML personalizzato per visualizzare tutte le informazioni di una distinta baseG.

(50)

Figura 24: Diagramma delle classi View 3/10

Tabella 19: Classi View 3/10 Classe Descrizione

FFPButton Tipo Button di QML personalizzato.

FFPCheckBox Tipo CheckBox di QML personalizzato.

FFPField Tipo TextField di QML personalizzato.

FFPRangeSlider Tipo RangeSlider di QML personalizzato.

FFPSwitch Tipo Switch di QML personalizzato.

FFPText Tipo Text di QML personalizzato.

FFPLabel Tipo Label di QML personalizzato.

FFPProgressBar Tipo ProgressBar di QML personalizzato.

FFPRadioButton Tipo RadioButton di QML personalizzato.

(51)

Figura 25: Diagramma delle classi View 4/10

Tabella 20: Classi View 4/10 Classe Descrizione

main Tipo QML punto di ingresso del programma

MainForm Tipo QML personalizzato che rappresenta il layout principale dell’applicazione, dove verranno visualizzati tutti gli elementi visivi. Si divide in intestazione(Banner) e Body(StackView).

Banner Tipo QML personalizzato che rappresenta l’intestazione fissa dell’applicazione.

StackView Tipo QML, rappresenta il body, e grazie a questo tipo `e saltare da una view all’altra in modo fluido e veloce.

FFPSuccessMessage Tipo Popup di QML personalizzato per visualizzare un messaggio di successo di un’operazione.

FFPErrorMessage Tipo Popup di QML personalizzato per visualizzare un messaggio di errore.

(52)

Figura 26: Diagramma delle classi View 5/10

Tabella 21: Classi View 5/10 Classe Descrizione

ArticoloFiltro Tipo QML personalizzato che rappresenta la finestra per la ricerca e la visualizzazione di articoli.

ArticoloSelez Tipo QML personalizzato per visualizzare informazioni su un articoloG selezionato.

Filtro Tipo QML personalizzato per visualizzare le opzioni di ricerca di un articolo.

(53)

Figura 27: Diagramma delle classi View 6/10

Tabella 22: Classi View 6/10 Classe Descrizione

Login Tipo QML personalizzato che rappresenta la finestra di login.

MenuPage Tipo QML personalizzato che rappresenta la finestra di selezione di una delle varie funzionalit`a principali dell’applicazione.

MenuShop Tipo QML personalizzato che rappresenta la finestra di selezione di un negozio di abbigliamento.

RiepilogoLanci Tipo QML personalizzato che rappresenta la finestra di visualizzazione dei lanci sospesi.

(54)

Figura 28: Diagramma delle classi View 7/10

Tabella 23: Classi View 7/10 Classe Descrizione

MaterialeFiltro Tipo QML personalizzato che rappresenta la finestra per la ricerca e la visualizzazione di materiali.

MaterialeSelez Tipo QML personalizzato per visualizzare informazioni su un materiale selezionato.

FiltroMat Tipo QML personalizzato per visualizzare le opzioni di ricerca di un materiale.

(55)

Figura 29: Diagramma delle classi View 8/10

Tabella 24: Classi View 8/10 Classe Descrizione

Setting Tipo QML personalizzato che rappresenta la finestra per l’impostazione dei colori e del layout dell’applicazione.

SettingColor Tipo QML personalizzato per l’impostazione di un colore.

SettingOpGrad Tipo QML personalizzato per l’impostazione dell’opacit`a e del gradiente.

(56)

Figura 30: Diagramma delle classi View 9/10

Tabella 25: Classi View 9/10 Classe Descrizione

Lancio Tipo QML personalizzato che rappresenta la finestra per lanciare delle produzioni.

LancioTag Tipo QML personalizzato per l’inserimento dei dati per un lancio di produzione.

LancioSel Tipo QML personalizzato per visualizzare le informazioni sull’articoloG selezionato per il lancio produzione.

Curves Tipo QML personalizzato per visualizzare le varie curve di inserimento.

(57)

TagliaQty Tipo QML personalizzato per l’inserimento e la visualizzazione della quantit`a di produzione di una taglia.

TotaleField Tipo QML personalizzato per l’inserimento e la visualizzazione del totale di articoli da produrre.

Figura 31: Diagramma delle classi View 10/10

Tabella 26: Classi View 10/10 Classe Descrizione

SostituzioneMat Tipo QML personalizzato che rappresenta la finestra per sostituire il materiale di un articolo

(58)

6.3.4 Design patterns Template Method

Nel diagramma delle classi inFigura 18, la classe ListModello `e stata progettata secondo il design pattern Template Method. I suoi metodi template sono fillList, getPath e size, hanno un comportamento che cambia a seconda della sottoclasse concreta. I metodi getPath e fillList vengono usati dentro al metodo createModel per rispettivamente ottenere il nome del servizio per effettuare una richesta al server, e successivamente creare la lista a partire dai dati ricevuti. La codifica del metodo createModel si presenterebbe quindi nel seguente modo:

b o o l L i s t M o d e l l o :: c r e a t e M o d e l (c o n s t Q S t r i n g & token , E l e n c o F i l t r i * f ) { /* P r e p a r o la v a r i a b i l e j s o n _ i n p u t */

Q J s o n O b j e c t j s o n _ o u t p u t ;

// c h i a m a t a p o l i m o r f a su g e t P a t h ()

b o o l r i s u l t a t o = S e r v i z i :: e f f e t t u a R i c h i e s t a ( g e t P a t h () , j s o n _ i n p u t ,

& j s o n _ o u t p u t );

/* S v o l g o d i v e r s e o p e r a z i o n i di c o n t r o l l o di e s i t o p o s i t i v o */

r e t u r n f i l l L i s t ( j s o n _ o u t p u t );// c h i a m a t a p o l i m o r f a }

Il metodo size restituisce la size della lista sottoclasse.

Observer

Nel diagramma delle classi inFigura 30, i tipi QML LancioTag, TotaleField, TagliaQty, Curves e FFPTaglia, sono stati progettati seguendo il pattern Observer. LancioTag osserva Curves, TotaleField e TagliaQty, mentre Curves osserva FFPTaglia. Pi`u precisa- mente TotaleField e TagliaQty notificano a LancioTag un cambiamento di valore ogni volta che l’utente inserisce un nuovo valore, FFPTaglia notifica Curves che l’utente ha scelto la sua curva, e Curves notifica questo cambiamento a LancioTag. In questo modo LancioTag riesce ad aggiornare i valori del modello in tempo reale per un salvataggio e una visualizzazione veloce dei dati del lancio. Sempre guardando laFigura 30, si nota che esiste delle associazioni cicliche a causa dei tipi astratti che non esistono nel linguaggio QML, ma non `e un problema in quanto la creazione degli oggetti `e sequenziale e i campi dati vengono inizializzati per dependency injection.

6.3.5 Diagrammi di sequenza

In questa sezione vengono mostrati alcuni diagrammi di sequenza per una maggiore comprensione delle interazioni tra gli oggetti.

Riferimenti

Documenti correlati

- Applicare procedure per la preparazione di paste di carta e cartone - Effettuare la manutenzione dei macchinari per la produzione della carta - Utilizzare attrezzature per

2 - Aggiornamento sulle caratteristiche dei mercati e degli incentivi degli impianti FER 3 - Attività pratica: esercitazioni sulle tecnologie FER - Biomasse per usi energetici..

Nel caso di violazione dell’obbligo di denuncia da parte del semplice cittadino per i delitti contro la personalità dello Stato puniti con l’ergastolo, la pena è la reclusione fino

Conoscenza Superiore dei Metalli: il personaggio conosce alla perfezione le proprietà dei metalli e potrà quindi utilizzare gli effetti segreti contenuti in ogni tipo di

Rendita per orfani: 20% dell’AI/RV (anche per bambini in affidamento) (fino a 18/25 max. o in caso di invalidità del bambino almeno del 70%) Indennità unica pari a tre rendite annue

In caso esito irregolare dell’attività di analisi e controllo, è prevista altresì l’inibizione dalla facoltà di inviare nuove dichiarazioni d’intento tramite i canali

Infine la mancata attribuzione di punteggi per il criterio 13 del disciplinare di gara, la Commissione ha assegnato i 3 punti aggiuntivi solo al quinto requisito migliorativo

292 del 7 ottobre 2020, pubblicata in pari data sulla piattaforma telematica di negoziazione ove si svolge la procedura e comunicata alla ricorrente con nota dell'8 ottobre 2020,