Università degli Studi di Padova
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Università degli Studi di Padova Dipartimento di Matematica "Tullio Levi-Civita" Corso di Laurea in Informatica Studio e implementazione del front-end di un’applicazione web mediante il framework Angular Tesi di laurea triennale Relatore Prof. Lamberto Ballan Laureanda Bianca Andreea Ciuche 1122193 Anno Accademico 2018-2019
Bianca Andreea Ciuche: Studio e implementazione del front-end di un’applicazione web mediante il framework Angular, Tesi di laurea triennale, c 26 Settembre 2019.
Sommario Il presente documento ha lo scopo di riassumere il lavoro svolto durante il periodo di stage accademico della laureanda Ciuche Bianca Andreea presso l’azienda Sync Lab s.r.l. nel periodo tra il 27 maggio 2019 e 19 luglio 2019 della durata di circa 320 ore. L’obiettivo dello stage è sviluppare un front-end attraverso l’utilizzo del framework Angular per un’applicazione web riguardante scheduler per la ricerca di annunci lavorativi. Durante i due mesi di tirocinio, in primo luogo c’è stato l’apprendimento delle tecnologie necessarie per poter iniziare l’implementazione del progetto con approfondimenti sul framework Angular, in secondo luogo si è svolto lo sviluppo del front-end. v
Ringraziamenti Innanzitutto, vorrei esprimere la mia gratitudine al Prof. Lamberto Ballan, relatore della mia tesi, per l’aiuto e il sostegno fornitomi durante la stesura del lavoro. Desidero ringraziare con profondo affetto la mia famiglia per aver creduto in me, per il grande supporto e per essermi stata vicina in ogni momento durante gli anni di studio. Infine ringrazio tutti i miei amici: quelli di quartiere, dell’infanzia, del liceo e dell’uni- versità. Padova, 26 Settembre 2019 Bianca Andreea Ciuche vii
Indice 1 Introduzione 1 1.1 Convenzioni tipografiche . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 L’azienda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2.1 Profilo aziendale . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2.2 Servizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.3 Settori d’impiego . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 Descrizione dello stage 3 2.1 Il progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Lo stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Pianificazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4.1 Pianificazione delle settimane . . . . . . . . . . . . . . . . . . 5 2.4.2 Pianificazione delle ore . . . . . . . . . . . . . . . . . . . . . . . 6 3 Analisi dei requisiti 7 3.1 Casi d’uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 UC0: Scenario iniziale . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 UC1: Configurazione scheduler . . . . . . . . . . . . . . . . . . . . . . 9 3.4 UC2:Visualizzazione risultati scheduler . . . . . . . . . . . . . . . . . . 13 3.5 Tracciamento dei requisiti . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.6 Requisiti Funzionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.7 Requisiti di Vincolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.8 Requisiti di Qualità . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4 Tecnologie e strumenti utilizzati 21 4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 Ambiente di sviluppo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2.1 Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3 Strumenti di versionamento . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 Linguaggi e framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.4.1 Il framework Angular . . . . . . . . . . . . . . . . . . . . . . . 23 4.4.2 Panoramica dell’architettura Angular . . . . . . . . . . . . . . 24 4.4.3 Alternative ad Angular . . . . . . . . . . . . . . . . . . . . . . 27 4.4.4 Typescript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.4.5 Npm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4.6 JSON Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4.7 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 ix
x INDICE 5 Progettazione 31 5.1 Struttura delle classi di Sync Lav . . . . . . . . . . . . . . . . . . . . . 31 5.2 User Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2.1 Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.4 Approfondimenti user experience e user interface . . . . . . . . . . . . 35 6 Conclusioni 37 6.1 Consuntivo finale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2 Raggiungimento degli obiettivi . . . . . . . . . . . . . . . . . . . . . . 37 6.3 Conoscenze acquisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.4 Valutazione personale . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Glossary 39 Acronyms 41 Bibliografia 43
Elenco delle figure 1.1 Logo Sync Lab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3.1 Scenario principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 UC1 configurazione scheduler . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Visualizzazione risultati scheduler . . . . . . . . . . . . . . . . . . . . . 13 4.1 Logo Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 Logo Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3 Logo Angular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.4 Architettura ad alto livello di Angular . . . . . . . . . . . . . . . . . . 24 4.5 AppModule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.6 AppComponent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.7 Esempio del meccanismo two-way data binding . . . . . . . . . . . . . 26 4.8 Logo TypeScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.9 Logo Npm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.10 Logo Json Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.11 Logo Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1 Diagramma delle classi . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.2 User Experience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.3 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.4 Storytelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.5 Heat Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Elenco delle tabelle 3.1 Requisiti Funzionali . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 xi
xii ELENCO DELLE TABELLE 3.2 Requisiti di Vincolo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.3 Requisiti di Qualità . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Capitolo 1 Introduzione Questo capitolo consiste in una presentazione dell’azienda ospitente, Synclab, e in una descrizione di alcune norme tipografiche usate per la stesura del documento. 1.1 Convenzioni tipografiche Riguardo la stesura del testo, relativamente al documento sono state adottate le seguenti convenzioni tipografiche: ∗ Gli acronimi, le abbreviazioni e i termini ambigui o di uso non comune menzionati vengono definiti nel glossario, situato alla fine del presente documento; ∗ I termini in lingua straniera o facenti parti del gergo tecnico sono evidenziati con il carattere corsivo. 1.2 L’azienda Figura 1.1: Logo Sync Lab 1.2.1 Profilo aziendale Sync Lab s.r.l. è una società di consulenza informatica fondata nel 2002 con sedi a Napoli, Roma, Milano e Padova. Fin dai primi anni Sync Lab è rapidamente cresciuta nel mercato Information and Communication Technology (ICT), consolidando i rapporti con clienti e partner, raggiungendo un organico aziendale di oltre 200 risorse, una solida base finanziaria e una diffusione sul territorio attraverso le sue quattro sedi. L’organico aziendale è andato crescendo in modo continuo e rapido, in relazione all’apertura delle 1
2 CAPITOLO 1. INTRODUZIONE varie sedi ed alla progressiva crescita delle stesse. La grande attenzione alla gestione delle risorse umane ha fatto di Sync Lab un riferimento in positivo per quanti volessero avviare o far evolvere in chiave professionale la propria carriera. Il basso turn-over testimonia la voglia dei collaboratori di condividere il progetto comune, assumendo all’interno di esso ruoli e responsabilità che solo un processo evolutivo così intenso può offrire. I ricavi hanno avuto un incremento proporzionale alla crescita dell’azienda beneficiando dell’approccio adattativo e diversificato al mercato. 1.2.2 Servizi Sync Lab s.r.l. è un’azienda leader nella consulenza tecnologica, impegnata in un processo continuo d’identificazione e messa in opera di soluzioni per i clienti finalizzate alla creazione di valore. L’azienda supporta le esigenze d’innovazione di tutte le organizzazioni ed in ogni settore di mercato nell’ambito Information Technology (IT), con servizi in ambito ∗ Business Consultancy; ∗ Project Financing; ∗ IT Consultancy; Sync Lab ha come punti di forza la qualità dei servizi offerti (certificazioni ISO 9001, ISO 14001, ISO 27001, OHSAS 18001) ed un’accurata gestione delle risorse umane. L’approfondita conoscenza di processi e tecnologie, maturata in esperienze altamente significative e qualificanti, fornisce l’expertise e il know-how necessari per gestire progetti di elevata complessità, dominando l’intero ciclo di vita: Studio di fattibilità, Progettazione, Implementazione, Governance e Post Delivery. L’offerta di consulenza specialistica trova le punte di eccellenza nella progettazione di architetture software avanzate, siano esse per applicativi di dominio, per sistemi di Sistema di supporti al business (BSS), per sistemi d’integrazione (EAI/SOA) o per sistemi di monitoraggio applicativo/territoriale. Il laboratorio RD (Ricerca e Sviluppo) dell’azienda è sempre al passo con i nuovi paradigmi tecnologici e di comunicazione, ad esempio Big Data, Cloud Computing, Internet of Things (IoT), Mobile e Sicurezza IT, per supportare i propri clienti nella creazione ed integrazione di applicazioni, processi e dispositivi. Le attività in ambito Educational ed RD hanno permesso di acquisire una profonda conoscenza degli strumenti di finanza agevolata fruendone direttamente e interagendo con enti di supporto ai progetti innovativi dei propri clienti. L’azienda, grazie alla rete di relazioni a livello nazionale ed internazionale, ha ottenuto importanti finanziamenti in progetti RD europei (FP7 e H2020). 1.2.3 Settori d’impiego Sync Lab si sta sempre più specializzando in vari settori d’impiego: dal mondo banking all’assurance con una nicchia importante nell’ambito sanità in cui vanta un prodotto d’eccellenza per la gestione delle cliniche private. L’azienda inoltre ha recentemente fondato una collegata Sync Security che si occupa espressamente del mondo della cyber security e sicurezza informatica in generale.
Capitolo 2 Descrizione dello stage Questo capitolo presenta la descrizione del progetto di stage e la stesura del piano di lavoro stipulato assieme al relatore aziendale e revisionato dal relatore interno. 2.1 Il progetto Il progetto di stage, denominato Sync Lav, consiste nell’implementazione di un’applicazione web, la quale si occupa della gestione di scheduler per la ricerca di annunci lavorativi. Attraverso l’applicazione è possibile configurare, in base alle proprie necessità e prefe- renze, uno scheduler personalizzato e visualizzarne i risultati in una tabella, dove sono specificati il nome dell’annuncio, la data di pubblicazione, l’azienda proponente, il link della pagina d’origine dell’annuncio ed un testo di descrizione dell’annuncio. All’in- terno del progetto l’obiettivo della stagista è sviluppare il front-end dell’applicazione mediante il framework Angular, la parte di back-end è assegnata ad un altro membro del progetto. In alcune fasi del progetto c’è la collaborazione tra i membri del gruppo per far sì che le due parti, front-end e back-end, possano integrarsi senza problemi. 2.2 Lo stage Lo stage si è svolto nella sede di Padova dell’azienda ospitante, Sync Lab, nell’arco delle otte settimane previste nel piano di lavoro. Nella prima parte dello stage è richiesto alla tirocinante di apprendere le tecnologie necessarie per poter affrontare le fasi di analisi, progettazione e implementazione del progetto. Le tematiche da acquisire sono le seguenti: ∗ Angular; ∗ JavaScript; ∗ TypeScript; ∗ Architettura MVVM/MVC; ∗ Studio di alcuni concetti relativi le tematiche di User/Customer Experience e User Interface tra cui: – Storytelling; 3
4 CAPITOLO 2. DESCRIZIONE DELLO STAGE – User Centered Design, User Journey, Empathy Map; – User Flow ; – Analisi dei competitor e delle Persone; – Mouse Tracking; – Heat Map; – Click Map; – Responsive Web Design e Adaptive Web Design. La seconda parte dello stage consiste nello sviluppo effettivo della parte di front-end per il progetto SyncLav, quindi nella sua progettazione e implementazione. 2.3 Obiettivi Al termine del tirocinio la stagista dovrà aver prodotto un front-end tramite il framework Angular, cercando di applicare i principi di User experience dove possibile. Notazione Si farà riferimento ai requisiti secondo le seguenti notazioni: ∗ O per i requisiti obbligatori, vincolanti in quanto obiettivo primario richiesto dal committente; ∗ D per i requisiti desiderabili, non vincolanti o strettamente necessari, ma dal riconoscibile valore aggiunto; ∗ F per i requisiti facoltativi, rappresentanti valore aggiunto non strettamente competitivo. Le sigle precedentemente indicate saranno seguite da una coppia sequenziale di numeri, identificativo del requisito. Obiettivi fissati Il progetto si è posto come obiettivo l’adempimento dei seguenti requisiti: ∗ Requisiti obbligatori: – O01: Acquisizione competenze previste dal programma; – O02: Capacità di raggiungere gli obiettivi richiesti in autonomia seguendo il crono programma; – O03: Portare a termine le modifiche richieste con una percentuale di superamento degli item di collaudo pari al 50%; ∗ Requisiti desiderabili: – D01: Portare a temine le modifiche richieste dal cliente con una percentuale di superamento degli item pari all’80%; ∗ Requisiti facoltativi: – F01: Acquisizione competenze sulla libreria Hot-jar ed eventuale utilizzo;
2.4. PIANIFICAZIONE 5 2.4 Pianificazione In questa sezione viene mostrata la pianificazione delle settimane e delle ore, per ogni attività concordata con il relatore aziendale e il relatore interno. 2.4.1 Pianificazione delle settimane ∗ Prima Settima – Presentazione strumenti di lavoro per la condivisione del materiale di studio e per la gestione dell’avanzamento del percorso(Slack, Trello, ecc.); – Condivisione scaletta di argomenti; – Veloce panoramica su metodologie Agile/Scrum; ∗ Seconda Settima – Studio di JavaScript e TypeScript; ∗ Terza Settima – Studio teoretico dell’Architettura MVVM e di Angular; ∗ Quarta Settima – Studio di alcuni concetti relativi di User/Customer Experience e User Interface tra cui: ∗ Storytelling; ∗ User Center Design, User Journey, Empathy Map; ∗ User Flow ; ∗ Analisi dei competitor e delle Persone; ∗ Mouse Tracking; ∗ Heat Map; ∗ Responsive Web Design e Adaptive Web Design; ∗ Quinta, Sesta e Settima – Implementazione front-end tramite il framework Angular del progetto Sync Lav; ∗ Ottava Settima – Conclusione implemetazione front-end del progetto Sync Lav, collaudo e installazione in esercizio;
6 CAPITOLO 2. DESCRIZIONE DELLO STAGE 2.4.2 Pianificazione delle ore Durata in ore Descrizione dell’attività 40 Formazione sulle tecnologie 38 Studio di JavaScript/TypeScript 38 Studio teorico dell’Architettura MVVM Angular e di Angular 38 Studio delle tematiche relative all’ User/Customer Experience e User Interface 110 Implementazione Font-End del progetto "SinglePageA- pllication" 12 Analisi del problema e del dominio applicativo 10 Applicazione dei concetti User/Customer Experience e User Interface 38 Collaudo Finale 30 Collaudo 5 Stesura documentazione finale 3 Consegna codice Totale ore 302
Capitolo 3 Analisi dei requisiti Il presente capitolo ha come scopo la descrizione completa e precisa di tutti i casi d’uso riguardanti il progetto Sync Lav. Tali informazioni sono state estrapolate dai colloqui con il relatore aziendale. 3.1 Casi d’uso Per lo studio dei casi d’utilizzo del prodotto sono stati creati dei diagrammi. I diagrammi dei casi d’uso (in inglese Use Case Diagram) sono diagrammi di tipo UML, dedicati alla descrizione delle funzioni o servizi offerti da un sistema, così come sono percepiti e utilizzati dagli attori che interagiscono con il sistema stesso. L’attore per tutti i casi d’uso è sempre l’utente generale. 7
8 CAPITOLO 3. ANALISI DEI REQUISITI 3.2 UC0: Scenario iniziale Figura 3.1: Scenario principale ∗ Attori: Utente generale; ∗ Descrizione: Attraverso la pagina iniziale l’utente generale può accedere alla pagina di configurazione scheduler oppure alla pagina di visualizzazione dei risultati scheduler cliccando i rispettivi pulsanti; ∗ Precondizione: L’utente si trova nella pagina iniziale dell’applicazione; ∗ Postcondizione:L’utente visualizza la pagina rispettiva al pulsante cliccato; ∗ Scenario principale: 1. Configurazione scheduler (UC1); 2. Visualizza risultati scheduler (UC2);
3.3. UC1: CONFIGURAZIONE SCHEDULER 9 3.3 UC1: Configurazione scheduler Figura 3.2: UC1 configurazione scheduler ∗ Attori: Utente generale; ∗ Descrizione: L’utente generale può impostare una nuova configurazione dello scheduler di ricerca oppure visualizzare l’ultima configurazione dello scheduler impostata. ∗ Precondizione: L’utente si trova nella pagina di configurazione dello scheduler. ∗ Postcondizione: L’applicazione ha ricevuto le informazioni dall’utente in base all’operazione che vuole eseguire. ∗ Scenario principale: 1. Inserimento chiave (UC1.1); 2. Inserimento città (UC1.3);
10 CAPITOLO 3. ANALISI DEI REQUISITI 3. Inserimento regione(UC1.5); 4. Inserimento orario (UC1.7); 5. Selezione data di inizio scheduler(UC1.9); 6. Selezione ripetibilità(UC1.11); 7. Salvataggio configurazione(UC1.12); 8. Tornare indietro(UC1.14); 9. Visualizzazione ultima configurazione(UC1.15); UC1.1: Inserimento chiave ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la chiave. ∗ Precondizione: Il campo form riguardante la chiave è pronto per la configura- zione. ∗ Postcondizione: L’utente ha inserito la chiave. ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della chiave; 2. L’utente inserisce il valore desiderato nel campo form della chiave; ∗ Estensioni: 1. UC1.2 Visualizzazione messaggio d’errore; UC1.3: Inserimento città ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la chiave. ∗ Precondizione:Il campo form riguardante la città è pronto per la configurazione. ∗ Postcondizione: L’utente ha inserito la città. ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della città; 2. L’utente inserisce il valore desiderato nel campo form della città; ∗ Estensioni: 1. UC1.4 Visualizzazione messaggio d’errore;
3.3. UC1: CONFIGURAZIONE SCHEDULER 11 UC1.5: Inserimento regione ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la regione. ∗ Precondizione: Il campo form riguardante la regione è pronto per la configura- zione. ∗ Postcondizione: L’utente ha inserito la regione. ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della regione; 2. L’utente inserisce il valore desiderato nel campo form della regione; ∗ Estensioni: 1. UC1.6 Visualizzazione messaggio d’errore; UC1.7: Inserimento orario ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire l’ora. ∗ Precondizione: Il campo form riguardante l’ora è pronto per la configurazione. ∗ Postcondizione: L’utente ha inserito l’ora. ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento dell’ora; 2. L’utente inserisce il valore desiderato nel campo form dell’ora; ∗ Estensioni: 1. UC1.8 Visualizzazione messaggio d’errore; UC1.9:Selezione data di inizio scheduler ∗ Attori: Utente generale; ∗ Descrizione: L’utente generale può inserire la data. ∗ Precondizione: Il campo form riguardante la data è pronto per la configurazio- ne. ∗ Postcondizione: L’utente ha inserito la data. ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della data; 2. L’utente inserisce il valore desiderato nel campo form della data; ∗ Estensioni: 1. UC1.10 Visualizzazione messaggio d’errore;
12 CAPITOLO 3. ANALISI DEI REQUISITI UC1.11: Selezione ripetibilità ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può selezionare la ripetibilità desiderata. ∗ Precondizione: il campo form riguardante la ripetibilità è pronto per la configurazione. ∗ Postcondizione: L’utente ha selezionato la ripetibilità. UC1.12: Salva configurazione ∗ Attori: Utente generale; ∗ Descrizione: Il sistema deve salvare la configurazione dello scheduler ricevuta. ∗ Precondizione: L’utente è nella pagina di configurazione scheduler e vuole salvare la configurazione inserita. ∗ Postcondizione: Il sistema ha salvato con successo la configurazione inserita. ∗ Estensioni: 1. UC1.12 Visualizzazione messaggio d’errore; UC1.14: Tornare indietro ∗ Attori: Utente generale; ∗ Descrizione:L’utente attraverso il rispettivo pulsante torna alla pagina iniziale. ∗ Precondizione: L’applicazione è pronta per tornare alla pagina iniziale. ∗ Postcondizione: L’utente generale si trova nella pagina iniziale. UC1.15: Visualizzazione ultima configurazione ∗ Attori: Utente generale; ∗ Descrizione: L’applicazione deve mostrare l’ultima configurazione impostata dall’utente. ∗ Precondizione: L’utente ha già configurato almeno una volta lo scheduler. ∗ Postcondizione: L’utente visualizza l’ultima configurazione.
3.4. UC2:VISUALIZZAZIONE RISULTATI SCHEDULER 13 3.4 UC2:Visualizzazione risultati scheduler Figura 3.3: Visualizzazione risultati scheduler ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale imposta i filtri per la ricerca dello scheduler e ne visualizza i risultati in tabella. ∗ Postcondizione: L’applicazione ha ricevuto tutte le informazione e mostra in tabella i risultati dello scheduler. ∗ Scenario principale: 1. Inserimento chiave (UC2.1); 2. Inserimento città (UC2.3); 3. Inserimento data di inizio(UC2.5); 4. Inserimento data di fine (UC2.7); 5. Visualizzazione risultati in tabella (UC2.9); 6. Tornare indietro(UC2.10); UC2.1: Inserimento chiave ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la chiave nella sezione riguardante i filtri:
14 CAPITOLO 3. ANALISI DEI REQUISITI ∗ Precondizione:Il campo form riguardante la chiave è pronto per la configura- zione. ∗ Postcondizione: L’utente ha inserito la chiave nella sezione riguardante i filtri. ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della chiave; 2. L’utente inserisce il valore desiderato nel campo form della chiave; ∗ Estensioni: 1. UC2.2 Visualizzazione messaggio d’errore; UC2.3: Inserimento città ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la città nella sezione riguardante i filtri; ∗ Precondizione:Il campo form riguardante la città è pronto per la configurazione. ∗ Postcondizione: L’utente ha inserito la città nella sezione riguardante i filtri; ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della città; 2. L’utente inserisce il valore desiderato nel campo form della città; ∗ Estensioni: 1. UC2.4 Visualizzazione messaggio d’errore; UC2.5: Inserimento data inizio ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la data di inizio nella sezione riguar- dante i filtri; ∗ Precondizione: Il campo form riguardante la data è pronto per la configurazio- ne. ∗ Postcondizione: L’utente ha inserito la data di inizio nella sezione riguardante i filtri; ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della data di inizio; 2. L’utente inserisce il valore desiderato nel campo form della data; ∗ Estensioni: 1. UC2.6 Visualizzazione messaggio d’errore;
3.4. UC2:VISUALIZZAZIONE RISULTATI SCHEDULER 15 UC2.7: Inserimento data fine ∗ Attori: Utente generale; ∗ Descrizione:L’utente generale può inserire la data di fine nella sezione riguar- dante i filtri; ∗ Precondizione: Il campo form riguardante la data è pronto per la configurazio- ne. ∗ Postcondizione: L’utente ha inserito la data di fine nella sezione riguardante i filtri; ∗ Scenario principale: 1. L’utente ha selezionato il form per l’inserimento della data; 2. L’utente inserisce il valore desiderato nel campo form della data; ∗ Estensioni: 1. UC1.10 Visualizzazione messaggio d’errore; UC2.9: Visualizzazione risultati in tabella ∗ Attori: Utente generale; ∗ Descrizione:il sistema mostra i risultati in base ai filtri impostati dall’utente. ∗ Precondizione: Il sistema è pronto per mostrare i risultati in tabella. ∗ Postcondizione: L’utente visualizza i risultati in base ai filtri inseriti. ∗ Scenario principale: 1. Visualizzazione annuncio in tabella(UC2.9.1); UC2.10: Tornare indietro ∗ Attori: Utente generale; ∗ Descrizione: L’utente attraverso il rispettivo pulsante torna alla pagina iniziale. ∗ Precondizione: L’applicazione è pronta per tornare alla pagina iniziale. ∗ Postcondizione: L’utente generale si trova nella pagina iniziale. UC2.9.1: Visualizzazione annuncio in tabella ∗ Attori: Utente generale; ∗ Descrizione: L’utente visualizza le informazione riguardanti l’annuncio d’inte- resse. ∗ Precondizione: Il sistema è pronto per mostrare le informazioni.
16 CAPITOLO 3. ANALISI DEI REQUISITI ∗ Postcondizione: L’utente ha visualizzato le informazioni d’interesse. ∗ Scenario principale: 1. L’utente visualizza la data di pubblicazione dell’annuncio; 2. L’utente visualizza il titolo dell’annuncio; 3. L’utente visualizza il luogo di lavoro riguardante l’annuncio; 4. L’utente visualizza il testo riguardante l’annuncio; 5. L’utente visualizza il sito web riguardante l’annuncio; 3.5 Tracciamento dei requisiti In seguito ad un’attenta analisi dei requisiti e degli use case effettuata sul progetto con il supporto del tutor aziendale, è stata stilata la tabella che traccia i requisiti in rapporto agli use case. Per poterli distinguere in modo preciso è stata usata la seguente nomenclatura n on on on o R A B XX . YY dove: ∗ A: corrisponde a uno dei seguenti requisiti: – F: funzionale; – Q: di qualità; – P: di prestazione; – V: di vincolo. ∗ B: corrisponde a uno dei seguenti requisiti: – O: obbligatorio; – F: facoltativo; – D: desiderabile. ∗ XX: numero che identifica i requisiti; ∗ YY: numero progressivo che identifica i sottocasi, esso può, a sua volta, includere altri sottocasi. Nelle tabelle dei requisiti funzionali, di vincolo e di qualità, sono riassunti i requisiti e il loro tracciamento con gli use case delineati in fase di analisi.
3.6. REQUISITI FUNZIONALI 17 3.6 Requisiti Funzionali Id Descrizione Use Case Requisito L’applicazione deve permettere all’utente generale di poter RFO1 UC0 accedere alla pagina iniziale L’applicazione deve permettere all’utente generale di poter RFO2 UC0 accedere alla pagina di configurazione dello scheduler L’applicazione deve permettere all’utente generale di RFO3 UC1 configurare lo scheduler L’applicazione deve permettere all’utente generale di RFO4 UC1.1 inserire la chiave per la configurazione dello scheduler Il sistema deve permettere all’utente generale di inserire RFO5 UC1.3 la città per la configurazione dello scheduler Il sistema deve permettere all’utente generale di inserire RFO6 UC1.5 la regione per la configurazione dello scheduler L’applicazione deve permettere all’utente generale di RFO7 UC1.7 configurare l’ora per la configurazione dello scheduler L’applicazione deve permettere all’utente generale di RFO8 UC1.9 selezionare la data per la configurazione dello scheduler L’applicazione deve permettere all’utente generale di se- RFO9 lezionare la ripetibilità dello scheduler in base alla data UC1.11 impostata L’applicazione deve permettere all’utente generale di RFO10 UC1.12 salvare la configurazione dello scheduler L’applicazione deve permettere all’utente generale di RFO11 UC1.14 tornare alla pagina iniziale L’applicazione deve mostrare all’utente l’ultima configura- RFF12 UC.15 zione impostata, se esistente L’utente deve visualizzare i messaggi degli errori che si UC1.2 UC1.4 UC1.6 RFD13 verificano durante la compilazione della configurazione UC1.8 UC1.10 UC1.13 dello scheduler L’applicazione deve permettere all’utente generale di vi- RFO14 sualizzare i risultati della configurazione dello scheduler in UC2 una tabella L’applicazione deve permettere all’utente generale di RFO15 UC2 inserire i filtri per la visualizzazione dei risultati in tabella L’applicazione deve permettere all’utente generale di RFO16 inserire la chiave nella sezione filtri della pagina di UC2.1 visualizzazione dei risultati L’applicazione deve permettere all’utente generale di inseri- RFO17 re la città nella sezione filtri della pagina di visualizzazione UC2.3 dei risultati L’applicazione deve permettere all’utente generale di in- RFO18 serire la data di inizio nella sezione filtri della pagina di UC2.5 visualizzazione dei risultati
18 CAPITOLO 3. ANALISI DEI REQUISITI Id Descrizione Use Case Requisito L’applicazione deve permettere all’utente generale di in- RFO19 serire la data di fine nella sezione filtri della pagina di UC2.7 visualizzazione dei risultati L’applicazione deve permettere all’utente generale, nella RFO20 pagina di visualizzazione dei risultati dello scheduler, di UC2.9 visualizzare i risultati in una tabella L’applicazione deve permettere all’utente generale, nella RFO21 pagina di visualizzazione dei risultati dello scheduler, di UC2.9.1 visualizzare il titolo dell’annuncio L’applicazione deve permettere all’utente generale, nella RFO22 pagina di visualizzazione dei risultati dello scheduler, di UC2.9.1 visualizzare la data di pubblicazione dell’annuncio L’applicazione deve permettere all’utente generale, nella RFO23 pagina di visualizzazione dei risultati dello scheduler, di UC2.9.1 visualizzare il luogo di lavoro L’applicazione deve permettere all’utente generale, nella RFO24 pagina di visualizzazione dei risultati dello scheduler, di UC2.9.1 visualizzare l’azienda che ha proposto l’annuncio di lavoro L’applicazione deve permettere all’utente generale, nella RFO25 pagina di visualizzazione dei risultati dello scheduler, di UC2.9.1 visualizzare il sito web riguardante l’annuncio di lavoro L’applicazione deve permettere all’utente generale, nella RFO26 pagina di visualizzazione dei risultati dello schedule,r di UC2.9.1 visualizzare il testo che riassume l’annuncio di lavoro L’applicazione deve permettere all’utente generale, nella pagina di visualizzazione dei risultati dello scheduler, di vi- UC2.2 UC2.4 UC2.6 RFD27 sualizzare gli eventuali errori commessi nella compilazione UC2.8 dei form nella sezione dei filtri Tabella 3.1: Requisiti Funzionali
3.7. REQUISITI DI VINCOLO 19 3.7 Requisiti di Vincolo Id Descrizione Requisito L’applicazione deve essere sviluppata utilizzando il RVO1 framework Angular RVO2 L’applicazione va testata tramite Json-server L’applicazione va sviluppata utilizzando la libreria RVF3 Bootstrap RVF4 L’editor di riferimento è Visual Studio Code L’applicazione deve essere sviluppata utilizzando il RVO5 linguaggio di programmazione TypeScript Tabella 3.2: Requisiti di Vincolo
20 CAPITOLO 3. ANALISI DEI REQUISITI 3.8 Requisiti di Qualità Id Descrizione Requisito L’interfaccia grafica deve rispettare le indicazioni suggerite RQO1 dall’azienda La stagista deve rispettare i tempi fissati nel piano di RQO2 lavoro RQD3 Il sito deve favorire la User Interface e la User Experience Lo sviluppo del front-end deve permettere una facile RQD4 integrazione con la parte di back-end Tabella 3.3: Requisiti di Qualità
Capitolo 4 Tecnologie e strumenti utilizzati In questo capitolo vengono presentate le tecnologie e gli strumenti utilizzati durante la progettazione e lo sviluppo del front-end. 4.1 Introduzione La maggior parte del progetto è focalizzata sul framework Angular, usato assieme all’editor di codice Visual Studio Code. La scelta di utilizzare Angular per sviluppare un’applicazione web è stata effettuata dal tutor aziendale invece la scelta delle altre tecnologie sono state a carico della stagista. L’utilizzo del framework Angular ha reso obbligatorio l’utilizzo di alcune tecnologie integrate in esso come ad esempio il linguaggio di programmazione TypeScript e la tecnologia NPM. Di seguito è riportata una descrizione delle principali tecnologie e degli strumenti utilizzati durante durante il periodo di stage. 4.2 Ambiente di sviluppo Il percorso di stage è stato sviluppato su un sitema operativo Mac. 4.2.1 Visual Studio Code Figura 4.1: Logo Visual Studio Code 21
22 CAPITOLO 4. TECNOLOGIE E STRUMENTI UTILIZZATI Visual Studio Code è un editor di codice sorgente sviluppato da Microsoft per Windows, Linux e macOS. Esso include supporto per il debugging, un controllo per Git integrato, Syntax highlighting, IntelliSense, Snippet e refactoring del codice. Visual Studio Code è basato su Electron, un framework con cui è possibile sviluppare applicazioni Node.js. Durante il periodo di stage la stagista ha deciso di utilizzare come IDE Visual Studio Code perchè: ∗ Supporta totalmente il framework Angular, facilitandone l’utilizzo; ∗ È completamente gratuito; ∗ È utilizzato nella maggior parte dei tutorial che sono stati seguiti per l’apprendi- mento. Valide alternative a Visual Studio Code sono: ∗ Web Storm, ottimo editor per Angular attraverso il quale è possibile compilare il codice TypeScript in JavaScript senza fare affidamento a plug-in esterni, però presenta lo svantaggio di essere a pagamento. ∗ Atom, è un editor di testo gratuito, sviluppato da GitHub che permette tutte le funzionalità degli altri editor di testo oltre ad un ambiente di sviluppo altamente personalizzabile. 4.3 Strumenti di versionamento Git Figura 4.2: Logo Git Il versionamento del codice del progetto Sync Lav è avvenuto attraverso l’utilizzato di una repository privata, versionata tramite il Version Control System (VCS) Git. Il Version Control System (VCS) Git ha permesso a entrambi i sviluppatori di col- laborare sullo stesso progetto mantenendo il codice in un unico posto e di gestire un progetto mantenendo il controllo del codice sorgente e della sua storia. Per non creare una situazione di confusione durante i merge è stato molto utile il servizio Git Flow offerto da Git. Il Git Flow permette di avere un flusso organizzativo dei branch, dei loro scopi e delle loro funzioni. Attraverso il Git Flow il ramo Master,
4.4. LINGUAGGI E FRAMEWORK 23 che rappresenta il codice attualmente in produzione, non viene mai modificato ma- nualmente da nessuno. Pure il ramo Develop che rappresenta il ramo di sviluppo non viene mai modificato. Le modifiche vengono inserite attraverso la creazione di un Feature branch. Il Feature branch è un ramo che parte da Develop ed in esso viene riunificato al termine della modifica dul codice. La particolarità dei Feature branch è che, una volta chiusi, essi si andranno a riunire automaticamente sia in Develop che in Master. Seguendo questo schema di sviluppo si evitano la maggior parte delle complicazioni dovute ai merge e si mantiene un flusso sufficientemente solido. 4.4 Linguaggi e framework 4.4.1 Il framework Angular Figura 4.3: Logo Angular Per lo sviluppo del front-end è stato utilizzato Angular, uno dei framework più uti- lizzati nella creazione di applicazioni web open source. Il linguaggio di programmazione di Angular è TypeScript mentre per la versione precedente, AngularJS, è JavaScript. Le applicazioni sviluppate in Angular vengono eseguite interamente dal web browser dopo essere state scaricate dal web server. Questo comporta il risparmio di dover spedire indietro la pagina web al web server ogni volta che c’è una richiesta di azione da parte dell’utente. Il codice generato da Angular gira su tutti i principali web browser moderni quali Chrome, Miscrosoft Edge, Opera, Firefox, Safari ed altri. Angular è stato progetta- to per fornire uno strumento facile e veloce, per sviluppare applicazioni che girano su qualunque piattaforma inclusi smartphone e tablet, infatti le applicazioni web in Angular in compilazione con il toolkit open sourse Bootstrap diventano responsive, ossia il design del sito web si adatta in funzione alle dimensioni del dispositivo utilizzato. La creazione dell’ambiente di sviluppo per la realizzazione di un nuovo progetto è un’operazione che potrebbe risultare complicata a causa della quantità di pachetti software da integrare e per la definizione di diversi aspetti che potrebbero cambiare nel tempo. Perciò per semplificare l’attività di setup iniziale dell’ambiente di sviluppo, il team di Angular ha sviluppato Angular CLI, un ambiente a riga di comando per creare la stuttura di un’applicazione Angular già configurata.
24 CAPITOLO 4. TECNOLOGIE E STRUMENTI UTILIZZATI 4.4.2 Panoramica dell’architettura Angular Angular è composto da diversi elementi che messi insieme formano un’applicazione, di questi i principali sono i moduli, i componenti e i servizi. Figura 4.4: Architettura ad alto livello di Angular Moduli I moduli possono essere considerati come i mattoni di un’applicazione Angular che forniscono un’ambiente di compilazione per i componenti. Ogni applicazione contiene un modulo radice, considerato il punto di partenza dell’applicazione, che caricandosi permette l’avvio di tutti i componenti dell’applicazione. Ciascun modulo può importare funzionalità di altri moduli ed esportare le proprie funzionalità. L’organizzazione del codice in moduli aiuta nella gestione di codice complesso e favorisce la riusabilità. Per riuscire a comprendere meglio il concetto di modulo viene riportato il codice dell’AppModule generato da Angular CLI. Figura 4.5: AppModule
4.4. LINGUAGGI E FRAMEWORK 25 Come si può osservare un modulo è una classe identificata da un decoratore @NgModule, che specifica diverse proprietà: ∗ declaration: specifica i componenti che appartengono al modulo; ∗ imports: contiene i moduli necessari per i componenti dichiarati; ∗ providers: dichiara tutti i servizi per renderli accessibili in tutte le parti dell’ap- plicazione; ∗ bootstrap: specifica la vista principale dell’applicazione; Componenti I componenti definiscono le viste della nostra applicazione, un insieme di elementi schermo tra i quali Angular sceglie durante l’esecuzione e modifica in base al codice e alla logica del programma. In un’applicazione Angular esiste sempre un componente radice che contiene la struttura base del sito e che per convenzione prende il nome di AppComponent. Ogni componente definisce una classe che contiene i dati e la logica dell’applicazione ed è associato a un modello HTML che definisce una vista da visualizzare. Per riuscire a comprendere meglio il concetto di modulo viene riportato il codice dell’AppComponent generato da Angular CLI. Figura 4.6: AppComponent Anche la classe component contiene un decoratore, @Component, che la identifica e di cui specifica le seguenti proprioetà: ∗ selector : selettore che comunica ad Angular la creazione e l’inserimento di un’istanza di questo componente ovunque trovi il tag corrispondente nel file HTML; ∗ templateUrl : percorso relativo al modulo del file HTML di questo componente; ∗ styleUrls: percorso relativo al modulo del file CSS di questo componente.
26 CAPITOLO 4. TECNOLOGIE E STRUMENTI UTILIZZATI Two-way data binding Figura 4.7: Esempio del meccanismo two-way data binding Nell’immagine riportata si può notare un meccanismo molto importante supportato da Angular, il two-way data binding, utilizzato per far comunicare un componente con il proprio template. Il two-way data binding è composto da: ∗ Event binding: aggiornamento dei dati applicativi in seguito ad azioni di input dell’utente; ∗ Property binding: interpolazione dei dati di un componente visualizzabili nella view. Servizi I componenti usano i servizi, i quali forniscono specifiche funzionalità che non sono direttamente collegate con le viste come ad esempio la gestione della comunicazione con i server e il recupero dei dati da esso. Tali servizi vengono iniettati nei componenti come delle dipendenze, rendendo il codice modulare, riutilizzabile ed efficiente. Ogni servizio utilizza il decoratore @Injectable che permette ai componenti di includere il servizio per poterlo utilizzare. Dependency injection Il meccanismo di dependency injection è un Design pattern della Programmazione orientata agli oggetti il cui scopo è quello di semplificare lo sviluppo e migliorare la testabilità di software di grandi dimensioni. Angular include un suo meccanismo di dependency injection davvero solido e molto flessibile, il cui utilizzo si riassume in tre semplici passi: si crea il servizio, si definisce un injector e si inietta la dipendenza dove necessario. Le dipendenze vengono iniettate definendole nei parametri del costruttore di un componente, queste dipendenze vengono poi fornite al componente solamante quando la classe viene istanziata. Vantaggi e svantaggi Ho trovato molto utile l’utilizzo del framework Angular principalmente perchè impone una logica chiara nell’organizzazione del codice, quindi c’è un rischio meno elevato di andare in contro a codice confusionario e disordinato. È supportato dalla maggior parte dei browser e comprende un grande numero di funzionalità aggiuntive utili che possono essere integrate facilmente. Uno svantaggio è presente nell’esperienza iniziale di utilizzo più complessa: per lanciare un’applicazione è necessario installare la CLI, ed impostare un insieme di parametri. Come detto in precedenza Angular è stato scritto utilizzando TypeScript, quindi è necessario anche l’apprendimento di questo linguaggio. Nel complesso il framework Angular fa utilizzo di molti elementi che ne facilitano l’utilizzo ma che rallentano la
4.4. LINGUAGGI E FRAMEWORK 27 comprensione iniziale. Per evitare questo sforzo di apprendimento iniziale una libreria molto diffusa nello lo sviluppo di applicazioni web è React. 4.4.3 Alternative ad Angular Una delle principali e più diffuse tecnologie per lo sviluppo di web application è React. React è una libreria JavaScript, open source sviluppata da Facebook nel 2013. React consiste in un apprendimento più veloce e semplice e la principale differenza rispetto ad Angular è che, essendo una libreria e non framework, oltre al core dobbiamo aggiungere librerie di terze parti per realizzare specifiche parti delle nostre applicazioni. Un’altra importante alternativa ad Angular è Vue.js, framework JavaScript opensource. Vue.js è il più immediato da capire e il più facile da apprendere, persenta il vantaggio di avere pagine web che si aggirano sui 2MB, sono le più leggere contro i 100Kb di React e 500Kb di Angular. Ulteriore vantaggio è il passaggio da una versione alla successiva il quale non crea pesanti problemi di compatibilità al contrario Angular. Il principale svantaggio di Vue.js è che essendo così semplice da scrivere ed avendo un’architettura poco complessa è più difficile da testarlo in modo automatico. 4.4.4 Typescript Figura 4.8: Logo TypeScript Essendo Angular scritto in TypeScript, per poter scrivere il codice dell’applicazione è stato necessario l’apprendimento di questo nuovo linguaggio. TypeScript è un linguaggio di programmazione open source sviluppato da Microsoft, che mira a facilitare lo sviluppo di applicazioni su larga scala scritte in JavaScript. TypeScript rispetto a JavaScript aggiunge i concetti di classi, moduli, interfacce, generics e la tipizzazione statica opzionale. È un superset di JavaScript: tutto il codice JavaScript è codice TypeScript valido quindi può essere aggiunto facilmente a qualsiasi progetto. Il codice TypeScript sviluppato viene successivamente ricompilato in JavaScript per poter essere interpretato da browser o app.
28 CAPITOLO 4. TECNOLOGIE E STRUMENTI UTILIZZATI 4.4.5 Npm Figura 4.9: Logo Npm Node Package Manager (NPM) è il principale software utilizzato per gestire i moduli di Node.js e consente di condividere il codice per problemi tipici tra gli sviluppatori JavaScript. La filosofia alla base di NPM è quella che se un problema è stato già risolto da altri programmatori non ha senso doverlo sviluppare per conto proprio, è possibile utilizzare la soluzione condivisa messa a disposizione di tutti. NPM oltre a consentire il riuso del codice, consente di tenerlo costantemente sotto controllo in modo da aggiornarlo se dovesse essere migliorato. NPM suddivide il codice in package o moduli. Un package è una directory che contiene uno o più file messi insieme ad un file chiamato package.json, che contiene dei dati relativi al pacchetto. In generale una tipica applicazione è costituita da decine o migliaia di package. Npm è utilizzato dal framework Angular nello sviluppo di Angular CLI, la quale permette di avere un’applicazione Angular già configurata. 4.4.6 JSON Server Figura 4.10: Logo Json Server Nella prima fase della progettazione per non rallentare o bloccare lo sviluppo del front-end a causa della mancanza di un back-end è stato necessario creare una fake api rest con Json Server. L’utilizzo di Json server è stato consigliato dal tutor aziendale e attraverso questo si sono simulate le chiamate GET e POST necessarie. Json server è risultato uno strumento che ha facilitato l’esecuzione del lavoro inoltre è configurabile in maniera veloce e chiara ed è facile da usare.
4.4. LINGUAGGI E FRAMEWORK 29 4.4.7 Bootstrap Figura 4.11: Logo Bootstrap Bootstrap è il framework più famoso per lo sviluppo di siti web responsive e applicazioni mobile. Esso contiene modelli di progettazione basati su HTML, CSS e JavaScript. Inoltre è molto vantaggioso scegliere Bootstrap sin dall’inizio in quanto permette di creare molto velocemente la struttara base del front-end. In seguito all’indicazione da parte del tutor aziendale sull’utilizzo di questo framework, la configurazione e l’utilizzo sono risultati molto semplici, inoltre è un buon punto di riferimento quando non si sa bene come configurare un determinato elemento. Bootstrap è molto più leggero degli altri framework e ha un design originale e semplice. Attraverso l’utilizzo di Bootstrap si ha un responsive design, cioè un design che si adatta dinamicamente a qualsiasi dispositivo e ciò è di fondamentale importanza per questa fase storica che vede gli utenti navigare sul web da dispositivi molto diversi, che vanno dal computer di casa allo smartphone di ultima generazione, passando per i vari tablets. Infatti il responsive design è diventato praticamente obbligatorio. Importanti alternative a Bootstrap sono i framework Foundation e Semantic UI. ∗ Foundation è un css framework open source molto stabile e leggero, il più cono- sciuto a seguire di Bootstrap, esso è uno strumento adatto per la realizzazione di layout responsive. Uno dei suoi vantaggi è la versatilità: esso è ottimo per la realizzazione di template per email, web app mobile first e siti web. ∗ Semantic UI, come suggerisce il nome, è un framework che ha lo scopo di rendere il processo di creazione dei siti Web più semantico. La sua principale caratteristica è quindi di avere un codice molto leggibile chiamato human friendly HTML. Semantic UI presenta, a differenza di Bootstrap, una struttura dei componenti molto più complessa a causa della molteplicità dei stili che mette a disposizione e che può creare confusione.
Capitolo 5 Progettazione In questo capitolo viene presentata la struttura delle classi creata durante la fase di progettazione e viene dato un riassunto dei concetti appresi, utili per il design dell’in- terfaccia grafica. 5.1 Struttura delle classi di Sync Lav Dopo uno studio approffondito di Angular e le indicazioni ricevute dal tutor interno è iniziata la progettazione delle classi, durante la quale, in alcuni momenti , c’è stato un confronto con l’altro membro del progetto sugli aspetti di comune interesse. Infine si è giunti al seguente diagramma che rappresenta la stuttura principale delle classi del front-end. Figura 5.1: Diagramma delle classi 31
32 CAPITOLO 5. PROGETTAZIONE Come si può osservare dalla figura la classe AppModule è composta principalmete da tre classi che rappresentano tre componenti: ∗ La classe PaginaIniziale la quale si occupa di permettere l’accesso alle altre due pagine del sito; ∗ La classe ConfigurazioneScheduler la quale, come si può intuire dal nome, si occuppa della configurazione dello scheduler, quindi della compilazione dei campi form neccessari e successivamente gestisce il salvataggio della configurazione impostata. Il salvataggio e l’invio dei dati al server avviene attraverso l’iniez- zione della classe servizio SchedulerService mediante l’utilizzo della depencency injection; ∗ La classe RisultatiScheduler è composta da una sezione di configurazione dei filtri da applicare a una tabella sottostante che mostra i risultati dello scheduler. La classe si occupa dell’invio della configurazione dei filtri allo server, e della ricezione degli annunci da mostrare in tabella. La comunicazio con il server avviene attraverso l’utilizzo dalla classe servizio AnnunciServer, anche questa iniettata nella classe RisultatiScheduler mediante l’utilizzo della dependency injection. 5.2 User Experience Figura 5.2: User Experience Con il termine User Experience (esperienza d’uso) s’intende ciò che una persona prova durante l’utilizzo di un sito web, un insieme complesso tra esperienza, emozioni e sensazioni che si percepiscono durante la navigazione in un sito web. A determinare la User Experience concorrono diversi fattori: l’usabilità del sito web, il design e la grafica, l’accessibilità, la strategia di comunicazione, i contenuti ed anche la Search Engine Optimization (SEO), indispensabile per far sì che il sito web sia rintracciabile sui motori di ricerca. L’obiettivo finale che si cerca di raggiungere attraverso la User Experience è quello di
5.2. USER EXPERIENCE 33 migliorare l’esperienza dell’utente fornendogli esattamente ciò che desidera in modo rapido senza correre il rischio di andare in contro a complicazioni che potrebbero generare frustrazione nell’utente e successivo abbandono del sito. Un sito web capace di assicurare una User Experience positiva deve possedere delle caratteristiche ben precise. In particolare, il sito web deve essere: ∗ Usabile: L’utente deve riuscire a navigare con facilità, raggiungendo i suoi obiettivi senza difficoltà. ∗ Accessibile: Il sito deve essere comprensibile a tutte le categorie di utenti in ogni punto della sua struttura e in qualsiasi momento. ∗ Funzionale: Sia lo sviluppatore sia l’utente deve essere in grado, attraverso il sito, di raggiungere i proprio obiettivi. ∗ Attraente: L’estetica del sito deve essere bella e piacevole alla vista dell’utente. Un sito che possiede tutte le caratteristiche necessarie per regalare un’ottima esperienza d’utente ma non è attrante, nei maggiori dei casi, non trasmette sensazioni positive all’utente. ∗ Utile: L’utente attraverso la navigazione nel sito deve ottenere un ricavo, qualcosa di concreto e utile altrimenti è improbabile il ritorno sullo stesso sito. ∗ Completo: Un sito incompleto crea disorientamento, quindi la struttura del sito e tutte le informazioni che vengono offerte devono essere complete ottenendo così la fiducia di chi lo utilizza. ∗ Chiaro: L’utente deve impiegare poco tempo per comprendere dove si trova, l’utilità del sito e cosa questo gli può offrire. ∗ Rintracciabile: Per essere rintracciabile il nostro sito deve comparire tra i primi 10 risultati di una ricerca sul browser, la quale contiene le parole chiave del sito. ∗ Interattivo: Un sito web per riuscire a trasmettere una buona user experience deve riuscire a diminuire le distanze tra lo sviluppatore e l’utente, cercando ad esempio di consentire un dialogo per risolvere velocemente eventuali difficoltà o richieste. 5.2.1 Target Per riuscire a offrire una buona user exerience lo sviluppatore ha il fondamentale compito di indentificare la categoria di utenti(target) che andranno ad utilizzare il suo sito. Questo aspetto è importante per riuscire a soddisfare tutti i bisogni e le richieste dell’utente e rispondere a tutte le domande che ci si può porre durante la progettazione come ad esempio: Di cosa ha bisogno? Cosa desidera? Cosa si aspetta di trovare sul sito web? E cosa no? Come si può soddisfarlo? E come si può sorprendere? In poche parole l’utente è il soggetto del sito web e tutto ruota attorno ad esso.
Puoi anche leggere