Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica WoW: sviluppo di un'interfaccia graca per la intranet aziendale Tesi di laurea triennale Relatore Laureando Prof. Massimo Marchiori Anno Accademico 2015/2016 Nicolò Bissacco II Sommario Questo documento descrive il lavoro svolto durante il periodo di stage dal laureando Nicolò Bissacco presso l'azienda Wintech Spa. L'obbiettivo di tale attività è la realizzazione dell'interfaccia graca del nuovo portale per la intranet aziendale. I moduli realizzati sono relativi alla gestione delle anagrache e dell'archiviatore documentale. Note Al ne di evitare ambiguità e per permettere una maggiore comprensione dei termini tecnici e degli acronimi utilizzati, questi sono riportati nel glossario presente in appendice. Sono state adottate le seguenti norme tipograche: • La prima occorrenza di un termine del glossario viene mar- cata da una G in pedice (es. parolaG). • I termini in lingua straniera compaiono in "corsivo ". III IV Ringraziamenti Innanzitutto vorrei ringraziare il Prof. Massimo Marchiori, relatore della mia tesi, per l'aiuto fornitomi durante la stesura del documento. Desidero ringraziare i miei genitori e i miei fratelli per il sostegno e per essermi stati vicini in ogni momento durante gli anni di studio, soprattutto nei momenti di dicoltà. Un ringraziamento speciale a Maura, la mia danzata, che durante gli anni di studio con è sempre stata al mio anco e mi ha sostenuto nei periodi di dicoltà . Rivolgo uno speciale grazie anche ai miei nonni che sono stati, con la loro integrità e presenza, un esempio solido. Un ringraziamento va anche ai miei amici che hanno sempre saputo farmi divertire e mi hanno sostenuto durante questi anni di impegni universitari. Un grazie speciale va rivolto a Luca (in arte Rudy): senza la sua pazienza, dedizione e conoscenza irriverente della matematica non sarei qui oggi. Ringrazio anche Enrico Merigliano, tutor aziendale, e tutti i dipendenti di Wintech Spa che mi hanno permesso di vivere questa esperienza. Settembre 2016, Padova Nicolò Bissacco V VI Indice 1 2 Introduzione L'azienda 1.2 Prodotti e servizi oerti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Il progetto di stage 1 3 6 2.1 Descrizione 2.2 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.3 Tecnologie . . . . . . . . . . . . . . . . . . . . . . . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3.1 Frontend . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3.2 Backend . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3.3 Servizi RESTFUL . . . . . . . . . . . . . . . . . . . 12 2.3.4 Versionamento . . . . . . . . . . . . . . . . . . . . . 13 2.3.5 Strumenti aziendali . . . . . . . . . . . . . . . . . . 14 2.4 Pianicazione . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5 Avvicinamento al progetto . . . . . . . . . . . . . . . . . 18 2.6 Analisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.7 Progettazione e sviluppo . . . . . . . . . . . . . . . . . . 20 2.7.1 Design pattern . . . . . . . . . . . . . . . . . . . . . 20 2.7.2 Modulo anagrache 22 2.7.2.1 2.7.3 2.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Modulo robot mail . . . . . . . . . . . . . . . . . . . 26 2.7.3.1 3 1 1.1 Struttura package Casi d'uso . . . . . . . . . . . . . . . . . . . . . 28 Verica e validazione . . . . . . . . . . . . . . . . . . . . 52 Conclusioni 53 3.1 Valutazione retrospettiva . . . . . . . . . . . . . . . . . . 53 3.2 Criticità . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.3 Competenze . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.3.1 Considerazioni nali . . . . . . . . . . . . . . . . . . 56 4 Glossario 57 5 Bibliograa 65 VII Elenco delle gure 1 Logo Wintech Spa 2 Informazioni aziendali . . . . . . . . . . . . . . . . . . . . . 3 Partnership 4 Con chi lavora Wintech Spa . . . . . . . . . . . . . . . . 3 5 Esempio struttura JSON . . . . . . . . . . . . . . . . . . 12 6 TCB8 14 7 IBM connections . . . . . . . . . . . . . . . . . . . . . . 15 8 IBM notes . . . . . . . . . . . . . . . . . . . . . . . . . . 15 9 GeCo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 10 Design pattern MVC 20 11 Esempio lista anagraca . . . . . . . . . . . . . . . . . . 23 12 Dettaglio anagraca cliente . . . . . . . . . . . . . . . . . 23 13 Esempio form inserimento anagraca 24 14 Funzionamento Robot mail . . . . . . . . . . . . . . . . . 26 15 UC interazione tra utente e robot mail 29 16 UC interazione utente con mail associazione archiviazione 1 . . . . . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . singola . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 33 UC interazione utente con mail nessuna associazione archiviazione . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1 . . . . . . . . . . . . . . . . . . . 33 UC interazione utente con mail associazione archiviazione multipla . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 19 UC interazione utente e pagina accettazione archiviazione 40 20 UC interazione utente e pagina annullamento archiviazione 42 21 UC interazione utente e pagina modica archiviazione . . 44 Elenco delle tabelle 1 Orari di lavoro . . . . . . . . . . . . . . . . . . . . . . . 17 2 UC inserimento tag nell'oggetto . . . . . . . . . . . . . . 29 3 UC invio della mail al Robot . . . . . . . . . . . . . . . . 30 4 UC il robot riceve la mail 31 5 UC salvataggio dati temporanei 6 UC ricezione mail di risposta dal robot mail 7 UC click su link Se non visualizzi correttamente questa mail... . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8 UC nessuna azione sulla mail di risposta 36 9 UC click su bottone Modica archiviazione suggerita . . 37 10 UC click su bottone Annulla archiviazione suggerita . . . 38 11 UC click su bottone Accetta archiviazione suggerita . . . 39 12 UC salvataggio dati azione . . . . . . . . . . . . . . . . . 40 VIII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 34 13 UC visualizzazione messaggio di successo . . . . . . . . . 41 14 UC visualizzazione delle informazioni di archiviazione . . 41 15 UC salvataggio dati azione annullamento . . . . . . . . . 42 16 UC visualizzazione messaggio di annullamento . . . . . . 43 17 UC visualizzazione delle informazioni di archiviazione annullata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 18 UC visualizzazione form per la modica dell'archiviazione 45 19 UC visualizzazione delle informazioni di archiviazione . . 46 20 UC click su X rossa sulle informazioni di archiviazione . 47 21 UC click pulsante cerca entità . . . . . . . . . . . . . . . 48 22 UC nessuna azione . . . . . . . . . . . . . . . . . . . . . 49 23 UC click pulsante salva . . . . . . . . . . . . . . . . . . . 50 24 UC click pulsante annulla 51 . . . . . . . . . . . . . . . . . IX X 1 Introduzione 1.1 L'azienda Figura 1: Logo Wintech Spa Wintech Spa, fondata nel 1987, è il System Integrator G che, grazie alla propria esperienza, competenza e creatività, trasforma le complessità tecnologiche in soluzioni informatiche innovative, ecienti e dal facile utilizzo. G Wintech Spa fornisce consulenza personalizzata e soluzioni IT , per ottimizzare i processi aziendali e raggiungere gli obiettivi deniti assieme al cliente. Figura 2: Informazioni aziendali Il sistema qualità di Wintech Spa è stato certicato secondo la norma ISO 9001:2008 • G per le attività di: Progettazione, implementazione e fornitura di sistemi informativi integrati • Progettazione e sviluppo di soluzioni software • Erogazione di servizi di assistenza tecnica, sistemistica e applicativa Wintech Spa nel corso degli anni ha creato delle G Partnership e colla- borazioni di valore, tra cui IBM . 1 Figura 3: Partnership 2 1.2 Prodotti e servizi oerti Figura 4: Con chi lavora Wintech Spa Principalmente Wintech Spa tratta con: • Professionisti • Aziende moda • Imprese • Enti • Banche e assicurazioni • Piccola media impresa Oltre alle attività di assistenza e sistemistica ore anche i seguenti servizi: • Soluzioni: System Integrator signica anche concepire e sviluppa- re soluzioni su misura per i clienti. La Wintech Spa sostiene che i sistemi informatici debbano avere un luogo di lavoro prolato se- Intranet G ed Extranet G rappresentano il questo percorso; Social Intranet ed Extranet condo le proprie esigenze. punto di partenza di sono una prima tappa per ottimizzare anche gli aspetti legati alla comunicazione; il Digital Workplace G ha un obbiettivo nale: un luogo di lavoro virtuale accessibile da qualsiasi dispositivo e con 3 tutte le applicazioni e le funzioni operative necessarie allo svolgimento del lavoro di tutti i giorni. E' per poter garantire ai clienti di raggiungere questi obbiettivi che si mettono in campo forti competenze nell'ambito dello sviluppo Custom Web Applications G , nell'ambiente CRMG e di Customer Services G , Sistemi di eCommerce G , di Software Life Cycle Management G e di Document Management G che sono da considerarsi, di anche attraverso l'adozione di logiche e soluzioni di Archiviazione Sostitutiva a Norma, componenti ormai imprescindibili per le necessità di aziende che traguardano le nuove frontiere della Trasformation G . • Digital Applicazioni: Le applicazioni sono una parte importante nella visone del Digital Workplace. Seguire i clienti nella scelta e nell'a- dozione delle applicazioni è da sempre nel Visto l'impatto che un ERP G DNAG di Wintech Spa. ha all'interno di organizzazioni com- plesse, questo approccio diventa imprescindibile. Se ben concepito, l' ERP diventa il fulcro attorno al quale ruotano tutte le necessarie Applicazioni Dipartimentali e Verticali. I sistemi per l'Analisi dei Dati ( Business Intelligence G ), per il Cash & Credit Management e Human Resources G ), devono per la Gestione delle Risorse Umane ( essere scelti con attenzione, ma sicuramente dovranno interagire in modo stretto con l' ERP aziendale ed è per questo che l'adozione di Portali Applicativi è ormai una consuetudine. L'attenzione alle persone e al loro lavoro in azienda è un altro tratto caratteristico del Digital Worplace. Mettere quindi a disposi- zione non solo gli strumenti necessari al lavoro, ma anche quelli che diano la possibilità di una formazione in continua evoluzione eLearning G ), può diventare strategico. ( • Tecnologie: Le infrastrutture periferiche e centrali sono l'elemento portante delle soluzioni e delle applicazioni. Si accompagnano quindi i clienti nella trasformazione verso il Cloud G Ibrido , per garantire: essibilità e agilità con infrastrutture convergenti e virtualizzate ottimizzazione dinamica dei carichi di lavoro e riduzione dei costi Software-Dened G essibilità degli investimenti con sistemi basati su standards e semplicità della gestione con architetture nuovi modelli di consumo dell'IT. 4 La Wintech Spa aiuta le aziende nel miglioramento della produttività del Digital Workplace, aumentandone l'ecienza, rendendo più semplice ed agevole la comunicazione e la collaborazione, abilitando l'accesso alle applicazioni e ai dati aziendali da qualsiasi dispositivo. Si protegge l'impresa digitale con: sistemi integrati e automatizzati di controllo della sicurezza, in grado di prevenire attacchi di tools di backup Cybercrime G mirati alle diverse necessità ed esigenze azien- dali soluzioni di Business Continuity G e Disaster Recovery G . 5 2 Il progetto di stage Il seguente capitolo intende fornire una descrizione dettagliata del progetto di stage e dei motivi che hanno spinto l'azienda a proporlo oltre che i beneci derivati dalla sua applicazione. Viene inoltre illustrata la metodologia utilizzata per l'adempimento degli obiettivi. 2.1 Descrizione Il progetto di stage, denominato " G dell'interfaccia graca WOW G ", consiste nello sviluppo del nuovo sistema web per la intranet aziendale system inte- e ha l'obiettivo di gestire a 360 gradi l'azienda creando un grator. I moduli sviluppati nel periodo di stage riguardano le anagrache e il sistema di archiviazione documentale. software per gestisoftware emerge è necessario ricordare molte password, All'interno della vita aziendale si utilizzano diversi re vari ussi di informazioni. Dalla molteplicità dei un grave problema comunicativo: memorizzare le funzioni di ciascun programma e non sempre c'è la possibilità di scambio delle informazioni tra i diversi software. perdita di tempo e inecienza. L'obiettivo del progetto consiste quindi nel creare un Questo implica CRM aziendale che racchiuda la possibilità di accedere a tutte le informazioni delle varie applicazioni e mostrarle in un unico luogo, con un unico login e che permetta la condivisione delle informazioni tra gli utilizzatori. Il modulo che gestisce tutte le funzionalità CRUD G (creazione, modica, lettura ed eliminazione) delle anagrache attinge le informazioni dal database TDB8 G ed è stato ampliato con funzionalità aggiuntive presenti in altri applicativi presi in esame nell'analisi. Un obiettivo collaterale consiste nella realizzazione di un Robot mail, un nuovo sistema di archiviazione documentale, che sostituirà il preesistente archiviatore interno a TDB8 aggiungendo ulteriori funzioni. Robot mail ore la possibilità, tramite un sosticato algoritmo, di archiviare G in maniera intelligente le e-mail. Grazie a tag , scritti con delimitatori stabiliti per convenzione, contenuti nell'oggetto, Robot mail risponde al mittente con una proposta di archiviazione ragionata, e il mittente deve confermare, modicare o annullare, a seconda delle speciche, l'archiviazione. Una volta scelta l'azione da perseguire, l'utente ha accesso ad una pagina del portale WOW che riassume le operazioni svolte. Se l'utente sceglie di confermare o annullare l'archiviazione proposta, il portale mostra un messaggio di conferma o annullamento. Nel caso in cui, invece, l'utente decida di modicare l'archiviazione proposta, ha la possibilità 6 di scegliere in autonomia il punto di archiviazione desiderato. Nel ca- so in cui Robot mail non riuscisse a evincere un match di archiviazione del 100%, potrebbe suggerire più punti di archiviazione; in questo caso l'utente dovrà accedere alla pagina del portale e selezionare il punto di archiviazione corretto. Un terzo obiettivo consiste nel creare una intranet social, dove sarà possi- bile scrivere messaggi, avere proli dettagliati degli utenti, commentare, condividere informazioni e avere uno spazio in cui poter parlare anche di argomenti che esulano dai compiti lavorativi, fondamentali per una maggior coesione dei membri della business unit. L'accesso al portale deve poter avvenire non solo tramite dispositivi sktop G o notebook G ma anche in mobilità da smartphone G e tablet G . de- Come metodo di sviluppo per il progetto l'azienda ha deciso di utilizzare una metodologia agile G con incontri frequenti con la commissione che ha standup meeting G giornalieri per fare un resoconto assegnato il progetto e di quanto sviluppato. 7 2.2 Obiettivi Gli obiettivi sono suddivisi in obiettivi obbligatori e opzionali. Essi hanno subito delle modiche all'inizio del periodo di stage dettate dalla strategia e dalle priorità aziendali. Infatti, oltre allo sviluppo dell'interfaccia graca per le anagrache, l'azienda si è resa conto che sarebbe stato importante lo sviluppo del sistema di archiviazione documentale. Gli obiettivi obbligatori iniziali sono: • sviluppo interfaccia utente; • creazione pagine responsive; • creazione pagina anagraca clienti; • creazione pagina anagraca fornitori; • creazione schede di utilità per anagraca clienti; • creazione schede di utilità per anagraca fornitori; • creazione pagine del sistema di archiviazione documentale. Gli obiettivi opzionali aggiuntivi sono: • 8 creazione di altre pagine speciche del CRM. 2.3 Tecnologie Le tecnologie impiegate vengono qui di seguito suddivise in due categorie: la prima comprende le tecnologie utilizzate per lo sviluppo del front end G , le seconde, invece, le tecnologie impiegate nella realizzazione del back end G . 2.3.1 • • Frontend Webpack: è un module bundler, si occupa di gestire, processa- re e dividere in moduli i diversi assets di un'applicazione: javascript G , CSS G /SASS G , immagini e JSON G . le Gulp: è uno strumento che ci aiuta ad automatizzare alcune operazioni necessarie durante lo sviluppo web. processi di ottimizzazione preprocessori SASS É usato per eseguire CSS, Javascript e immagini, per usare i browser G automaticamente e per ricaricare il quando si salva un le del progetto. • Karma: è uno strumento a riga di comando utilizzato per generare un web server G JavaScript che viene che carica il codice sorgente G dell'applicazione ed esegue i test di unità . É possibile congurarlo per eseguire i test su un certo numero di browser, necessario per browser che si è essere sicuri che l'applicazione funzioni su tutti i deciso di supportare. • Jasmine: è un framework G per testare le applicazioni JavaScript. Fornisce funzioni per aiutare a strutturare i test di unità. • npm (Node Package Manager ), strumento che consente di installare e gestire i moduli esterni che forniscono funzionalità aggiuntive al progetto. • web application framework G JavaScript Open Source G mantenuto da Google G e da una comunità di sviluppatori AngularJS: è un individuali e corporazioni. Si utilizza principalmente per lo svilup- single-page G . Utilizza i pattern architetturaliG MVC(model-view-controller) G e MVVM(model-view-viewModel) G . po di applicazioni web • Angular animate: è un componente aggiuntivo per AngularJS che mette a disposizione delle funzioni per le animazioni. • Angular touch: è un componente aggiuntivo per AngularJS che mette a disposizioni delle funzioni per dispositivi mobile. 9 • • Angular ui bootstrap: è una libreria graca basata su tstrap G che reimplementa le funzionalità attraverso direttive AngularJS in modo che siano utilizzabili dal framework. jQuery: è una libreria Javascript implementa anche le funzionalità lodash: di per lo sviluppo di applicazioni web. Mette a disposizioni funzioni avanzate rispetto a • Boo- AJAX G . Javascript e è una libreria Javascript moderna che mette a dispo- sizione delle funzioni di utilità non presenti in Javascript nativo aumentandone la modularità e le • performance. SASS: è un'estensione del linguaggio CSS che permette di utiliz- zare variabili, di creare funzioni e di organizzare il foglio di stile in più le. Deve essere compilato per generare i le CSS e permette di velocizzare lo sviluppo graco e il mantenimento del codice. • IDE G realizzato da Jetbrains G . • Html5: è un linguaggio di Webstorm: è un le pagine web. É il moderno e veloce per lo sviluppo web markup G per la strutturazione delsucessore di HTMLG ed include nuovi tag e funzionalità. • Javascript: è un linguaggio di scripting G G orientato agli oggetti agli eventi utilizzato per lo sviluppo web lato client G . e Permette di creare eetti dinamici e interattivi. • CSS3: è un linguaggio per denire la formattazione e la graca delle pagine HTML. Permette di separare i contenuti HTML dalla loro formattazione. • Bootstrap: è un framework graco che mette a disposizione strumenti ed eetti graci per applicazioni web. É basato su CSS e script. • CSS. Mette a difont G permettendo la loro scalabilitàG Font awesome: è un framework di font iconiciG e sposizione icone generate dai e customizzazione. 10 HTML e Java- mette a disposizione anche funzionalità grache con 2.3.2 • Backend Java 2EE: è una specica Java G le cui implementazioni vengono principalmente sviluppate in linguaggio di programmazione Java e ampiamente utilizzata nella programmazione Web. • middleware G open source per lo Java, attraverso l'appoggio al relativo framework, che fornisce un servizio di Object-relational mapping (ORM) G ovvero gestisce la persistenza dei dati sul database relazionaleG atHibernate: è una piattaforma sviluppo di applicazioni traverso la rappresentazione e il mantenimento di un sistema di oggetti • Java. JPA: è un framework per il linguaggio di programmazione Java che DBMS G relazionale nelle applicazioni che usano le piattaforme Java Platform, Standard Edition e Java Enterprise Edition. si occupa della gestione della persistenza dei dati di un • framework open source per lo sviluppo di servizi web RESTful G in Java. Serve per semplicare oltre che lo sviluppo, anche la comunicazione con i client chiamanti. • Junit: è un Jersey: è un framework che permette di eseguire test di unità per il linguaggio di programmazione • Jenkins: è uno strumento Java. open source continuous integration G , eseguito lato server all'interno di Java. Viene di un server web. I task generalmente vengono automatizzati vengono fatti partire ad ogni commit G fatto dallo sviluppatore. scritto in linguaggio DBMS relazionale e • Microsoft sql server 2014: è un • Microsoft sql server management studio: è un ambiente in- Microsoft G . prodotto da tegrato per l'accesso, la congurazione, la gestione, l'amministra- SQL Server G . Integra un'ampia gamma di strumenti graci con numerosi editor di script zione e lo sviluppo di tutti i componenti di avanzati per consentire a sviluppatori e amministratori di qualsiasi livello di competenza di accedere a • Eclipse rational: è un IDE SQL Server. di sviluppo basato su Eclipse G , svi- IBM, che supporta molti linguaggi di programmazione Java e Java2EE. Mette a disposizione strumenti di sviluppo, design, testing, analisi e deploy G . luppato da tra cui • Advanced rest client: è un applicazione per testare servizi REST G . Chrome G utile per 11 2.3.3 Servizi RESTFUL front-end G e back-end G avviene tramite servizi RESTful. Questo ha permesso di avere la logica di funzionamento anche sul front-end alleggerendo il back-end in modo da renderlo più La comunicazione tra web veloce nel calcolo e nella risposta. La suddetta separazione è garanzia di ecienza, infatti tutta la logica che riguarda le funzionalità di generazione della pagina nel browser G HTML risiede dell'utente, invece, la logica di salvataggio e tutto quello che riguarda i dati resta nel back-end orendo così maggiore sicurezza e rapidità. front-end esegue in modo asincrono delle chiamate a funzioni API G rese pubbliche dal back-end. Il back-end rielabora e restituisce una risposta tramite JSON che contiene i dati richiesti al front-end e che inne li Il visualizza. Il formato dei JSON è stato deciso inizialmente in modo da avere delle strutture chiare e univoche. Figura 5: Esempio struttura JSON 12 2.3.4 Versionamento Come sistema di versionamento Wintech Spa utilizza Subversion G . SVN G è un sistema opensource di controllo versione per lo sviluppo di software e non solo. Questo strumento viene utilizzato per mantenere la versione corrente ed avere tutta la storia delle modiche fatte. Permette di tornare indietro a versioni precedenti, unire modiche completate, segnalare conitti. I repository sono ospitati su server G interni all'azienda in modo da avere più controllo e sicurezza. 13 2.3.5 Strumenti aziendali La Wintech Spa utilizza le seguenti tecnologie aziendali: • TDB8: IBM technologies for dynamic business G , è la soluzione CRM di lotus notes G che consente di amplicare basata su piattaforma il controllo dell'attività aziendale, organizza i ussi di informazione e massimizza il valore di tutte le informazioni vitali che spesso vengono perdute. Figura 6: TCB8 • • software web opensource usato maggiormente per la gestione dei bug G ma ha anche funzioni di ticketing e strumenti per il project management G . Mantis: è un Trello: è un'applicazione web per il essere utilizzato anche come • to do list. project management. IBM connections: è una piattaforma di Può social software G leader di settore che consente alle aziende di contattare le persone appropriate, di accelerare l'innovazione e di fornire risultati. Questa piattaforma sicura e integrata permette di comunicare con le reti di esperti dei processi di business critici. 14 Figura 7: IBM connections • IBM notes: è un software per la gestione delle email e non solo. Ore tutte le funzionalità ideali per consentire alle aziende moderne di collaborare. Il programma semplica le attività complesse degli ambienti attuali, integrando messaggistica, applicazioni di siness e collaborazione social bu- in un unico spazio di lavoro facile da utilizzare. Figura 8: IBM notes • IBM sametime: è uno strumento di comunicazione social. Inte- business, orendo un'esperienza utente unicata tramite messaggistica gra funzioni di comunicazione in tempo reale nell'ambiente di istantanea, riunioni online, voce, video e dati. Con un solo clic, è possibile collegarsi immediatamente con la persona desiderata per richiedere le informazioni di • GeCo: è un software business necessarie. per la gestione e consuntivazione azienda- le. Le attività svolte vengono inserite nel calendario e collegate ai 15 progetti sui quali si lavora in modo da permettere ai ger G project mana- di calcolare le tempistiche di progetto e all'amministrazione di calcolare le ore di lavoro. Figura 9: GeCo • Teamviewer: è un software per il supporto remoto, accesso remo- to, amministrazione remota, ucio in casa, collaborazione e ting online. fare presentazioni condividendo il proprio desktop. 16 mee- Permette di controllare il pc a cui ci si connette e di 2.4 Pianicazione Le attività sono state pianicate prima dell'inizio dello stage che prevedeva una durata di 320 ore totali, suddivise in 40 ore settimanali per 8 settimane. Ha avuto inizio il giorno 23/09/2015 ed è terminato il giorno 13/11/2015. Le attività sono state pianicate settimanalmente nel seguente modo: • Prima settimana : Conoscenze generali e studio delle tecnologie; • Seconda settimana : • Terza settimana : Analisi dei requisiti; Progettazione graca dell'interfaccia; • Quarta settimana : Progettazione architetturale e di dettaglio; • Quinta e sesta settimana : • Settima settimana : • Ottava settimana : Codica e test; Correzioni e aggiunte alle funzioni sviluppate; Progettazione, implementazione e test funziona- lità aggiuntive opzionali. L'orario di lavoro era così pianicato: Giorno Mattina Pomeriggio Ore Lunedì 9:00 - 12:30 14:00 - 18:30 8 Martedì 9:00 - 12:30 14:00 - 18:30 8 Mercoledì 9:00 - 12:30 14:00 - 18:30 8 Giovedì 9:00 - 12:30 14:00 - 18:30 8 Venerdì 9:00 - 12:30 14:00 - 18:30 8 Totale 40 Tabella 1: Orari di lavoro 17 2.5 Avvicinamento al progetto Durante i primi giorni di stage sono state studiate le tecnologie necessarie per la realizzazione del progetto e degli applicativi utilizzati dall'azienda. Le mie conoscenze pregresse sui linguaggi di programmazione in uso mi hanno consentito di focalizzare lo studio principalmente sulle librerie, i framework e gli strumenti di build automatici. Grazie alle ottime documentazioni uciali presenti nei relativi siti lo studio è stato semplice. Ci si è serviti degli ecienti corsi gratuiti messi a disposizione da larJS Angu- nei quali, grazie a dei video didascalici con i relativi test di verica, si apprende in modo interattivo e rapido. Terminato lo studio delle tecnologie mi sono stati forniti gli accessi ai repository di progetto. Ho quindi utilizzato la documentazione aziendale per capire le norme di progetto utilizzate per lo sviluppo dei software, le architetture standard adottate e le funzioni delle principali classi e pattern utilizzati. Sono stati mostrati e spiegati inoltre altri progetti simili realizzati in precedenza così da comprendere meglio la losoa adottata frontend. Ho partecipato ad un corso sull'utilizzo di TdB8, CRM nella progettazione e sviluppo del codice di gestionale utiliz- zato per la gestione delle anagrache, da cui ho potuto capire come sono gestiti i dati e come vengono manipolati. Mi è stato spiegato il database e come accedervi per prelevarne le informazioni da mostrare sul web. Mi è stata fatta anche una breve panoramica sul portale utilizzato come contenitore di tutti i siti e portali fatti da Wintech Spa in modo da essere autonomo nell'integrazione del codice scritto in locale. Per la parte che riguarda l'archiviatore documentale ho studiato e visto come funziona, assieme ai colleghi che seguivano queste tecnologie, il ver IBM Lotus Domino G Wintech Spa. 18 ser- e il servizio di posta elettronica in funzione in 2.6 Analisi Durante l'attività di analisi sono stati redatti dei documenti aziendali nei quali venivano esposte le macro funzionalità principali e quelle più dettagliate con diagrammi UMLG , realizzati con Visual Paradigm G . L'autenticazione e prolazione utente venivano svolte da agenti in funzione per altri applicativi esterni al progetto, quindi il mio compito consisteva nell'integrare le chiamate a questi servizi e riceverne la risposta. I single signon G su porWeb Sphere G e venivano usati già come punto comune di accesso per servizi di prolazione prevedevano autenticazioni tale le applicazioni sviluppate negli ultimi tempi. Nella fase di analisi sono stati studiati alcuni software e prodotti azienda- li che presentavano funzioni analoghe a quelle da svolgere e che mi sono serviti come modello per il progetto da realizzare. Alcuni dei • software web analizzati sono stati: Bitrix24: racchiude tutte le funzionalità di ta di funzioni social, task manager G , chat CRM con l'aggiun- e video, documenti, calendario, email, risorse umane. • Zoho: presenta funzioni per la gestione delle anagrache di vendita e marketing, collaborazione, email, processi business ed • Kayako: service G è un software help desk G . che permette la gestione del integrando funzioni anagrache e chat customer avanzata. Dalla fase di analisi è emerso che il progetto da realizzare avrebbe do- vuto necessariamente avere le seguenti caratteristiche: avere un layout responsive G e un'alta usabilitàG da dispositivi mobile, di vitale importanza per gli agenti commerciali. 19 2.7 Progettazione e sviluppo Nel seguente capitolo vengono descritti in modo dettagliato la progettazione e le diverse fasi di realizzazione del progetto. Per la parte riguardante l'archiviatore documentale ci si riferisce al fron- TDB Web " così come era stato stabilito dalla tend del portale web come " Wintech Spa. 2.7.1 I Design pattern design pattern G utilizzati per lo sviluppo del layout graco sono: Figura 10: Design pattern MVC • MVC, Model View Controller G: Si tratta di un design pattern G usato per lo sviluppo di software che prevede la propattern è implementato lato client, quindi risiede nel browser dell'utente consentendo l'alleggerimento del server e una maggiore rapidità nella rielaborazione dei calcoli. Separa la logica di presentazione dei dati dalla logica di business architetturale grammazione ad oggetti. Tale (applicativa) in tre componenti: il Model fornisce i metodi per accedere ai dati per l'applicazione il View visualizza i dati contenuti nel model e si occupa dell'interazione con l'utente il Controller riceve i comandi dell'utente e li attua modicando lo stato degli altri due componenti. 20 • G Singleton : Si tratta di un design pattern creazionale G che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza. 21 2.7.2 Modulo anagrache L'architettura dell'applicazione • WOW Front end: strato in cui risiede il portale web che racchiude tutta la logica graca visualizzata dal • è suddivisa in tre strati: browser dell'utente Back end contiene la logica dei servizi interposta tra il e la base dati. Interroga il database, front end attinge i dati richiesti, li rielabora, li sistema e restituisce informazioni spurie in formato JSON • Base dati contiene la raccolta dei dati utilizzati del programma TDB8. front end e back end avviene con chiamate asincrone grazie ai web services G resi disponibili da $http di AngularJS. Le opportunità che AngularJS ore allo sviluppatore sono: La comunicazione tra • get ovvero lettura dati • post cioè la creazione dati • put che ne consente la modica • delete che autorizza la cancellazione dei dati. back end, una volta generati i dati, restituisce le informazioni al front end in formato JSON. Il front end, inne, mostra a video i dati riIl cevuti e garantisce la gestione di tutti i tipi di messaggio, sia di successo sia di errore. Il JSON scambiato è in un formato scelto per convenzione nelle fasi iniziali di progettazione per consentire la comunicazione ecace tra front end e back end. Le pagine delle anagrache con cui si interfaccia l'utente mostrano una lista con le informazioni principali e immediate. Ogni elemento della lista ha il relativo pulsante "azioni" che consente la modica, la creazione e l'eliminazione dei dati. Ogni elemento è cliccabile per la visualizzazione dei dettagli. Ogni anagraca compare con il relativo stato che viene evidenziato da un particolare marcatore (ad esempio un cliente non solvibile viene marcato di rosso oppure il cliente non attivo compare in grigio). L'anagraca dei clienti contiene dei pulsanti che consentono di espandere due liste nascoste contenenti le sedi e i contatti relativi al cliente. Anche le due liste citate contengono i pulsanti "azioni" e la possibilità di vederne i dettagli. 22 Figura 11: Esempio lista anagraca Le pagine di dettaglio delle anagrache mostrano le informazioni raggruppate per tipologie (dettagli anagraci, di amministrazione, di qualicazione). Ciascun raggruppamento dispone di una barra di progresso che illustra la percentuale di completamento delle informazioni inserite. Le pagine di dettaglio dispongono di dere tutte le operazioni CRUD. shortcut che consente di intrapren- Le pagine relative ai clienti contengono una specica aggiuntiva: i dati relativi alle diverse sedi vengono visualizzati in modo dinamico evitando di dover ricaricare la pagina ad ogni selezione. Figura 12: Dettaglio anagraca cliente 23 I form G di inserimento dati dell'intera applicazione presentano una simbologia prestabilita per i campi obbligatori (input con sfondo giallo). La validazione dei campi viene segnalata in tempo reale con una bordatura rossa se contiene degli errori. Soltanto dopo aver cliccato il pulsante di salvataggio vengono mostrati i messaggi di errore. Un'ulteriore validazione viene eseguita nello strato back end per garantire la correttezza dei dati prima di salvarli nella base dati. Figura 13: Esempio form inserimento anagraca 24 2.7.2.1 Struttura package La struttura dei • Package G è stata così denita: Components: cartella che contiene tutte le librerie usate nello sviluppo • Controller: • Model: package package che contiene tutti i controller delle pagine che contiene tutta la logica che si occupa della ricezione e manipolazione dei dati • View: package che contiene i le sottocartelle per i • Service: package CSS HTML. Sono presenti anche delle e le immagini usate nella visualizzazione che contiene dei servizi singleton G trasversali all'intera applicazione e usabili da tutti i moduli • package contenente i componenti scritti come direttiva di AngularJS. Sono componenti che estendono il linguaggio HTML o che modicano il comportamento di un elemento HTML standard. Le direttive di AngularJS sono gli unici componenti autorizzati a manipolare il DOM G e quindi ad intervenire sull'interfaccia utente Directive: 25 2.7.3 Modulo robot mail La funzionalità Robot mail è stata ideata per aumentare il livello di astrazione dell'archiviazione delle informazioni attualmente presente in TdB, puntando ad avere uno strumento dinamico in grado di frapporsi tra mittente e destinatario e in grado di interpretare il contenuto dell'email così da elaborare nel migliore dei modi l'archiviazione dell'informazione. Il Robot mail interagisce con il mittente e gli mette a disposizione uno strumento con il quale l'utente può modicare i dati di archiviazione nel caso non dovessero essere univoci o corretti. Figura 14: Funzionamento Robot mail Gli attori presenti nell'architettura sono: • Utente: persona sica che invia/riceve le mail e interagisce con il portale • Robot mail: sistema che interagisce con l'utente tramite email e comunica con il web service per ricevere le anagrache e salvare l'archiviazione • • Portale TdB Web: viene utilizzato dall'utente e comunica con il web service per ricevere le anagrache e salvare i dati Web service: sistema che permette di astrarsi dal tipo di struttura hardware G che si trova nello strato inferiore in modo da permettere una scalabilità dell'architettura 26 • Database: DB TdB Web: database interno per il salvataggio dei dati di archiviazione in fase di elaborazione DB TdB: database utilizzato dall'attuale sistema di raccolta dati Il usso di comunicazione tra gli attori ad alto livello funziona come segue: l'utente fa la sua richiesta di archiviazione al mail; il robot chiede al web service robot attraverso la i dati che gli servono per compiere la sua analisi dopodiché dà una risposta all'utente e nello stesso momento salva il suo calcolo; l'utente esegue un'azione dalla mail ricevuta e visualizza una pagina del portale web; in base alla pagina in cui si trova l'utente può compiere delle azioni e queste saranno salvate. service Il web in tutto questo deve fare da interprete tra le richieste ricevute e le chiamate da fare allo strato inferiore dove sono immagazzinati i dati. La comunicazione tra web service e il database che contiene i dati del- le anagrache deve essere strutturata in maniera indipendente dal tipo di database utilizzato, in modo che se venisse sostituito, gli attori che comunicano con il web service non vedrebbero nessun cambiamento. 27 2.7.3.1 Casi d'uso Gli attori sono: • • Utente: attore umano che interagisce con il Web G robot mail e con TdB Robot mail: sistema software che analizza le email e ne suggerisce l'archiviazione • DB TdB Web: sistema software che rappresenta il database utilizzato da 28 TdB Web Interazione tra utente e robot mail Figura 15: UC interazione tra utente e robot mail Vengono di seguito esemplicati gli UC G riportati nella gura sovra- stante: Inserimento tag nell'oggetto Attori Utente L'utente aggiunge nell'oggetto della mail dai tag, Descrizione con dei caratteri sentinella specici, che faranno capire al robot dove l'utente vuole archiviare la mail Pre-condizioni Post-condizioni Sequenza alternativa Post-condizioni L'utente vuole archiviare una mail I tag sono stati inseriti L'utente non inserisce nessun tag ma lascia solo l'oggetto Nell'oggetto non sono presenti tag Tabella 2: UC inserimento tag nell'oggetto 29 Invio della mail al Robot Attori Utente L'utente invia o inoltra la mail da archiviare al robot mail. La casella di posta del robot viene messa Descrizione tra i destinatari in Cc nel caso di archiviazione diretta o come destinatario dell'inoltro nel caso l'utente volesse archiviare una mail che è già stata inviata precedentemente Pre-condizioni L'utente ha aggiunto nell'oggetto i tag 1. L'utente ha aggiunto i tag nell'oggetto della mail da archiviare Sequenza di eventi 2. L'utente aggiunge la casella di posta del robot in Cc o come destinatario dell'inoltro 3. La mail viene inviata Post-condizioni La mail è stata inviata al robot correttamente Risultati attesi La mail inviata viene ricevuta dal robot mail Tabella 3: UC invio della mail al Robot 30 Il robot riceve la mail Attori Descrizione Pre-condizioni Robot mail Il robot mail riceve la mail dell'utente, la analizza e invia una risposta Il robot mail è sempre in attesa per la ricezione delle mail 1. Il robot mail è in attesa 2. Il robot mail riceve la mail dell'utente 3. Il robot mail estrae i tag presenti nell'oggetto e le informazioni della mail Sequenza di eventi 4. Il robot mail con un algoritmo cerca di associare ai tag analizzati un'archiviazione corretta 5. Il robot mail risponde al mittente con i dati di archiviazione elaborati Post-condizioni Risultati attesi La mail ricevuta è analizzata. Il robot mail invia la risposta. Il robot invia la mail di risposta che viene ricevuta dall'utente Tabella 4: UC il robot riceve la mail 31 Salvataggio dati temporanei Attori Robot mail, DB TdB Web Il robot dopo aver analizzato la mail ricevuta elabo- Descrizione ra un i dati di archiviazione e li salva nel database del portale TdB Web Pre-condizioni Il robot ha analizzato la mail ed elaborato un'archiviazione 1. Il robot mail ha ricevuto la mail dell'utente Sequenza di eventi 2. Il robot analizza la mail 3. Il robot mail salva i dati elaborati nel database Post-condizioni Risultati attesi I dati elaborati sono salvati nel database del portale TdB Web I dati elaborati sono salvati nel database del portale TdB Web Tabella 5: UC salvataggio dati temporanei 32 Associazione singola, nessuna associazione e associazione multipla Si denisce "associazione singola" il caso in cui il robot mail, durante la sua analisi dei dati, riesce ad elaborare una sola associazione valida. Con "nessuna associazione" si intende invece indicare il caso in cui il robot mail, durante la sua analisi dei dati, non riesce ad elaborare un'associazione con alcuna entità. Con "associazione multipla" ci si riferisce al caso in cui il robot mail, durante la sua analisi dei dati, riesce ad elaborare più di un'associazione valida. Figura 16: UC interazione utente con mail associazione archiviazione singola Figura 17: UC interazione utente con mail nessuna associazione archiviazione 33 Figura 18: UC interazione utente con mail associazione archiviazione multipla Vengono di seguito esemplicati gli UC riportati nelle gure sovra- stanti: Ricezione mail di risposta dal robot mail Attori Utente L'utente riceve la mail di risposta dal robot mail e Descrizione ha a disposizione varie azioni all'interno di questa mail Pre-condizioni L'utente deve aver inviato la mail al robot mail 1. L'utente invia una mail al robot con una specica struttura di tag Sequenza di eventi 2. Il robot risponde a questa mail con il dettaglio dell'analisi 3. L'utente riceve la mail di risposta e può compiere delle azioni su di essa Post-condizioni L'utente ha ricevuto la mail con successo Tabella 6: UC ricezione mail di risposta dal robot mail 34 Click su link Se non visualizzi correttamente questa mail... Attori Utente L'utente può cliccare sul link Se non visualizzi correttamente questa mail... per scatenare l'evento di apertura della pagina associata. La pagina che si Descrizione apre mostra la mail in formato web e quindi non vincolata al client di posta utilizzato che può, in alcuni casi, alterare la struttura originale della mail o non mostrare le immagini all'interno di essa L'utente deve aver inviato la mail al robot mail Pre-condizioni e deve aver ricevuto la mail di risposta. L'utente deve essere connesso ad internet per poter aprire la pagina web. 1. L'utente invia una mail al robot con una specica struttura di tag 2. Il robot risponde a questa mail con il dettaglio dell'analisi 3. L'utente riceve la mail di risposta Sequenza di eventi 4. L'utente clicca sul link di apertura della pagina web 5. Nel browser si apre la pagina e mostra la mail in formato web 6. L'utente può compiere le stesse azioni che può fare nella mail ricevuta Post-condizioni Sequenza di errore Il browser si è aperto e mostra la mail in formato web Il pc dell'utente non è connesso alla rete e non può visualizzare la mail in formato web La Risultati attesi mail sualizzata di risposta nel risulta formato correttamente voluto e con i vidati giusti Tabella 7: UC click su link Se non visualizzi correttamente questa mail... 35 Nessuna azione sulla mail di risposta Attori Utente L'utente può decidere di non eseguire nessuna azio- Descrizione ne sulla mail di risposta ricevuta. In questo caso l'utente ha la necessità di rinviare ad un secondo momento l'azione sulla mail Pre-condizioni L'utente deve aver inviato la mail al robot mail e deve aver ricevuto la mail di risposta. 1. L'utente invia una mail al robot con una specica struttura di tag Sequenza di eventi 2. Il robot risponde a questa mail con il dettaglio dell'analisi 3. L'utente riceve la mail di risposta Post-condizioni Risultati attesi Nessuna azione è stata intrapresa L'archiviazione risulta pendente nel sistema TdB Web Tabella 8: UC nessuna azione sulla mail di risposta 36 Click su bottone Modica archiviazione suggerita Attori Utente L'utente può cliccare sul pulsante di modica per Descrizione correggere i dati elaborati dal Robot mail o specicare altri dati di archiviazione. Al click si scatena l'evento di apertura della pagina associata. L'utente deve aver inviato la mail al robot mail Pre-condizioni e deve aver ricevuto la mail di risposta. L'utente deve essere connesso ad internet per poter aprire la pagina web. 1. L'utente invia una mail al robot con una specica struttura di tag 2. Il robot risponde a questa mail con il dettaglio dell'analisi Sequenza di eventi 3. L'utente riceve la mail di risposta 4. L'utente clicca sul pulsante di apertura della pagina web 5. Nel browser si apre la pagina web Post-condizioni Sequenza di errore Risultati attesi Il browser si è aperto e mostra la pagina del portale TdB Web Il pc dell'utente non è connesso alla rete e non può visualizzare la pagina La pagina di modica è visualizzata nel browser Tabella 9: UC click su bottone Modica archiviazione suggerita 37 Click su bottone Annulla archiviazione suggerita Attori Utente L'utente può cliccare sul pulsante di annullamento Descrizione per annullare l'archiviazione elaborata dal Robot mail. Al click si scatena l'evento di apertura della pagina associata. L'utente deve aver inviato la mail al robot mail Pre-condizioni e deve aver ricevuto la mail di risposta. L'utente deve essere connesso ad internet per poter aprire la pagina web. 1. L'utente invia una mail al robot con una specica struttura di tag 2. Il robot risponde a questa mail con il dettaglio dell'analisi Sequenza di eventi 3. L'utente riceve la mail di risposta 4. L'utente clicca sul pulsante di apertura della pagina web 5. Nel browser si apre la pagina web Post-condizioni Sequenza di errore Risultati attesi Il browser si è aperto e mostra la pagina del portale TdB Web Il pc dell'utente non è connesso alla rete e non può visualizzare la pagina La pagina di annullamento è visualizzata browser Tabella 10: UC click su bottone Annulla archiviazione suggerita 38 nel (Solo per UC Associazione singola) Click su bottone Accetta archi- viazione suggerita Attori Utente L'utente può cliccare sul pulsante di accettazione Descrizione di archiviazione per confermare i dati elaborati dal Robot mail. Al click si scatena l'evento di apertura della pagina associata. L'utente deve aver inviato la mail al robot mail Pre-condizioni e deve aver ricevuto la mail di risposta. L'utente deve essere connesso ad internet per poter aprire la pagina web. 1. L'utente invia una mail al robot con una specica struttura di tag 2. Il robot risponde a questa mail con il dettaglio dell'analisi Sequenza di eventi 3. L'utente riceve la mail di risposta 4. L'utente clicca sul pulsante di apertura della pagina web 5. Nel browser si apre la pagina web Post-condizioni Sequenza di errore Risultati attesi Il browser si è aperto e mostra la pagina del portale TdB Web Il pc dell'utente non è connesso alla rete e non può visualizzare la pagina La pagina di accettazione è visualizzata nel browser Tabella 11: UC click su bottone Accetta archiviazione suggerita 39 Pagina accetta TdB Web Figura 19: UC interazione utente e pagina accettazione archiviazione Vengono di seguito esemplicati gli UC riportati nella gura sovra- stante: Salvataggio dati azione Attori DB TdB Web Il Descrizione sa database salva dall'utente, in il tipo di questo azione caso intrapre- l'accettazione dell'archiviazione suggerita dal robot mail Pre-condizioni L'utente ha cliccato sul pulsante accetta presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante accetta nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. Il database aggiorna il record associato con l'azione di accettazione Post-condizioni L'azione di accettazione dell'archiviazione viene correttamente salvato nel database L'archiviazione associata non viene trovata nel da- Sequenza di errore tabase o perché era già stata fatta un azione o perché non è presente nel database Post-condizioni L'utente visualizza un messaggio di errore Risultati attesi I dati sono salvati nel database Tabella 12: UC salvataggio dati azione 40 Visualizzazione messaggio di successo Attori Descrizione Pre-condizioni Utente L'utente visualizza nello schermo un messaggio di successo che gli comunica l'avvenuta archiviazione L'utente ha cliccato sul pulsante accetta presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante accetta nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. L'utente visualizza il messaggio di successo Post-condizioni L'utente ha avuto la conferma dell'avvenuta archiviazione Tabella 13: UC visualizzazione messaggio di successo Visualizzazione delle informazioni di archiviazione Attori Descrizione Pre-condizioni Utente L'utente visualizza le informazioni di archiviazione che ha accettato L'utente ha cliccato sul pulsante accetta presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante accetta nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. L'utente visualizza le informazioni di archiviazione accettate L'utente Risultati attesi visualizza archiviazione e le un riepilogo informazioni con della i dati mail archiviare Tabella 14: UC visualizzazione delle informazioni di archiviazione 41 di da Pagina annulla TdB Web Figura 20: UC interazione utente e pagina annullamento archiviazione Vengono di seguito esemplicati gli UC riportati nella gura sovra- stante: Salvataggio dati azione Attori DB TdB Web Il Descrizione sa database salva dall'utente, in il tipo questo di azione caso intrapre- l'annullamento dell'archiviazione Pre-condizioni L'utente ha cliccato sul pulsante annulla presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante annulla nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. Il database rimuove il record associato all'archiviazione Post-condizioni L'azione di annullamento dell'archiviazione viene correttamente eseguita L'archiviazione associata non viene trovata nel da- Sequenza di errore tabase o perché era già stata fatta un azione o perché non è presente nel database Post-condizioni L'utente visualizza un messaggio di errore Risultati attesi I dati sono eliminati correttamente Tabella 15: UC salvataggio dati azione annullamento 42 Visualizzazione messaggio di annullamento Attori Utente L'utente Descrizione visualizza nello schermo un messag- gio di annullamento che gli comunica l'avvenuta eliminazione Pre-condizioni L'utente ha cliccato sul pulsante annulla presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante annulla nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. L'utente visualizza il messaggio di conferma avvenuta eliminazione Post-condizioni L'utente ha avuto la conferma dell'avvenuto annullamento dell'archiviazione Tabella 16: UC visualizzazione messaggio di annullamento Visualizzazione delle informazioni di archiviazione Attori Descrizione Pre-condizioni Utente L'utente visualizza le informazioni di archiviazione che aveva elaborato il robot mail L'utente ha cliccato sul pulsante annulla presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante annulla nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. L'utente visualizza le informazioni di archiviazione annullate Risultati attesi Tabella 17: UC L'utente visualizza un riepilogo con i dati archiviazione e le informazione della mail visualizzazione delle informazioni di archiviazione annullata 43 di Pagina modica TdB Web Figura 21: UC interazione utente e pagina modica archiviazione 44 Vengono di seguito esemplicati gli UC riportati nella gura sovra- stante: Visualizzazione form per la modica dell'archiviazione Attori Descrizione Pre-condizioni Utente L'utente visualizza il form dove potrà agire per modicare i dati di archiviazione L'utente ha cliccato sul pulsante modica presente nella mail 1. L'utente ha cliccato sul pulsante modica nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. L'utente visualizza il form con cui può interagire Post-condizioni L'utente ha visualizzato il form di modica L'archiviazione associata non viene trovata nel da- Sequenza di errore tabase o perché era già stata fatta un azione o perché non è presente nel database Post-condizioni Risultati attesi L'utente visualizza un messaggio di errore e interrompe lo script della pagina L'utente visualizza il form di modica e può interagire con esso Tabella 18: UC visualizzazione form per la modica dell'archiviazione 45 Visualizzazione delle informazioni di archiviazione Attori Utente L'utente visualizza le informazioni di archiviazione. Vede i dati di archiviazione preselezionati con i Descrizione dati suggeriti dal robot mail e successivamente aggiornati con i dati selezionati nel form di modica. Vede il riepilogo della mail da archiviare. L'utente ha cliccato sul pulsante modica presen- Pre-condizioni te nella mail. I dati visualizzati inizialmente sono quelli suggeriti dal robot mail. 1. L'utente ha cliccato sul pulsante modica nella mail 2. Il browser apre la pagina del portale TdB Web Sequenza di eventi 3. L'utente visualizza le informazioni di archiviazione elaborate dal robot mail 4. Ad ogni selezione dell'utente le informazioni vengono aggiornate con i dati scelti Post-condizioni Risultati attesi L'utente visualizza i dati di archiviazione che si aggiornano ad ogni selezione utente L'utente ha coscienza dei dati di archiviazione con cui la mail verrà archiviata Tabella 19: UC visualizzazione delle informazioni di archiviazione 46 Click su X rossa sulle informazioni di archiviazione Attori Utente L'utente clicca sulle X rosse presenti su ogni tipolo- Descrizione gia di informazione. Al click vengono rimosse tutte le associazioni di archiviazione presenti. Pre-condizioni L'utente ha cliccato sul pulsante modica presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante modica nella mail 2. Il browser apre la pagina del portale TdB Web Sequenza di eventi 3. L'utente clicca su una delle X rosse presenti nelle informazioni di archiviazione 4. Tutte le informazioni vengono eliminate Post-condizioni Risultati attesi Le informazioni di archiviazione presenti sono state tolte Reset dati di archiviazione Tabella 20: UC click su X rossa sulle informazioni di archiviazione 47 Click pulsante cerca entità Attori Utente L'utente clicca sul pulsante di ricerca dell'entità. Si apre un popup modale che permette all'utente di eettuare una selezione sulla lista dell'anagraca e di ltrarla in base all'input inserito nel campo di Descrizione ricerca. Al click dell'utente su uno degli elementi della lista il popup si chiude. L'utente può chiudere il popup cliccando sul pulsante Chiudi o cliccando sulla X di chiusura o cliccando con il mouse all'esterno dell'area del popup. Pre-condizioni L'utente ha cliccato sul pulsante modica presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante modica nella mail 2. Il browser apre la pagina del portale TdB Web 3. L'utente clicca sul pulsante di ricerca dell'entità Sequenza di eventi 4. Si apre il popup 5. L'utente visualizza la lista dell'anagraca 6. L'utente può selezionare un elemento dalla lista 7. L'utente può ltrare la lista tramite l'input di ricerca 8. L'utente può chiudere il popup Post-condizioni Risultati attesi L'utente ha selezionato un nuovo o È stata selezionato un elemento dall'anagraca o lasciato invariato Tabella 21: UC click pulsante cerca entità 48 elemento lasciato quello precedente chiudendo il popup Nessuna azione Attori Utente L'utente può decidere di non eseguire nessuna azio- Descrizione ne. In questo caso l'utente ha la possibilità di rinviare ad un secondo momento la modica. Pre-condizioni L'utente ha cliccato sul pulsante modica presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante modica nella mail Sequenza di eventi 2. Il browser apre la pagina del portale TdB Web 3. L'utente non eettua nessuna azione nella pagina e la chiude Post-condizioni Risultati attesi Nessuna azione è stata intrapresa L'archiviazione risulta pendente nel sistema TdB Web Tabella 22: UC nessuna azione 49 Click pulsante salva Attori Utente L'utente clicca sul pulsante di salvataggio per consolidare le scelte eettuate. All'utente viene mo- strata la pagina di avvenuto salvataggio. Se l'uten- Descrizione te ha rimosso tutti i dati di archiviazione e non ne ha selezionati di nuovi o semplicemente non sono presenti viene mostrato un messaggio di errore che invita l'utente a compilare i dati. Pre-condizioni L'utente ha cliccato sul pulsante modica presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante modica nella mail 2. Il browser apre la pagina del portale TdB Web Sequenza di eventi 3. L'utente clicca sul pulsante salva 4. Un messaggio di errore appare nel caso di nessun dato di archiviazione selezionato 5. Se sono presenti i dati di archiviazione viene mostrato all'utente la pagina di avvenuto salvataggio Post-condizioni Sequenza di errore Post-condizioni Risultati attesi L'utente ha salvato le modiche Nessuna selezione fatta Lo script della pagina si interrompe mostrando un messaggio di errore che invita a compilare i dati Le modiche sono state fatte e salvate Tabella 23: UC click pulsante salva 50 Click pulsante annulla Attori Utente L'utente clicca sul pulsante di annulla per eliminare Descrizione l'archiviazione. All'utente viene mostrata la pagina di avvenuto annullamento. Pre-condizioni L'utente ha cliccato sul pulsante annulla presente nella mail ricevuta 1. L'utente ha cliccato sul pulsante modica nella mail 2. Il browser apre la pagina del portale TdB Sequenza di eventi Web 3. L'utente clicca sul pulsante annulla 4. Viene mostrato all'utente la pagina di avvenuto annullamento dell'archiviazione Post-condizioni Risultati attesi L'utente ha annullato l'archiviazione e viene mostrata la pagina di avvenuto annullamento L'archiviazione è stata annullata Tabella 24: UC click pulsante annulla 51 2.8 Verica e validazione In questo capitolo vengono descritti i test di verica attuati e le tecnologie coinvolte. Le attività di verica mirano a testare il corretto funzionamento del prodotto. Per la validazione del front end sono stati eettuati due tipologie di test: Test statici Durante lo sviluppo ci si è serviti di un unico strumento di analisi stati- IDE ca ovvero l' warning di sviluppo Webstorm G ; esso permette javascript e HTML. di visualizzare i e gli errori del codice Test dinamici Durante gli sviluppi ci si è serviti di un unico tipo di test per l'analisi G dinamica ovvero i test di unità unità software to autonomo. AngularJS che permettono di esaminare le singole che implementano le funzionalità dotate di funzionamenPer fare questi test è stato utilizzato il componente di chiamato Jasmine. Grazie a questi test si sono vericati i Javascript. Con i test eettuati si è Javascript quasi totale. Per eseguire i test di Jasmine si è utilizzato lo strumento Karma con il quale controller, le direttive e i servizi cercato di avere una copertura del codice si possono lanciare i test da riga di comando. Per rendere tale processo automatico si è creato uno script Gulp avviabile dalla console e capace di eseguire tutti i test e visualizzarne i relativi risultati. Inne sono stati eettuati dei test di validazione Testing) G . L'analista software G UAT (User Acceptance è stato coinvolto nell'utilizzo dell'appli- cazione per vericare che i requisiti iniziali fossero stati implementati correttamente e che il software non generasse errori. In caso di fallimento di uno dei test si genera una segnalazione di che viene corretto e quindi ritestato. 52 bug G 3 Conclusioni In questo capitolo viene fatto un resoconto delle attività svolte, e vengono analizzate le problematiche rilevate durante lo stage. 3.1 Valutazione retrospettiva Gli obiettivi pattuiti prima dell'inizio dello stage hanno subito delle modiche in itinere a causa di strategie aziendali e di nuove esigenze che sopraggiungevano con l'avanzare del progetto. Il focus prioritario della Wintech Spa si è spostato dal modulo anagrache all'archiviatore documentale non lasciando spazio allo sviluppo delle funzionalità social, messe in secondo piano da esigenze di programma. Gli obiettivi obbligatori iniziali sono stati realizzati con successo con la creazione delle pagine anagrache e dell'archiviatore documentale in linea con le richieste avanzatemi. Anche gli obiettivi opzionali aggiuntivi hanno dato esito positivo grazie alla creazione di altre pagine a corredo delle funzionalità principali. G Il committente del progetto ha sempre dato parere positivo nei confronti delle presentazioni dei diversi prototipi che venivano esposti durante i meeting G periodici. 53 3.2 Criticità L'esperienza di stage è stata per me estremamente positiva poiché mi ha consentito di confrontarmi in maniera equa e rispettosa con colleghi con background diversi e anni di anzianità variabili. Lo scambio recipro- co ha fatto emergere una netta demarcazione tra collaboratori giovani e collaboratori esperti. La mia non vuole essere una critica ingrata nei confronti di chi, forte di anni di esperienza, può essere considerato un depositario prezioso di conoscenze, ma semplicemente una critica costruttiva nei confronti del mondo universitario capace di inserire nel mercato del lavoro gente plasmabile e duttile. Una problematica con cui mi sono dovuto scontrare durante la realizzazione del progetto consiste nella documentazione avviso, risulta essere pericolosamente scarsa. software G che, a mio Oserei dire che, l'unico esempio di documentazione sia stato quello prodotto durante lo stage in questione. Tale mancanza comporta un rallentamento nell'inserimento di nuovi protagonisti all'interno di un progetto in atto. Senza contare la ridondanza nei lavori di revisione di precedenti progetti non conclusi. Non avere una documentazione dettagliata delle funzionalità sviluppate mette in dicoltà il dipendente anche nell'eventualità, piuttosto frequente, in cui gli venga chiesto di modicare codice pregresso; in questo caso il tempo impiegato nel rispolverare il lavoro precedente per poter nalmente iniziare a scrivere nuovo codice, viene sprecato e rende la macchina ineciente. Sostituire la documentazione con i soli commenti del codice rappresenta la quotidianità alla Wintech Spa. Questa usanza, retaggio di un vec- chio modo di interpretare il lavoro come produttività in senso stretto, svaluta la documentazione declassandola a "perdita di tempo inutile" e rappresenta un atteggiamento obsoleto che andrebbe svecchiato. 54 3.3 Competenze Durante l'evento Stage-IT ho potuto constatare la distanza tra le competenze fornite dalla laurea triennale e quelle richieste dal mondo del lavoro. Uno dei capisaldi trasmessi dal corso di Ingegneria del Software è l'importanza rivestita dalla progettazione che, in Wintech Spa, risulta essere marginale. Un altro importante insegnamento che del Software Ingegneria mi ha lasciato consiste nella capacità di lavorare in gruppo, modalità preponderante alla Wintech Spa. Durante lo stage sono stato artece della realizzazione di alcuni prototipi graci poichè mancava un'idea iniziale solida. Considero il metodo deduttivo più produttivo di quello induttivo: è indispensabile la continua rivisitazione del concetto iniziale durante la fase di realizzazione mentre, è frustrante e inutile cercare di estrapolare un'idea partendo da continue bozze. Il bagaglio nozionistico con cui mi sono presentato allo stage mi ha consentito di arontare senza dicoltà gli incarichi attribuitemi. Tuttavia l'esperienza di Stage mi ha oerto la possibilità di imparare l'utilizzo di nuovi strumenti tra cui il framework AngularJS e SASS. La Wintech Spa ha dimostrato il suo riconoscimento nelle mie capacità orendomi, nell'ultimo periodo di stage, incarichi anche nella parte di backend. Questo mi ha consentito di sviluppare in Java alcuni compo- nenti e servizi. La graticazione di un ambiente sicuramente imperfetto ma stimolante mi ha spinto a continuare la collaborazione presso l'azienda anche a stage concluso. Considero inne lo stage un'esperienza indispensabile nel mondo universitario ed è una fortuna che il Corso di Informatica lo proponga. 55 3.3.1 Considerazioni nali Alcuni moduli universitari hanno visto una concreta applicazione di quanto insegnato, in particolar modo il corso di Ingegneria del Software, come già accennato sopra, mi ha aiutato durante le varie attività dello stage, riutilizzando metodi e principi che avevo messo in pratica durante il progetto didattico. La progettazione architetturale non sarebbe stata così agile se non avessi avuto almeno un'infarinatura sugli strumenti e le metodologie da utilizzare. Un altro corso di fondamentale importanza è stato quello di Programma- zione ad Oggetti, che mi ha introdotto nel mondo della programmazione object-oriented G , attraverso un insegnamento mirato ed approfondito che consente di riapplicare i concetti appresi in vari linguaggi di programma- Programmazione concorrente e distribuita mi ha impartito OO G e sull'uso del linguaggio Java. Credo che il corso di Programmazione, pur rappresentando inizialmente zione. Anche insegnamenti importanti su come scrivere il codice uno scoglio per la sua dicoltà, fornisca il metodo giusto per approcciarsi alla programmazione e, col senno di poi, molti dei miei colleghi universitari hanno convenuto nel dire che aiuta nella logica che sta dietro ad una corretta codica. Il corso di Algoritmi e Strutture Dati mi ha fornito un prezioso inse- gnamento su quali algoritmi utilizzare nella programmazione e su come strutturare il codice per crearne senza perdere ecienza. Tecnologie Web per avermi insegnato gli linguaggio Javascript e il concetto impre- Sono debitore anche al corso di HTML5, il scindibile di accessibilità G . standard web di Grazie alle conoscenze apprese durante il corso di guaggio SQL Basi di Dati sono riuscito a rapportarmi senza dicoltà con il lizzato nel progetto di stage. Fondamentale è stato il corso di Tecnologie Web 2 sul lin- DB uti- poiché mi ha trasmesso l'importanza della creazione di un'interfaccia ad alta usabilità G , requisito permeante il mio intero progetto. Mi posso, come già accennato, ritenere uno studente soddisfatto. Il bagaglio teorico che il corso di laurea ci ha fornito è stato estremamente prezioso per arontare con consapevolezza il mondo lavorativo. Il progetto di stage è stato per me un trampolino di lancio verso il mondo del lavoro, un'opportunità che deve, a mio avviso, continuare ad essere proposta e imposta perché tassello fondamentale per la carriera di ciascuno studente. 56 4 Glossario Accessibilità: Un contenuto è accessibile quando può essere usato da qualcuno con una disabilità. Serve a garantire l'accesso universale alle risorse del web. AJAX (Asynchronous JavaScript and XML): è una tecnica di sviluppo software per la realizzazione di applicazioni web interattive. Permette di fare richieste asincrone al server così da fare i caricamenti in background senza interferire con il comportamento della pagina. API (application programming interface): si indica ogni insieme di procedure disponibili al programmatore messe a disposizione da servizi web o librerie. Back-end: è un programma con il quale l'utente interagisce indirettamente, in generale attraverso l'utilizzo di una applicazione front-end. In una struttura client/server il back-end è il server. Viene spesso utilizzato in contrapposizione con Front End. Bootstrap: è una raccolta di strumenti liberi per la creazione di siti e applicazioni per il Web. Essa contiene modelli di progettazione basati su HTML e CSS, sia per la tipograa, che per le varie componenti dell'interfaccia, come moduli, pulsanti e navigazione, così come alcune estensioni opzionali di JavaScript. Browser: è un'applicazione per il recupero, la presentazione e la navigazione di risorse sul web. Bug: identica un errore nella scrittura del codice sorgente di un programma software. Business Continuity: si intende la capacità dell'azienda di continuare ad esercitare il proprio business a fronte di eventi avversi che possono colpirla. È composta dall'insieme di attività rivolte a minimizzare gli eetti distruttivi, o comunque dannosi, a seguito di un evento che ha colpito un'organizzazione o parte di essa. Business Intelligence: un insieme di processi aziendali per raccogliere dati ed analizzare informazioni strategiche; la tecnologia utilizzata per realizzare questi processi; le informazioni ottenute come risultato di questi processi. Chrome: è un browser web sviluppato da Google. Client: componente che accede ai servizi o alle risorse di un'altra componente detta server. Cloud Ibrido: è un modello di cloud computing: i servizi sono costruiti su infrastrutture ibride che utilizzano la modalità privata per alcuni aspetti (ad esempio la conservazione dei dati) e la modalità pubblica per altri (ad esempio le interfacce di accesso). Committente: è la gura che commissiona un lavoro, indipendentemente dall'entità o dall'importo. 57 Continuous integration: è una pratica che si applica in contesti in cui lo sviluppo del software avviene attraverso un sistema di versioning. Consiste nell'allineamento frequente dagli ambienti di lavoro degli sviluppatori verso l'ambiente condiviso. Negli ambienti di integrazione sono predisposti test automatici che gli sviluppatori possono eseguire immediatamente prima di rilasciare i loro contributi verso l'ambiente condiviso, in modo da garantire che le modiche non introducano errori nel software esistente. CRUD: acronimo per le funzioni di creazione, lettura, modica ed eliminazione. CSS (Cascading Style Sheets): è un linguaggio usato per denire la formattazione di documenti HTML, XHTML e XML ad esempio i siti web e relative pagine web. Customer service: è la fornitura di servizi ai clienti prima, durante e dopo l'acquisto di un prodotto o di una prestazione. Custom Web Applications: progetto realizzato su misura in base alle necessità del committente e della funzione specica che è destinato ad assolvere. Cybercrime: è un fenomeno criminale che si caratterizza nell'abuso della tecnologia informatica sia hardware che software, per la commissione di uno o più crimini. Database relazionale: è un modello logico di rappresentazione o strutturazione dei dati di un database implementato su sistemi di gestione di basi di dati (DBMS), detti perciò sistemi di gestione di basi di dati relazionali (RDBMS). DBMS (Database Management System): è un sistema software progettato per consentire la creazione, la manipolazione e l'interrogazione eciente di database e ospitato su architettura hardware dedicata (server) oppure su semplice computer. Deploy: è la consegna o rilascio al cliente, con relativa installazione e messa in funzione o esercizio, di una applicazione o di un sistema software tipicamente all'interno di un sistema informatico aziendale. Design pattern: è un concetto che può essere denito "una soluzione progettuale generale ad un problema ricorrente". Si tratta di una de- scrizione o modello logico da applicare per la risoluzione di un problema che può presentarsi in diverse situazioni durante le fasi di progettazione e sviluppo del software, ancor prima della denizione dell'algoritmo risolutivo della parte computazionale. È un approccio spesso ecace nel contenere o ridurre il debito tecnico. Design pattern architetturale: operano ad un livello diverso (e più ampio) rispetto ai design pattern, ed esprimono schemi di base per impostare l'organizzazione strutturale di un sistema software. In questi schemi si descrivono sottosistemi predeniti insieme con i ruoli che essi 58 assumono e le relazioni reciproche. Design pattern creazionale: nascondono i costruttori delle classi e mettono dei metodi al loro posto creando un'interfaccia. In questo modo si possono utilizzare oggetti senza sapere come sono implementati. Digital Trasformation: si indica un insieme di cambiamenti prevalentemente tecnologici, culturali, organizzativi, sociali, creativi e manageriali. Digital Workplace: rappresenta la naturale evoluzione della Intranet: da `semplice' portale operativo o di comunicazione interna a spazio digitale aziendale dove tutte le applicazioni e i processi chiave (comunicazione, collaborazione, conoscenza, processi operativi e di business, etc.) sono gestiti attraverso nuove modalità interattive e pratiche di social networking tra i partecipanti. Disaster Recovery: si intende l'insieme delle misure tecnologiche e logistico/organizzative atte a ripristinare sistemi, dati e infrastrutture necessarie all'erogazione di servizi di business per imprese, associazioni o enti, a fronte di gravi emergenze che ne intacchino la regolare attività. Dispositivi desktop: sono computer ssi che non possono essere usati senza il collegamento alla rete elettrica. Documentazione software: è un testo scritto che accompagna un software, con lo scopo di spiegare quali funzionalità assolve il software, come è strutturato e implementato e come lo si utilizza. DOM (Document Object Model): è una forma di rappresentazione dei documenti strutturati come modello orientato agli oggetti. Eclipse: è un ambiente di sviluppo integrato multi-linguaggio e multipiattaforma. Ideato da un consorzio di grandi società quali Ericsson, HP, IBM, Intel, MontaVista Software, QNX, SAP e Serena Software, chiamato Eclipse Foundation. eLearning: s'intende l'uso delle tecnologie multimediali e di Internet per migliorare la qualità dell'apprendimento facilitando l'accesso alle risorse e ai servizi, così come anche agli scambi in remoto e alla collaborazione a distanza. Extranet: è una estensione di una LAN che permette anche a soggetti non operanti all'interno della suddetta rete di accedere a informazioni, servizi e consultare o immettere dati. Font: è un insieme di caratteri tipograci caratterizzati e accomunati da un certo stile graco o intesi per svolgere una data funzione. Font iconici: permettono di utilizzare immagini semplici, come appunto icone, ma a livello di font, quindi con tutti i loro vantaggi in termini di web design: facilmente scalabili, cambio colore, ombre, transizioni più semplici, molto più leggeri di un'immagine. Form: è un termine usato per indicare l'interfaccia di un'applicazione che consente all'utente client di inserire e inviare al web server uno o più 59 dati liberamente digitati dallo stesso. Framework: è un'architettura logica di supporto (spesso un'implementazione logica di un particolare design pattern) su cui un software può essere progettato e realizzato, spesso facilitandone lo sviluppo da parte del programmatore. Front-end: è responsabile dell'acquisizione dei dati di ingresso e della loro elaborazione con modalità conformi a speciche predenite e invarianti, tali da renderli utilizzabili dal back end. Google: è un'azienda statunitense che ore servizi online, con quartier generale a Mountain View in California, nel cosiddetto Googleplex. Hardware: parte sica di un computer, ovvero tutte quelle parti elettroniche, elettriche, meccaniche, magnetiche, ottiche che ne consentono il funzionamento. Help desk: è un servizio aziendale che fornisce informazioni ed assistenza a clienti/utenti, interni o esterni, che hanno problemi nella gestione di un prodotto o servizio, cercando di risolvere il problema stesso attraverso una forma di troubleshooting diretto o da remoto da parte di personale addetto. HTML (HyperText Markup Language), HTML5: è il linguaggio di markup solitamente usato per la formattazione e impaginazione di documenti ipertestuali disponibili nel World Wide Web sotto forma di pagine web. Human Resources: personale che presta la propria attività lavorativa in ente - sia esso pubblico o privato - e in particolar modo i lavoratori dipendenti con il loro capitale umano ovvero la forza lavoro. IBM (International Business Machines Corporation): è un'azienda statunitense, tra le maggiori al mondo nel settore informatico. IDE (integrated development environment): è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma. Spesso l'IDE aiuta lo sviluppatore segnalando errori di sintassi del codice direttamente in fase di scrittura, oltre a tutta una serie di strumenti e funzionalità di supporto alla fase di sviluppo e debugging. Interfaccia graca: è un tipo di interfaccia utente che consente all'utente di interagire con la macchina controllando oggetti graci convenzionali. Intranet: è una rete aziendale privata che utilizza il protocollo TCP/IP ma può estendersi anche con collegamenti WAN. ISO 9001:2008: Sistemi di gestione per la qualità - Requisiti: la norma denisce i requisiti di un sistema di gestione per la qualità per una organizzazione. IT (information technology): indica l'utilizzo di elaboratori e attrezzature di telecomunicazione per memorizzare, recuperare, trasmettere e manipolare dati, spesso nel contesto di un'attività commerciale o di 60 un'altra impresa. Java: è un linguaggio di programmazione orientato agli oggetti a tipizzazione statica, specicatamente progettato per essere il più possibile indipendente dalla piattaforma di esecuzione. Jetbrains: è un'azienda di sviluppo software ceca nata nel 2000 i cui strumenti hanno come mercato gli sviluppatori software e i project manager. JSON (JavaScript Object Notation): è un formato adatto all'interscambio di dati fra applicazioni client-server. Layout responsive: indica una tecnica di web design per la realizzazione di siti in grado di adattarsi gracamente in modo automatico al dispositivo coi quali vengono visualizzati (computer con diverse risoluzioni, tablet, smartphone, cellulari, web tv), riducendo al minimo la necessità dell'utente di ridimensionare e scorrere i contenuti. Linguaggio di markup: è un insieme di regole che descrivono i meccanismi di rappresentazione (strutturali, semantici o presentazionali) di un testo che, utilizzando convenzioni standardizzate, sono utilizzabili su più supporti. Linguaggio di scripting: è un linguaggio di programmazione interpretato destinato in genere a compiti di automazione del sistema operativo (batch) o delle applicazioni (macro), o a essere usato nella programmazione web all'interno delle pagine web. Lotus notes: è il client applicativo ed e-mail di Domino, un software collaborativo client/server prodotto dalla divisione Lotus, di IBM. Meeting: riunione. Metodologia agile: insieme di metodi di sviluppo del software emersi a partire dai primi anni 2000 e fondati su insieme di principi comuni, direttamente o indirettamente derivati dai princìpi del "Manifesto per lo sviluppo agile del software". Fra le pratiche promosse dai metodi agi- li ci sono la formazione di team di sviluppo piccoli, cross-funzionali e auto-organizzati, lo sviluppo iterativo e incrementale, la pianicazione adattiva, e il coinvolgimento diretto e continuo del cliente nel processo di sviluppo. Microsoft: è una delle più importanti aziende d'informatica del mondo. Middleware: insieme di programmi informatici che fungono da intermediari tra diverse applicazioni e componenti software. MVC, Model View Controller: è un pattern architetturale molto diuso nello sviluppo di sistemi software, in particolare nell'ambito della programmazione orientata agli oggetti, in grado di separare la logica di presentazione dei dati dalla logica di business. MVVM(model-view-viewModel): è un pattern software architetturale o schema di progettazione software. Notebook: è una tipologia di personal computer che si contraddistingue 61 per essere predisposta al trasporto a mano da parte di una sola persona. Object-oriented (OO): è un paradigma di programmazione che permette di denire oggetti software in grado di interagire gli uni con gli altri attraverso lo scambio di messaggi. È particolarmente adatta nei contesti in cui si possono denire delle relazioni di interdipendenza tra i concetti da modellare (contenimento, uso, specializzazione). Object-relational mapping (ORM): è una tecnica di programmazione che favorisce l'integrazione di sistemi software aderenti al paradigma della programmazione orientata agli oggetti con sistemi RDBMS. Open Source: un software di cui gli autori (più precisamente, i detentori dei diritti) rendono pubblico il codice sorgente, favorendone il libero studio e permettendo a programmatori indipendenti di apportarvi modiche ed estensioni. Package: è una collezione di classi e interfacce correlate. Project management: l'insieme di attività di back oce e front ofce aziendale, svolte tipicamente da una gura dedicata e specializzata detta project manager, volte all'analisi, progettazione, pianicazione e realizzazione degli obiettivi di un progetto, gestendolo in tutte le sue caratteristiche e fasi evolutive, nel rispetto di precisi vincoli (tempi, costi, risorse, scopi, qualità). Project manager: è un ruolo di gestione operativa. Tale gura è il responsabile unico dell'avvio, pianicazione, svolgimento, controllo e chiusura di un progetto facendo ricorso a tecniche di project management. REST (Representational State Transfer): è un tipo di architettura software per i sistemi di ipertesto distribuiti come il World Wide Web. I sistemi che seguono i principi REST sono spesso deniti "RESTful". SASS (Syntactically Awesome Stylesheets): è un'estensione del linguaggio CSS che permette di utilizzare variabili, di creare funzioni e di organizzare il foglio di stile in più le. Scalabilità: capacità di un sistema di "crescere" o diminuire di scala in funzione delle necessità e delle disponibilità. Un sistema che gode di questa proprietà viene detto scalabile. Server: è un componente o sottosistema informatico di elaborazione e gestione del traco di informazioni che fornisce, a livello logico e sico, un qualunque tipo di servizio ad altre componenti che ne fanno richiesta attraverso una rete di computer, all'interno di un sistema informatico o anche direttamente in locale su un computer. Server IBM Lotus Domino: è un prodotto server di IBM che fornisce strumenti enterprise per email, strumenti collaborativi e una piattaforma applicativa. Single-page: applicazione web o un sito web che può essere usato o consultato su una singola pagina web con l'obiettivo di fornire una esperienza utente più uida e simile alle applicazioni Desktop dei sistemi operativi 62 tradizionali. Single signon: è la proprietà di un sistema di controllo d'accesso che consente ad un utente di eettuare un'unica autenticazione valida per più sistemi software o risorse informatiche alle quali è abilitato. Singleton: è un design pattern creazionale che ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza. Smartphone: è un telefono cellulare con capacità di calcolo, di memoria e di connessione dati molto più avanzate rispetto ai normali telefoni cellulari, basato su un sistema operativo per dispositivi mobili. Social software: riguarda tutte quelle applicazioni software che consentono agli individui di incontrarsi, interagire e collaborare in rete ed, in particolare, di creare comunità on-line. Software: è l'informazione o le informazioni utilizzate da uno o più sistemi informatici e memorizzate su uno o più supporti informatici. Tali informazioni possono essere quindi rappresentate da uno o più programmi, da uno o più dati, oppure da una combinazione delle due. Software-Dened: tecnologie in grado di denire in modo logico le principali componenti di un Data Center: i Server per l'elaborazione dei dati, lo Storage per la conservazione dei dati, le reti di comunicazione. A questi va poi aggiunto il software di gestione dell'insieme dell'infrastruttura. SQL Server: è un DBMS relazionale prodotto da Microsoft. Standup meeting: è un incontro in cui i partecipanti in genere partecipano in piedi. Il disagio di stare in piedi per lunghi periodi ha lo scopo di tenere gli incontri brevi. Viene usato negli incontri giornalieri dei team di sviluppo. Subversion (SVN): è un sistema di controllo versione per software. System Integrator: azienda (o uno specialista) che si occupa dell'integrazione di sistemi. Tablet: è un dispositivo elettronico che sostituisce in pieno o in parte un computer, adatto per lavorare, studiare o giocare. Tag: è una parola chiave o un termine associato a un'informazione, che descrive l'oggetto rendendo possibile la classicazione e la ricerca di informazioni basata su parole chiave. Task manager: è un'applicazione di un sistema operativo che permette di monitorare tutti i processi in esecuzione su un computer, sia quelli visibili ovvero direttamente utilizzati dall'utente sia quelli che vengono eseguiti in background. TDB8 (Technologies for dynamic business): è la soluzione CRM, basata su piattaforma Lotus Notes, che consente di amplicare il controllo dell' attività aziendale, organizzando i ussi di informazione presenti nell' azienda e massimizzando il valore di tutte le informazioni vitali, che 63 spesso vengono perdute o non gestite all' interno delle organizzazioni. TdB Web: Usato nel progetto di stage per riferirsi alle pagine dedicate all'archiviatore documentale, il quale fa parte di WOW. Test di unità: si intende l'attività di testing (prova, collaudo) di singole unità software. UAT (User Acceptance Testing): test di accettazione utente, una fase di verica dello sviluppo software in cui l'utente nale valida la corrispondenza con i requisiti inizialmente espressi. UC (uses case): è una tecnica usata nei processi di ingegneria del software per eettuare in maniera esaustiva e non ambigua, la raccolta dei requisiti al ne di produrre software di qualità. UML (unied modeling language): è un linguaggio di modellizzazione e specica basato sul paradigma orientato agli oggetti. Usabilità: l'ecacia, l'ecienza e la soddisfazione con le quali determinati utenti raggiungono determinati obiettivi in determinati contesti. In pratica denisce il grado di facilità e soddisfazione con cui si compie l'interazione tra l'uomo e uno strumento. Visual Paradigm: uno strumento di progettazione di software per progetti software agili. Web application framework: è un framework software progettato per supportare lo sviluppo di siti web dinamici, applicazioni web e servizi web. Web server: è un'applicazione software che, in esecuzione su un server, è in grado di gestire le richieste di trasferimento di pagine web di un client, tipicamente un web browser. Web services: è un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete ovvero in un contesto distribuito. Web Sphere: denisce la categoria di software middleware (application server) ed è progettato per denire, operare ed integrare applicazioni e-business attraverso multiple piattaforme di elaborazione che usano tecnologia web. Webstorm: è un IDE per la programmazione Javascript. WOW: acronimo utilizzato dall'azienda Wintech Spa per riferirsi al progetto World of Wintech. 64 5 Bibliograa Descrizione azienda Wintech Spa: Gamma. Design patterns. http://www.wintech.it/ Pearson, 2002. Documentazione Bootstrap: http://getbootstrap.com/components/ Documentazione AngularJS: https://docs.angularjs.org/api Documentazione Angular-touch: https://docs.angularjs.org/api/ngTouch Documentazione Angular-animate: ngAnimate https://docs.angularjs.org/api/ Documentazione Angular-bootstrap-ui: io/bootstrap/ https://angular-ui.github. https://lodash.com/docs/ Documentazione Lodash: Documentazione Webpack: http://webpack.github.io/docs/ https://github.com/gulpjs/gulp/blob/master/ docs/getting-started.md Documentazione Gulp: Documentazione Jasmine: html Documentazione Karma: html Documentazione SASS: SASS_REFERENCE.html http://jasmine.github.io/2.5/introduction. http://karma-runner.github.io/1.0/index. http://sass-lang.com/documentation/file. Documentazione Font Awesome: Documentazione Hibernate: 5.2/ Documentazione Junit: Getting-started http://fontawesome.io/icons/ http://hibernate.org/orm/documentation/ https://github.com/junit-team/junit4/wiki/ 65 66