dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi...

89
Corso di Laurea in Informatica (Crema) Dall’analisi dei bisogni allo sviluppo di un applicativo di Business Intelligence RELATORE Prof. Paolo Ceravolo TESI DI LAUREA DI Tamara Quaranta Matr. 828416 Anno Accademico 2015/2016

Upload: others

Post on 18-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Corso di Laurea in Informatica (Crema)

Dall’analisi dei bisogni

allo sviluppo di un applicativodi Business Intelligence

RELATORE

Prof. Paolo Ceravolo

TESI DI LAUREA DI

Tamara Quaranta

Matr. 828416

Anno Accademico 2015/2016

Page 2: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una
Page 3: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Ringraziamenti

Durante la realizzazione di questa tesi molte persone mi sono state vicino e hannocontribuito alla sua realizzazione.

Un ringraziamento particolare al Prof. Paolo Ceravolo per la cortesia e ladisponibilità e soprattutto per il supporto teorico e tecnico.

Un grazie di cuore alla mia tutor Mara Villa, che si è sempre dimostrata attenta epronta ad aiutarmi durante la stesura di questa tesi e ad Elisa Conti, per la sua

disponibilità. Grazie anche a Paolo Faedo per il supporto tecnico in azienda.Grazie a Daniela Formenti che è stata un’ottima collega e un grande supporto

durante tutto il periodo di stage.Grazie ad Angelo e ai miei genitori che mi hanno incoraggiato e mi hanno sempre

sostenuto durante questi anni.

Page 4: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una
Page 5: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Abstract

La tesi presenta i risultati delle attività svolte durante il tirocinio presso la STMi-croelectronics di Agrate Brianza, il cui obiettivo era quello di ottimizzare i processiinformativi aziendali della funzione HR-Organization Development & Training grazieallo sviluppo di diverse soluzioni, tra cui un sito intranet e un applicativo web perla gestione dei corsi di formazione. Nel dettaglio vengono pertanto presentate lediverse fasi a�rontate, a partire dall’analisi dei processi attuali e raccolta dei requisiti,passando per l’identificazione delle soluzioni ottimali, per arrivare infine ai dettaglitecnici e architetturali delle soluzioni implementate. Vengono inoltre proposti spuntidi sviluppo ulteriori con particolare attenzione alle analisi di Business Intelligence.

Il contesto a cui vengono applicate le attività descritte è quello di un’azienda mul-tinazionale con diverse sedi dislocate sul territorio nazionale ed Europeo e mondiale.In questo scenario, la formazione del personale interno ricopre un ruolo fondamentale:esistono KPI (Key Performance Indicators) specifici volti a definire gli obiettivi daraggiungere in termini di ore di formazione per dipendente. La gestione di tali corsiè un’attività critica e onerosa, che fino ad oggi ha richiesto parecchio lavoro manualeai dipendenti HR, sia per l’organizzazione logistica che per la reportistica.

L’analisi dei processi è stata a�rontata utilizzando gli standard della BPMN(Business Process Modeling Notation) e ha portato a produrre degli esempi di modelliper l’ottimizzazione dei flussi di processo legati alla Need Analysis formativa e allamodalità di gestione e calendarizzazione dei corsi durante l’anno di riferimento. Buo-na parte dell’analisi si è concentrata sull’identificazione dei KPI (Key PerformanceIndicators) e dei CSF (Critical Success Factors) aziendali, al fine di ottenere deiparametri di valutazione e misurazione che permettono di avere una panoramicachiara degli obiettivi da raggiungere e dei risultati ottenuti.

La progettazione delle soluzioni è iniziata con un Feasibility Study focalizzatosui tre scenari coinvolti: il sito intranet del Training, la reportistica e la gestionedei corsi. La raccolta delle specifiche funzionali è stata descritta tramite un RASD(Requirement Analysis and Specification Document). Il primo intervento migliorativoè stato diretto al miglioramento dell’accesso alle informazioni sui corsi da parte deidipendenti, grazie allo sviluppo di un sito web ad hoc. La principale tecnologia

Page 6: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

impiegata è stata Microsoft SharePoint. Le procedure di estrazione delle informazioniattualmente in uso sono state incrementate e migliorate attraverso la creazione dinuovi report basati su SAP Business Objects e Oracle PeopleSoft. Questa reportisticaha permesso di gettare le basi per future attività di Business Intelligence, in quantofondamentali per avere una visione chiara dei diversi ambiti aziendali funzionalealla progettazione e pianificazione dei processi utili al conseguimento degli obiettivi.È stato inoltre sviluppato un applicativo web, rivolto esclusivamente ai dipendentiHR, per facilitare la creazione e calendarizzazione delle sessioni dei corsi e per ac-cedere più rapidamente ad alcune tipologie di report automatizzati. L’architetturaimplementata consta di un’interfaccia realizzata con Backbone.js, un layer di APIsviluppato con Node.js e suddiviso in moduli indipendenti che interagiscono con undatabase non relazionale, nello specifico MongoDB.

L’introduzione di processi e metodologie di Business Intelligence consentirà diestrarre un maggior valore dagli strumenti realizzati e messi a disposizione duran-te questi mesi. Un primo vantaggio deriverà dalla valutazione degli e�etti sullecompetenze lavorative di un determinato percorso formativo rispetto ad un altro;successivamente si potrà analizzare il gap tra le competenze acquisite e quelle attese,in modo da attuare di conseguenza delle strategie di intervento. In futuro sarebbeinteressante arrivare a definire degli indicatori strettamente legati all’ambito produt-tivo, che potranno essere correlati con i percorsi formativi proposti e le competenzeacquisite.

In conclusione, le attività svolte durante il tirocinio sono state di diversa naturae hanno richiesto l’impiego di strumenti e tecnologie di�erenti. Tuttavia, le soluzionianalizzate e implementate hanno consentito di muovere i primi passi verso l’ottimiz-zazione dei processi informativi aziendali del funzione HR. Ognuna di queste potràin futuro essere approfondita e conseguentemente migliorata, mantenendo un focuscostante sull’ottimizzazione delle procedure di Business Intelligence.

Page 7: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una
Page 8: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Indice

1 Il contesto Aziendale 11.1 Scenario Aziendale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 La formazione in azienda . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Analisi dei processi 72.1 Business Process Model . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2 KPI e CSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Value Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3 Progettazione delle soluzioni 213.1 Feasibility study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.1 Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1.2 Possibili soluzioni . . . . . . . . . . . . . . . . . . . . . . . . . 223.1.3 Benefici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2 Requirement Analysis and Specification Document . . . . . . . . . . . 243.2.1 Dominio (Who and Why) . . . . . . . . . . . . . . . . . . . . 243.2.2 Requisiti Funzionali (What) . . . . . . . . . . . . . . . . . . . 263.2.3 Requisiti Non Funzionali (Where) . . . . . . . . . . . . . . . . 263.2.4 Requisiti del processo e manutenzione (When) . . . . . . . . . 26

4 Implementazione delle soluzioni 294.1 Sito web Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.1.1 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 304.1.2 Criticità a�rontate . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2 Reportistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324.2.1 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 32

iii

Page 9: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

iv INDICE

4.2.2 Criticità a�rontate . . . . . . . . . . . . . . . . . . . . . . . . 354.3 Applicazione web per la gestione dei corsi . . . . . . . . . . . . . . . . 37

4.3.1 Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3.2 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 404.3.3 Criticità a�rontate . . . . . . . . . . . . . . . . . . . . . . . . 44

5 Business Intelligence 455.1 Le funzioni della Business Intelligence . . . . . . . . . . . . . . . . . . 465.2 Misurazione dell’impatto sui processi di business . . . . . . . . . . . . 47

5.2.1 Reportistica e Gestione Corsi . . . . . . . . . . . . . . . . . . 485.2.2 Analisi statistica . . . . . . . . . . . . . . . . . . . . . . . . . 515.2.3 Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6 Conclusioni 59

Bibliografia 61

Appendice 63

Page 10: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Capitolo 1

Il contesto Aziendale

1.1 Scenario AziendaleSTMicroelectronics è stata costituita nel 1987 dalla fusione tra due società di

lungo corso nel settore dei semiconduttori, l’italiana SGS Microelettronica e lafrancese Thomson Semiconducteurs, ed è quotata in borsa dal 1994; oggi è presentenel listino del New York Stock Exchange (NYSE:STM), di Euronext Parigi e dellaBorsa Italiana.STMicroelectronics è un’azienda leader nella produzione dei semiconduttori con$6.90B di ricavi durante lo scorso anno.Conta circa 43200 dipendenti nel mondo, di cui circa 8300 lavorano nell’ambito dellaRicerca e Sviluppo con sedi in tutto il mondo.I prodotti ST si trovano in molte tipologie di devices prodotti da molti famosi brand;i prodotti sviluppati riguardano molte aree delloSmart Driving e dell’Internet ofThings tra cui:

• Dedicated Automative ICs

• Discrete & Power transistors

• Analog, Industrial & Power Conversion ICs

• MEMS & Specialized Imaging Sensors

• Digital ASICs

• General Purpose & Secure MCUs EEPROM

1

Page 11: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

2 CAPITOLO 1. IL CONTESTO AZIENDALE

Figura 1.1: Aree di prodotto ST

Figura 1.2: Maggiori clienti ST

I prodotti ST sono presenti praticamente ovunque in quanto si occupa di mi-croelettronica. L’azienda è fortemente impegnata nel raggiungimento della propriamission: apportare un contributo positivo e innovativo alla vita delle persone. Dallagestione e risparmio d’energia alla protezione e sicurezza dei dati, dalle applicazioniper la sanità e benessere della persona agli smart gadget, a casa, in automobile e inu�cio, al lavoro e nel tempo libero. Mission che viene rispecchiata anche dal mottoaziendale: ST life.augmented.La sede principale della Società si trova a Ginevra con molti altri siti aziendali nelmondo.

Page 12: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

1.1. SCENARIO AZIENDALE 3

Figura 1.3: Sedi St nel mondo

Una delle aree in cui da sempre l’azienda ha rivolto gran parte delle risorse ènelle attività di Ricerca e Sviluppo. Quasi un quinto dei dipendenti è impegnatoin R& D e progettazione di prodotto, e nel 2014 l’azienda ha speso circa il 21%dei ricavi in questo ambito. Tra le aziende più innovative del settore, ST possiedequasi 15.000 brevetti e domande di brevetto corrispondenti a più di 9.000 famiglie dibrevetti, comprese 500 nuove domande originali presentate nel 2015. La Società faleva su un ricco portafoglio di tecnologie di fabbricazione dei chip, che comprendeprocessi avanzati CMOS (Complementary Metal Oxide Semiconductor) FD SOI(Fully Depleted Silicon on Insulator), a segnale misto, analogici e di potenza. Findalla sua nascita, ST ha creato una cultura fortemente incentrata sulle partnership enel corso degli anni ha dato vita a una rete mondiale di alleanze strategiche con clientichiave, fornitori, altri produttori di semiconduttori e importanti istituti accademici edi ricerca di tutto il mondo.Per fornire ai clienti una struttura di produzione indipendente, sicura ed economi-camente e�ciente, ST si avvale di una rete mondiale di impianti di Front end (perla lavorazione delle fette di silicio) e Back end (per l’assemblaggio, il collaudo e ilpackaging). I principali impianti di Front end si trovano in Italia ad Agrate Brianzae Catania, in Francia a Crolles, Rousset e Tours e a Singapore. Questi impianti sonoa�ancati da linee di assemblaggio e collaudo di classe mondiale in Cina, Malesia,Malta, Marocco, Filippine e Singapore.

Page 13: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4 CAPITOLO 1. IL CONTESTO AZIENDALE

Figura 1.4: Evoluzione del segmento di mercato ST

L’avanguardia dell’azienda si riflette anche nella particolare attenzione rivoltaall’ambiente; è stata una delle prime società industriali globali a riconoscere l’im-portanza della responsabilità nei confronti dell’ambiente. Negli ultimi anni, infatti,diverse sedi, hanno ricevuto più di 100 riconoscimenti per la loro eccellenza in tuttigli ambiti della Sostenibilità: dalla qualità e responsabilità per i prodotti alla cor-porate governance, agli aspetti sociali, alla salute e sicurezza del personale fino allaprotezione dell’ambiente.Per il conseguimento del successo aziendale rivestono un ruolo fondamentale glistakeholders, con i quali è necessario mantenere un dialogo attivo per capire al megliole loro aspettative e interessi. Allo stesso tempo l’azienda ha la possibilità di spiegarela propria attività, i vincoli e le realizzazioni future.Viene posta anche una grande attenzione ai feedback che i portatori di interesserimandano rispetto alle attività dell’azienda; dal 2012 viene chiesto a tutti gli sta-keholders di compilare un survey per ottenere delle informazioni utili per le scelteproduttive e organizzative future.Anche i dipendenti hanno la possibilità di dar voce alla propria opinione e daresuggerimenti in base all’esperienza lavorativa quotidiana.

Page 14: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

1.2. LA FORMAZIONE IN AZIENDA 5

Figura 1.5: Organigramma Corporate ST

1.2 La formazione in aziendaTra i diversi ambiti di sviluppo e di interesse aziendale, ricopre un ruolo impor-

tante la formazione del personale.STMicroelectronics propone un ampio catalogo e programmi ad hoc, sia in ambitotecnico che comportamentale e manageriale, per lo sviluppo delle competenze deipropri dipendenti.A livello Corporate una particolare attenzione è stata rivolta soprattutto al raggiungi-mento degli standard di conformità rispetto alla formazione in ambito della sicurezzaaziendale, ad esempio sicurezza di base, corsi antincendio, rischio chimico, etc..La sede di Agrate Brianza, insieme ad altri siti come Marcianise, Catania, Napoli,Grenoble, Prague, organizza regolarmente conferenze e incontri con studenti chestanno frequentando scuole tecniche per informarli sul lavoro di STMicroelectronicse il settore industriale di riferimento.I dipendenti partecipano regolarmente agli incontri high-tech e a fiere del settorepresentando, anche con dimostrazioni pratiche, i prodotti realizzati.L’Organizational Development & Training ha la priorità di soddisfare i bisogni forma-tivi delle singole organizzazioni (produttive, di ricerca, di sviluppo, ...) presenti nellasede al fine di garantire un’adeguata formazione personale e professionale, mantenen-do degli elevati standard aziendali. I corsi infatti spaziano dall’apprendimento dicompetenze base all’approfondimento di competenze specifiche sia in ambito tecnico

Page 15: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

6 CAPITOLO 1. IL CONTESTO AZIENDALE

sia di sviluppo personale.Gli utenti possono accedere al catalogo corsi, presente sull’intranet aziendale, iscri-versi ad un corso di proprio interesse e di seguito partecipare. I corsi selezionatidovranno essere attinenti all’ambito lavorativo del dipendente al fine di garantiremigliori performance relativamente al ruolo rivestito.Per raggiungere questi obiettivi e per garantire un’o�erta adeguata, il dipartimentoe�ettua una capillare e attenta analisi dei bisogni aziendali, sia ad un livello dibisogni macro-organizzativi sia entrando nel dettaglio del piano di sviluppo di ognisingolo dipendente. Per questo motivo il calendario corsi molto ricco e che permetteai dipendenti di poter frequentare le sessioni dei corsi in base anche agli impegnilavorativi.Oltre all’attenzione rivolta si dipendenti, l’azienda o�re molteplici opportunità distage in collaborazione con scuole superiori e università (come ad esempio attraversoil progetto "Alternanza scuola-lavoro") dando la possibilità agli studenti di poter fareun’esperienza lavorativa in una multinazionale.Oltre ai corsi vengono proposti dei percorsi formativi di sviluppo personali estesi atutti i dipendenti indipendentemente dalla sede, come ad esempio il percorso MIMrivolto a tutti i Junior Professional.

Figura 1.6: esempio di percorso formativo per Junior Professional

Page 16: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Capitolo 2

Analisi dei processi

STMicroelectronics ha come mission quella di contribuire al miglioramento dellaqualità di vita delle persone attraverso le sue tecnologie.Ogni dipartimento lavora per raggiungere questi obiettivi attraverso un’attenta eminuziosa organizzazione del lavoro e delle attività produttive e di ricerca.

Figura 2.1: Obiettivi di qualità

Per il conseguimento degli obiettivi aziendali viene riconosciuto il ruolo fonda-mentale della formazione dei propri dipendenti; formazione non solamente tecnicama anche di sviluppo delle competenze personali e manageriali e miglioramento dellecompetenze relazionali e di lavoro in team.La priorità del dipartimento è di assicurare la soddisfazione dei bisogni formatividelle organizzazioni nella loro capacità di gestire nuovi obiettivi di crescita.

7

Page 17: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

8 CAPITOLO 2. ANALISI DEI PROCESSI

All’interno dell’Organizational Development & Training i i responsabili delle diversefamiglie corsi presenti nel catalogo in modo tale garantiscono un migliore organizza-zione del lavoro e proporre degli adeguati percorsi formativi per il loro ambito.L’o�erta formativa propone programmi che integrano metodologie tradizionali e in-novative, come coaching, counseling, etc., utilizzando sia le competenze di dipendentiinterni che avvalendosi della collaborazione di consulenti esterni, ponendo anchemolta attenzione ai feedback ricevuti dai partecipanti ai corsi.

La valutazione dei corsi erogati viene e�ettuata sulla base del Metodo di valuta-zione Kirkpatrick. Il metodo utilizzato è stato elaborato da Donald Kirkpatrick nel1969 e basato su 4 livelli su cui impatta la formazioneI livelli analizzati sono:

• Livello 1: Reazione

• Livello 2: Apprendimento

• Livello 3: Trasferimento sul lavoro

• Livello 4: Risultati di Business

Il livello 1 raccoglie e analizza tutte le reazioni dei destinatari della formazionerispetto al livello di soddisfazione, interesse e gradimento del corso e il gradimentodel corso sul piano didattico, organizzativo e sociale. Il feedback ricevuto subito dopola partecipazione permette un controllo e un conseguente miglioramento dell’attivitàproposta.Il secondo livello si focalizza sull’e�cacia delle metodologie utilizzate per favorirel’apprendimento. Vengono utilizzati dei questionari da somministrare prima dellapartecipazione al corso (pre-test) e alla fine dell’attività formativa (post-test) inmodo da monitorare l’impatto che la metodologia di insegnamento ha avuto suipartecipanti.Il livello 3 analizza quanto di quello che è stato appreso è stato possibile trasferire inambito lavorativo; valuta quindi quali cambiamenti nel comportamento sul lavorosono derivati dalla formazione. Non sempre quello che è stato appreso viene applicatonella stessa misura in termini concreti di modifica del comportamento in ambitoaziendale.L’ultimo livello, invece, sposta l’interesse sull’azienda e sull’impatto che la formazioneha avuto in termini di riduzione dei costi, miglioramento dell’e�cacia degli interventi,

Page 18: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

9

incremento della produzione, riduzione dei tassi di turnover e miglioramento delclima aziendale.A livello di sede Continental Italy non vengono valutati i quattro livelli per tutti i corsierogati; solo il primo livello viene richiesto per ogni famiglia di attività formativa.Il secondo livello viene largamente utilizzato per la valutazione dei corsi; mentre illivello 3 attualmente risulta attivo per pochi corsi a livello manageriale. La di�coltànell’estendere questo livello di valutazione risiede nel fatto che, per un’analisi accura-ta, è necessario coinvolgere diverse persone del team del dipendente e dedicare tempoper colloqui e restituzioni di quello che è emerso; risorse e tempistiche spesso di�cilida integrare con le richieste aziendali e produttive. La valutazione del "trasferimentosul lavoro" di ciò che è stato appreso richiede il coinvolgimento di alcuni superiori,dei colleghi di pari grado e dei riporti del dipendente (almeno 4 persone) che hafrequentato il corso e che partecipano all’osservazione del suo comportamento inambito lavorativo. Dopo un periodo temporale di circa 4 mesi è richiesto loro didare un feedback rispetto a quanto osservato. Dopo aver raccolto i dati, il valutatoree�ettua una restituzione con l’interessato in modo da potersi confrontare su quantoemerso.Per avere una visione più chiara del progetto e per pianificare correttamente unastrategia di intervento è possibile utilizzare l’analisi SWOT a supporto delle decisionifuture. La matrice SWOT viene usata per valutare punti di forza (Strengths), debolez-za (Weaknesses), opportunità (Opportunities) e le minacce (Threats) di un processoaziendale e risulta importante per pianificare le attività utili al conseguimento di unobiettivo prefissato.L’obiettivo dell’Organizational Development & Training è quello di aumentare l’of-ferta formativa, rispondendo in modo adeguato alle esigenze, garantendo un elevatostandard di qualità e un conseguente miglioramento dei diversi aspetti dei singoli corsi.

Page 19: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

10 CAPITOLO 2. ANALISI DEI PROCESSI

Tabella 2.1: SWOT Analysis

2.1 Business Process Model

Al fine di migliorare l’e�cacia e l’e�cienza dei processi risulta opportuno avereuna chiara visione dei processi aziendali, nei quali risultino evidenti i ruoli coinvoltie le loro interazioni. Per questo motivo i processi possono essere descritti attraversoil Business Process Modeling (BPM), rappresentandoli nell’ottica attuale (as-is) e inquella desiderata (to-be).Esistono diverse tecniche di modellazione dei processi che presentano un certo livellodi standardizzazione della notazione grafica; tra questi troviamo Business ProcessModel and Notation (BPMN).Questo standard o�re una notazione grafica dei processi di business basata sui flo-

Page 20: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

2.1. BUSINESS PROCESS MODEL 11

wchart e molto simile ai diagrammi di attività utilizzati in UML (Unified ModelLanguage), molto utile per comprendere e ridefinire le attività coinvolte.All’interno dell’Organizational Development & Training esistono moltissimi processidi�erenti che interagiscono tra loro; nel nostro caso ci focalizzeremo sul processo dipianificazione dell’o�erta formativa annuali e sulla modalità di iscrizione ad un corsoda parte di un dipendente.I referenti dell’Organizational Development & Training raccolgono le richieste, relati-ve ai bisogni formativi; sulla base dei risultati ottenuti negli anni precedenti e sulleattività svolte si cerca di pianificare un calendario corsi per l’intero anno successivo.

Figura 2.2: Pianificazione o�erta formativa annuale

Vengono prese in considerazione tutte le richieste pervenute, ma queste sonovalutate e organizzate in relazione alle priorita’ aziendali e soprattutto in base albudget disponibile per l’anno di riferimento.Inoltre, essendo un’azienda grande e con una notevole o�erta formativa, la gestionedella logistica delle aule a disposizione e dei docenti, che dovranno tenere i corsi,risulta molto complessa. A volte l’azienda deve rivolgersi ad enti esterni sia per lacollaborazione di docenti sia per avere delle ulteriori aule a disposizione.Una volta pianificato definitivamente il calendario delle sessioni dei corsi, esso nondeve ritenersi definitivo ma verrà adattato al reale andamento delle attività in azienda;infatti potrebbero esserci delle sessioni che dovranno essere cancellate o spostate in

Page 21: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

12 CAPITOLO 2. ANALISI DEI PROCESSI

caso di un numero non su�ciente di partecipanti o per altri motivi organizzativi.L’iscrizione e la partecipazione ad un corso da parte di un dipendente richiede l’ap-provazione da parte dal manager di riferimento.Questo per evitare che l’assenza di un dipendente crei problemi a livello produttivoe organizzativo.

Figura 2.3: Conferma iscrizione ad una sessione di un corso di un dipendente

Per questi motivi, il lavoro svolto dall’Organizational Development & Training ,risulta essere molto complesso e di mediazione fra le necessità e le richieste provenientidai diversi attori coinvolti.L’azienda, sia a livello corporate che locale, presta molta attenzione a formare adegua-tamente i propri dipendenti in modo da garantire anche una maggiore competitivitàsul mercato rispetto alle altre aziende del settore.

2.2 KPI e CSFI KPI (Key Performance Indicators) sono una parte importante nella pianifica-

zione degli obiettivi di business e marketing all’interno dell’orizzonte aziendale.Essi rappresentano una misura quantificabile e oggettiva attraverso cui l’azienda puòvalutare il raggiungimento degli obiettivi operativi e strategici prefissati in modo daavere una fotografia chiara della situazione aziendale e una valutazione dell’e�caciadelle strategie messe in atto.La realtà italiana che comprende "Sicilia", che comprende le sedi di Catania e Palermo,

Page 22: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

2.2. KPI E CSF 13

e "Continental Italy", che comprende Agrate Brianza, Aosta, Arzano, Cornaredo,Marcianise e Lecce.

Page 23: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

14 CAPITOLO 2. ANALISI DEI PROCESSI

Tabella 2.2: Key Performance Indicators

Page 24: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

2.2. KPI E CSF 15

L’Organizational Development & Training definisce ogni anno diversi obiettivi chepermettano una pianificazione ponderata delle attività che verranno svolte durantel’anno con la divisione dei rispettivi compiti. L’azienda, a livello corporate, pone unaparticolare attenzione alla formazione dei propri dipendenti e in alcuni ambiti ponedegli standard ben precisi, come ad esempio nell’ambito della sicurezza sono richiestealmeno 4 ore di formazione annua per dipendente. Per questo motivo un livello diformazione adeguato risulta di primaria importanza a tutti i livelli e trasversalmentea tutti i settori. Per cercare di rispondere a questa particolare esigenza, l’azienda si èproposta di migliorare attraverso un’attenta needs analysis dei bisogni dei dipendentie dei responsabili delle singole organizzazioni presenti. I dipendenti sono invitatianche a proporre argomenti e tematiche che vorrebbero approfondire per aumentarela propria performance lavorativa. In base alle richieste raccolte e alle esigenzeaziendali, il dipartimento training può pianificare al meglio l’o�erta formativa perl’anno successivo.Naturalmente, nell’organizzazione dell’o�erta formativa, oltre ai bisogni, è necessariorispettare il budget annuale concesso dall’azienda. L’obiettivo è quello di rispettareil budget assegnato senza che questo impatti negativamente sulla qualità del servizioerogato.Connesso alla contenimento dei costi di formazione e alla specificità di alcune te-matiche a�rontate, quando è possibile l’azienda cerca di incentivare l’a�damentoai corsi al personale interno piuttosto che incaricare aziende di consulenza esterne.Per questo motivo, alle persone selezionate, viene o�erta e garantita la formazionee il conseguimento delle certificazioni necessarie per la docenza. L’impegno deidipendenti che si rendono disponibili ad e�ettuare attività formative, in aula o onthe job, viene riconosciuto e premiato attraverso una cerimonia aziendale annuale.Come anticipato, il dipartimento e l’azienda stessa, pongono particolare attenzionea mantenere degli elevati standard formativi, sia a livello di gradimento che diapprendimento. La scala di riferimento utilizzata per la valutazione, come descrittonel paragrafo precedente, si basa sul modello Kirkpatrick.Attualmente lo standard per il livello 1 che riguarda il gradimento e la soddisfazionedei partecipanti rispetto al corso che hanno frequentato e l’obiettivo per le sediItaliane è ottenere un valore medio superiore al 6.1 su una scala da 1 a 7.Per quanto riguarda, invece, il livello 2 relativo all’apprendimento l’obiettivo è quellodi ottenere un delta positivo tra risultati ottenuti nel pre-test (e�ettuato prima di

Page 25: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

16 CAPITOLO 2. ANALISI DEI PROCESSI

partecipare al corso in oggetto) e i risultati ottenuti alla fine del corso.Nella monitoraggio dei KPI devono essere presi in considerazione anche i CSF

(Critical Success Factors) che sono un elemento utile per le scelte aziendale.In ambito formativo si pone particolare attenzione al numero di sessioni per corsoerogate in un anno.

Tabella 2.3: Critical Success Factors

La calendarizzazione delle sessioni erogate per tipologia di corso viene e�ettuataall’inizio dell’anno sulla base dell’analisi dei bisogni, del budget e degli spazi a dispo-sizione, anche se tuttavia può essere modificato in itinere.Per migliorare l’organizzazione il dipartimento, attraverso un nuovo catalogo e unnuovo sito intranet maggiormente esplicativo, mira a favorire e a facilitare la scelta el’iscrizione da parte di un dipendente ad un corso a catalogo.

In base alla tipologia di corso viene inoltre valutato se è opportuno che i dipen-denti della stessa organizzazione e squadra partecipino alla stessa sessione. In casocontrario, per corsi con una o due sessioni per anno, un dipendente potrebbe doverattendere un lungo periodo di tempo prima di poter frequentare e approfondire undeterminato argomento.

Page 26: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

2.2. KPI E CSF 17

Per questo motivo si pone sempre maggiore attenzione alla collaborazione con ireferenti delle singole organizzazioni presenti nelle diverse sedi.

Per monitorare i processi e il raggiungimento degli obiettivi durante l’anno,vengono fatte delle valutazioni ogni Quarter (3 mesi) in modo da avere una visionesempre aggiornata sui progressi, al fine di mettere in pratica delle possibili attivitàcorrettive. A fine anno viene poi fatta una valutazione complessiva dell’anno trascorsorispetto al raggiungimento degli obiettivi precedentemente prefissati e confrontatacon la situazione degli anni precedenti.Da quanto emerge dai grafici, il livello di gradimento e soddisfazione dei dipendentirelativo ai corsi di formazione frequentati ha raggiunto sempre valutazioni superiorio uguali al 6.1(valore minimo), con un incremento negli ultimi 2 anni.E’ possibile osservare anche un miglioramento delle conoscenze apprese durante ilcorso con un tasso di risposte corrette nettamente superiore nella compilazione delquestionario al termine della formazione in aula.

Figura 2.4: Valutazione media Kirkpatrick Livello 1

Page 27: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

18 CAPITOLO 2. ANALISI DEI PROCESSI

Figura 2.5: Miglioramento dell’apprendimento secondo Kirkpatrick Livello 2

Figura 2.6: Variazione dei costi di training negli ultimi quattro anni

Come si osserva dal grafico viene monitorato il budget utilizzato per la formazione

Page 28: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

2.3. VALUE MODEL 19

e anche la parte di quota che viene gestita attraverso i fondi interprofessionali1.Come si osserva dall’immagine negli ultimi quattro anni sono stati ridotti i costidi training ma sono aumentati i fondi messi a disposizione da organizzazioni dirappresentanza delle Parti Sociali.

2.3 Value Model

Il Value Model è un modello utilizzato per rappresentare quali valori, tra gli attoricoinvolti nel processo, vengono scambiati. All’interno del nostro scenario aziendalegli attori sono i dipendenti aziendali, i dipendenti dell’Organizational Development& Training ed infine l’azienda stessa. Il segmento di mercato di riferimento è quellodella produzione di Microprocessori.

Figura 2.7: Value Model

1I Fondi Interprofessionali per la formazione continua sono stati istituiti con la legge 388/2000con l’obiettivo di di�ondere la pratica dell’aggiornamento e della formazione nelle imprese italiane.I fondi sono organismi associativi di diritto privato, che vengono istituiti in base ad accordiinterconfederali e si alimentano con il contributo dello 0,30% in base alle adesioni delle imprese

Page 29: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

20 CAPITOLO 2. ANALISI DEI PROCESSI

Come rappresentato in figura, STM mette a disposizione un budget annualeda utilizzare per la formazione dei propri dipendenti e questo ambito viene gestitodall’Organizational Development & Training . Il dipartimento raccoglie i bisogniformativi da parte dei dipendenti e in base alle richieste ricevute e al budget eroga l’of-ferta formativa adeguata. I dipendenti, attraverso la frequenza ai corsi, acquisisconodelle competenze utili per la loro mansione e ambiente lavorativo. Attraverso questoscambio l’azienda può usufruire delle maggiori competenze dei propri lavoratori perla competitività sui mercati internazionali. Infatti grazie a dipendenti più competentied e�cienti l’azienda è in grado di introdurre innovazione all’interno del mercatodi riferimento, quello dei microprocessori. Innovazione e qualità risultano esserevalori fondamentali da immettere nel mercato per aumentare il valore aziendale enaturalmente i guadagni che permettono di continuare ad investire sul miglioramentodelle competenze dei propri dipendenti.

Page 30: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Capitolo 3

Progettazione delle soluzioni

3.1 Feasibility study

3.1.1 Scenario

Sito web TrainingL’utente che deve scegliere un corso da frequentare ha la possibilità di consultareun catalogo aziendale con l’o�erta formativa disponibile. Attualmente, l’aziendaha un’o�erta molto ampia ma la ricerca e la consultazione online del catalogo nonrisultano essere intuitive e dettagliate. Non è presente una descrizione esplicativadei singoli corsi e non c’è un raggruppamento per percorso formativo che aiuti ildipendente nella scelta, sebbene i corsis ono raggruppati per aree o in percorsi. Nonsono visibili né le medie delle valutazioni di gradimento, che i singoli partecipanticompilano dopo aver frequentato un corso, né i commenti degli utenti. Queste dueinformazioni potrebbero aiutare maggiormente l’utente a capire quale corso rispondameglio ai suoi bisogni e interessi.

ReportisticaAttualmente i test di valutazione dei corsi, relativi sia al gradimento che all’appren-dimento dei singoli partecipanti (valutazione pre e post frequenza), vengono inviatimanualmente.Anche l’invio dei promemoria relativi alla compilazione devono essere inviati ma-nualmente; i dipendenti dell’Organizational Development & Training devono cercarele singole sessioni dei corsi e inviare una mail ai singoli partecipanti. Sempre per

21

Page 31: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

22 CAPITOLO 3. PROGETTAZIONE DELLE SOLUZIONI

quanto concerne le attività degli utenti dell’Organizational Development & Training,l’attuale sistema non è sviluppato in modo da selezionare ed evidenziare i corsi relativialla Sicurezza con le rispettive scadenze, da cui deriva la necessità di convocare gliutenti che hanno bisogno di rinnovare la certificazione ai sensi di legge.L’utente generico può iscriversi ai corsi ma il sistema attuale permette l’iscrizioneanche se il numero massimo di posti disponibili è stato superato.

Gestione corsiL’utente del dipartimento dell’Organizational Development & Training deve gestire inominativi dei dipendenti iscritti alle liste di attesa per singoli corsi e gestire l’asse-gnamento alle sessioni erogate. Questa attività risulta essere abbastanza complessain quanto deve considerare anche le disponibilità degli iscritti in termini di turnilavorativi e esigenze organizzative. Per una migliore organizzazione sarebbe opportu-no poter gestire le iscrizioni e poterle visualizzare precedentemente. Attualmente ildipendente si iscrive in una lista di attesa del corso di interesse, quando viene attivatauna sessione viene convocato. Successivamente i dipendenti devono confermare lapartecipazione attraverso un’email di conferma. Il responsabile di Training deveinserire i nominativi nella sessione attiva. Naturalmente i posti sono limitati e in basealle conferme i responsabili di training potranno organizzare altri incontri formativi.

3.1.2 Possibili soluzioni

Sito web Training

• Introduzione di una descrizione più dettagliata dei singoli corsi di formazionecon l’aggiunta, dove è possibile, di immagini e filmati che permettano all’utenteuna maggiore facilità nella scelta.

• Utilizzo dei dati relativi ai questionari di valutazione presenti su un altro tool(Kirkweb) per caratterizzare i corsi in base al gradimento di chi ha partecipatoalle sessioni precedenti.

Page 32: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

3.1. FEASIBILITY STUDY 23

• Raggruppamento per aree e percorsi formativi dei corsi o�erti in modo guidareil dipendente nella scelta e sviluppare le competenze in modo mirato e coerente.

• Creazione di un catalogo corsi interattivo e maggiormente intuitivo nella con-sultazione da parte dei dipendenti.

Reportistica

• Facilitare l’interrogazione del DB e l’estrazione dei dati utilizzando un Databaseaziendale aggiornato e integrare i dati non presenti in esso.

• Generare delle query e dei report standard sulla base delle esigenze del di-partimento con un’interfaccia semplificata che permetta di modificare alcuniparametri per l’interrogazione. I report potranno essere salvati in diversi for-mati in modo da facilitarne l’invio a chi lo ha richiesto.

• Inserire un campo per ciascun corso che ne indichi il costo e integrarlo conuna funzione che calcoli il costo complessivo in base alle sessioni erogate per ilperiodo di riferimento selezionato.

• Generazione automatica su base mensile di un report che segnali nominativi ecorsi per cui è necessaria una sessione di aggiornamento.

• Invio settimanale del foglio firme con nominativi dei partecipanti, informazionilogistiche del corso e del docente inviati settimanalmente ai responsabili ditraining, in modo da avere una modulistica condivisa e con informazioni ag-giornate con i database aziendali.

Gestione corsiPer gestire al meglio la creazione e la calendarizzazione delle sessioni dei diversi

Page 33: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

24 CAPITOLO 3. PROGETTAZIONE DELLE SOLUZIONI

corsi sarebbe opportuno sviluppare un’interfaccia web, utilizzata dai dipendentidell’Organizational Development & Training, che permetta la visualizzazione deicorsi e delle sessioni attive e le persone iscritte.Attraverso l’applicazione il responsabile potrebbe gestire il numero, la data e i parteci-panti delle singole sessioni in modo da ottimizzare la pianificazione e l’organizzazionedell’o�erta formativa nei mesi successivi. L’applicazione presenterebbe una sezionespecifica per la gestione dei corsi relativi alla sicurezza aziendale e ai corsi rivoltialle persone addette alle gestione delle emergenze. Un pannello di report permettela generazione, in diversi formati, di alcuni modelli di report standard aggiornatisettimanalmente o quotidianamente.

3.1.3 Benefici

Le diverse soluzioni software sviluppate per rispondere alle esigenze del clientedovrebbero portare ad una riduzione del tempo per l’estrazione dei dati e per lacreazione di report specifici per di�erenti richieste rivolte all’Organizational Develop-ment & Training . I dati sarebbero integrati con una maggiore facilità di gestionee diminuirebbero il numero di possibili errori nei dati, dovuti a modifiche da partedi persone non autorizzate e di errori nell’aggregazione. Anche i report relativi allerendicontazioni e calcolo del budget presenterebbero una minore possibilità di errorenei calcoli in quanto sarebbero automatizzati.I promemoria verrebbero inviati in modo schedulato automaticamente senza la ne-cessità che il dipendente controlli le singole sessioni dei corsi e invii manualmente lamail. Lato utente, il dipendente sarebbe facilitato nella scelta dei corsi in modo dasviluppare le competenze che più gli interessano.

3.2 Requirement Analysis and Specification Do-cument

3.2.1 Dominio (Who and Why)

Sito web IntranetL’interfaccia relativa ai corsi di formazione deve essere utilizzata non solo dai dipen-denti dell’Organizational Development & Training, ma anche da tutti i dipendenti

Page 34: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

3.2. REQUIREMENT ANALYSIS AND SPECIFICATION DOCUMENT 25

dell’azienda. Naturalmente i permessi e la possibilità di accedere a specifiche funzio-nalità sarà di�erente in base al gruppo e al ruolo degli utenti in azienda.All’interno dell’interfaccia deve esserci la possibilità di accedere ad un catalogo corsichiaro e dettagliato, arricchito con immagini e/o video e valutazione degli utenti,in modo da facilitare l’utente nella scelta. Per quest’ultimo scopo, è consigliabileraggruppare i corsi in percorsi formativi per tematiche e competenze.L’interfaccia avrà anche un’area di documenti condivisi per favorire la consultazionedel materiale da parte dei partecipanti ad un determinato corso.

ReportisiticaL’interfaccia per l’utilizzo del database è rivolta esclusivamente ai dipendenti del-l’Organizational Development & Training, questo perchè è presente la necessitàdi estrapolare dati aziendali e sensibili in modo rapido e riducendo al minimo lapossibilità di errore.Considerata la presenza di diversi database aggiornati con tempistiche di�erentiemerge la necessità di riunire le informazioni in un’unica piattaforma.L’Organizational Development & Training necessita di una gestione semplificata eautomatizzata dei costi dei corsi per la creazione del prospetto spese.I template di report creati provvedono alla segnalazione ai dipendenti con corsi ob-bligatori che necessitano di aggiornamento periodico (corsi Sicurezza) per risponderealle normative di legge vigenti.Esiste inoltre la necessità di un invio automatico e schedulato delle email di richiestacompilazione di questionari per la valutazione del gradimento e dell’apprendimentorelativi al corso frequentato.

Gestione corsiL’inter�accia per la gestione dei corsi è rivolta esclusivamente ai dipendenti l’Organi-zational Development & Training. Attraverso l’applicazione gli utenti possono crearesessioni e gestire le iscrizioni prima di inserirle definitivamente a database e questepotranno essere facilmente condivise tra i responsabili di training. L’interfacciao�re la funzionalità di scegliere tra alcuni modelli di report presenti e aggiornatie scaricarli in formato excel o pdf in base alle proprie esigenze. Per supportare iresponsabili della gestione dei corsi di sicurezza aziendale è presente una sezioneapposita per questa tipologia di corsi.

Page 35: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

26 CAPITOLO 3. PROGETTAZIONE DELLE SOLUZIONI

3.2.2 Requisiti Funzionali (What)L’interfaccia DB deve accedere a dati provenienti da di�erenti piattaforme per

generare un unico risultato aggiornato e corretto. Per questo motivo, i dati devonoessere aggiornati giornalmente in modo automatico (aggiornamento notturno).Anche i report devono essere schedulati e inviati automaticamente ai responsabilidella formazione, soprattutto per il monitoraggio e la gestione dei corsi obbligatori.Nel report deve essere riportata anche la data entro cui essi devono essere erogati.I corsi devono essere presentati in modo più chiaro e intuitivo, anche dal punto divista logico e visivo.

3.2.3 Requisiti Non Funzionali (Where)In base alle politiche aziendali, è richiesto l’utilizzo di Microsoft SharePoint per

l’interfaccia utente relativa ai corsi di formazione e al workspace. L’interfaccia dovràinteragire con PeopleFirst (DB Oracle), SAP (per la gestione dei corsi acquistatida fornitori esterni) e fogli Excel utilizzati nella gestione della rendicontazione e deicorsi legati alla sicurezza.I dati esportati sono sensibili e quindi deve essere garantito l’accesso solo a personeautorizzate per evitare la di�usione e l’utilizzo improprio di essi. Inoltre i dati e lepiattaforme devono essere sempre disponibili e con un basso tasso di possibilità dierrore.La scelta del tipo di database e linguaggio di implementazione deve essere ammessodalle politiche aziendali.

3.2.4 Requisiti del processo e manutenzione (When)Il controllo delle funzionalità deve essere costante, in modo da evitare impossibilità

di interrogazione dei DB e impossibilità di accesso ai corsi e documentazione.Particolare attenzione deve essere rivolta alla possibilità di integrare il Softwarecon altre funzionalità (report più dettagliati, gestione della parte testistica) e altritools utilizzati in azienda. Inoltre il codice deve essere facilmente comprensibile emodificabile da altri admin che dovranno intervenire in caso di nuove implementazionie di controllo.

Page 36: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

3.2. REQUIREMENT ANALYSIS AND SPECIFICATION DOCUMENT 27

Figura 3.1: Diagramma dei casi d’uso

Page 37: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una
Page 38: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Capitolo 4

Implementazione delle soluzioni

Di fronte alle esigenze aziendali e alla necessità di rispettare gli standard aziendaliè stato necessario utilizzare diversi tools e interfacce basati su di�erenti tecnologie.

4.1 Sito web Training

L’Organizational Development & Training con sede ad Agrate Brianza e respon-sabili delle sedi appartenenti alla Continental Italy hanno espresso la necessità di unnuovo sito intranet che raccogliesse le informazioni relative all’attività formativa eche fosse di facile navigazione per l’utente.La tecnologia scelta per lo sviluppo di questa soluzione è Microsoft Sharepoint, lacui scelta è conforme agli standard aziendali.Il sito è accessibile dagli utenti connessi all’intranet aziendale e quindi non visibiledall’esterno senza connessione VPN; inoltre, alcune tipologie di risorse sono acces-sibili solo a un target specifico di dipendenti. I permessi sono gestiti attraverso lafunzionalità messa a disposizione da Sharepoint e che consente di associare gruppi diutenti a determinate risorse.L’obiettivo è creare un sito web relativo al training e a tutti gli aspetti ad essoassociati, in modo che gli utenti possano facilmente trovare le informazioni e ilmateriale di loro interesse. Lo spazio web infatti raccoglie tutti i documenti utiliai dipendenti per la scelta del proprio percorso formativo e sono presenti anche lespiegazioni delle procedure che i docenti devono seguire. Per i dipendenti, infatti,è stato creato un catalogo corsi interattivo e la presentazione di alcuni corsi anche

29

Page 39: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

30 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

attraverso un video.

4.1.1 Tecnologie utilizzate

SharepointMicrosoft Sharepoint è una piattaforma di Content Management System che, trat-tandosi di una tecnologia lato server, permette anche la distribuzione di siti weball’interno dell’intranet aziendale.Il software ha lo scopo di permettere la condivisione di informazioni e documenti; dala possibilità di creare liste, repository documentali, calendari, etc. sfruttando anchel’integrazione con gli applicativi del pacchetto O�ce.I documenti possono essere modificati da uno solo utente alla volta utilizza attraversole funzioni di "check-in" e di "check-out" che evitano conflitti sull’utilizzo della risorsacondivisa.

STMicroelectronics da la possibilità ai dipartimenti, dislocati nelle diverse sediaziendali, di creare siti dedicati e di condividere documenti di interesse per il propriolavoro. Per questo fine vengono utilizzati il Workspace, il DocShare e il Survey Center.Il primo viene utilizzato come un sito informale per condividere un processo o unprogetto con il proprio team di collaboratori; il secondo è utilizzato come soluzioneper salvare, gestire e condividere i documenti con altri utenti ed il Survey Centerviene utilizzato per creare e gestire questionari per avere un feedback riguardo adattività svolte in azienda (es. corsi d’inglese).Attraverso l’utilizzo del DocShare vengono condivisi i materiali didattici messi adisposizione dai singoli docenti e relativi ad i corsi erogati.

La piattaforma permette una gestione dinamica e agile dei permessi di accessoalle singole risorse. Bloccando l’ereditarietà, che estenderebbe gli stessi permessi atutto il sito, è possibile gestire le diverse tipologie di utenti in base alle esigenze edevitare che utenti non autorizzati modifichino o cancellino dati importanti.

4.1.2 Criticità a�rontate

Sharepoint o�re diverse funzionalità in base al livello dei permessi associatiall’utente. Solitamente, un’utenza con ruolo di amministratore ha accesso a tutte le

Page 40: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.1. SITO WEB TRAINING 31

funzionalità esposte dal prodotto; tuttavia, nel caso di STMicroelectronics, è presenteun’ulteriore livello di controllo e sicurezza esercitato dal dipartimento IT a livelloCorporate (quindi esteso in tutte le sedi). Questo ha determinato l’impossibilità diusufruire a pieno di tutte le potenzialità del prodotto, ponendo parecchi rallentamenti(es. richiesta di permessi, risorse, etc.) e limiti alle scelte progettuali e implementative.

Page 41: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

32 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

4.2 Reportistica

Diversi modelli di report sono stati impostati per rispondere alle diverse esigenzedell’Organizational Development & Training in termini di estrazione di dati. Leinformazioni presenti in questi report vengono utilizzate per diversi scopi, tra cuila gestione delle sessioni di training, la gestione dei rinnovi per i corsi di sicurezzaaziendale e la risposta a di�erenti richieste da parte dei responsabili delle organizza-zioni interne alla sede e alla Corporate stessa.Per facilitare anche l’organizzazione logistica dei corsi è stato implementato un model-lo di report (foglio firme) che viene aggiornato automaticamente con le informazionidel corso e i nominativi dei partecipanti, e inviato ai responsabili dei training su basesettimanale.Nel caso della sicurezza, il modello creato evidenzia i nominativi dei dipendentiche devono essere convocati in base alle diverse tipologie di corso, facilitandone lagestione che inizialmente veniva svolta manualmente.Tutta la reportistica è stata impostata avvalendosi delle tecnologie messe a disposi-zione dallo scenario aziendale, tra cui SAP Business Objects e Oracle PeopleSoft.

4.2.1 Tecnologie utilizzate

SAP BusinessObjectsBusinessObjects XI (BOXI) è un’applicazione SAP utilizzata per la business in-telligence. O�re soluzioni, da strumenti flessibili di reporting, query e analisi adhoc a cruscotti e visualizzazioni avanzate. SAP Business Objects è un portafogliodi strumenti e applicazioni perfettamente integrate con i software gestionali SAP,utilizzato in azienda per la gestione della fatturazione e dei rapporti commercialicon i fornitori. Esso viene utilizzato per la reportistica, analisi strategica dei dati,qualità delle informazioni, pianificazione e budget. Presenta un’interfaccia utenteche consente l’interrogazione di database SQL anche a chi non ha sviluppato unacompetenza tecnica e permette di salvare la documentazione generata in diversiformati facilmente condivisibili con altri utenti.L’applicativo consente di accedere al database corporate in quanto esso presenta unlivello semantico di business intelligence che permette di lavorare sui dati d’interessesenza modificare direttamente quelli presenti nel database; esso prende il nome diuniverso. In azienda esistono diversi tipi di universi ognuno dei quali presenta delle

Page 42: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.2. REPORTISTICA 33

informazioni relative a dipendenti, posizione lavorativa, sede, formazione, etc. Ogniutente può accedere ad essi e eseguire determinate operazioni in base ai permessisettati sul profilo o sul gruppo di appartenenza dell’utente stesso.Viene utilizzato un Query Panel, dove l’utente seleziona i campi che vuole estrapolaree le condizioni che devono rispettare; la query creata è un tipo di data provider dacui è possibile generare dei reports interattivi utilizzando anche funzioni di drill-downe slice and dice.Il database corporate è costantemente aggiornato e l’universo e/o il report generatopossono essere semplicemente sincronizzati attraverso un refresh.Per rispondere alle esigenze aziendali, sono stati sviluppati, e sono tuttora in via diampliamento, dei report standard che facilitano la generazione di specifici reportda parte del dipartimento. Le query sugli universi disponibili, di�erenti in base aipermessi settanti, sono state impostate attraverso il Query Panel messo a disposizionedal software.

Figura 4.1: Query panel BusinessObjects

Nella parte sinistra del pannello vengono visualizzati gli oggetti, le misure e idettagli che possono essere estratti e su cui è possibile determinare delle condizioni.Nella parte superiore destra è visualizzata la lista degli oggetti estratti dalla queryin oggetto e che verranno usati come intestazione della tabella generata in BO.La parte inferiore, invece, è dedicata alle condizioni (in "And" o in "Or") che vengonoapplicate agli oggetti estratti. Il tool presenta la possibilità di scegliere diversetipologie di condizioni da applicare. Nel caso non sia possibile utilizzare l’ambiente

Page 43: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

34 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

predefinito, BO dispone di un editor SQL che permette di scrivere le query suldatabase in base alle proprie esigenze.

Figura 4.2: Condizioni presenti nel Query panel BusinessObjects

Tra i report di maggiore interesse e utilità si trova la creazione automatica deifogli firme, necessari per la registrazione dei partecipanti di un corso, per le sessionidei corsi programmati nella settimana di riferimento. Il report, generato con BO,viene inviato settimanalmente alla fine della settimana aggiornato con i dati relativialla settimana successiva. Il file .rep è stato caricato sul serve aziendale BO@STdove è stato possibile schedulare l’aggiornamento e l’invio automatico ai responsabilidella formazione.Gli altri modelli di report creati non sono stati schedulati ma utilizzati dai dipendentidell’Organizational Development & Training in base alle esigenze e inserendo i relativiprompt.Inoltre, potendo salvare i report in diversi formati, sono stati utilizzate anche dellemacro VBA per ottimizzare l’aggiornamento e la formattazione del file in base allenecessità. Ad esempio e’ stata scritta una macro per facilitare l’organizzazione insquadre dei membri dei gruppi di emergenza aziendale.

Page 44: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.2. REPORTISTICA 35

Oracle PeopleSoftPeopleSoft è un software prodotto da Oracle utilizzato per la gestione dei diversiaspetti di business per aziende che presentano un elevato grado di complessità. Essoviene utilizzato per permettere la comunicazione e la condivisione dei dati tra lediverse sedi aziendali presenti in tutto il mondo.Utilizza, quindi, un database relazionale Oracle; il software si basa sulla tecnologiadi People Tools. Essa include di�erenti componenti utilizzati per creare applicazioniweb-based. Viene utilizzato un linguaggio di scripting, conosciuto come PeopleCode,che permette di definire di�erenti tipologie di metadata, strutture standard di sicurez-za e permette di interfacciarsi con database SQL. I metadata descrivono informazioniper le interfacce, le tabelle, i messaggi, la navigazione, etc. Ciò permette a PeopleSoftdi essere indipendente dalla piattaforma sulla quale verrà eseguita.Attualmente il software viene utilizzato per la gestione di diverse attività che copronodi�erenti ambiti della formazione: creazione di corsi e sessioni, iscrizioni dei parteci-panti, controllo dei percorsi di acquisizione delle competenze dei singoli dipendenti,gestione del corpo docenti, etc. Inoltre PeopleSoft viene sinconizzato giornalmentecon BoXI in modo da poter avere delle query aggiornate a livello corporate.L’accesso e i permessi sono settati sul singolo utente in base al ruolo e alle necessitàrichieste dalla mansione

Figura 4.3: Schermata iniziale di PeopleSoft

4.2.2 Criticità a�rontate

Le tipologie di report richieste rispondono a diverse esigenze, più o meno com-plesse. Lo scenario, per questo motivo, è piuttosto variegato, in quanto i dati devonoessere recuperati da sorgenti di�erenti e non sempre è possibile risalire alla strut-

Page 45: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

36 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

tura dati originaria. La principale sorgente è PeopleSoft, che presenta un livello diastrazione che non consente di comprendere la struttura delle tabelle relazionali chelo compongono ed espone delle query di default che non permettono di modificarecampi, filtri e condizioni dell’estrazione.Questa mancanza di visibilità della struttura da origine a incoerenze nei reportgenerati utilizzando tool diversi, nonostante i dati di partenza siano gli stessi. Adesempio, il report di ore medie annuali di formazione per dipendente restituisce risul-tati di�erenti a seconda che venga generato utilizzando PeopleSoft o BusinessObjects,perché vengono applicati dei filtraggi di�erenti su cui non sempre si ha il totalecontrollo.Tali criticità sono state risolte procedendo a ritroso attraverso un attento confrontocon altri colleghi per cercare di ricostruire la struttura originaria e le logiche difiltraggio delle query.Inoltre, in BusinessObjects sono presenti di�erenti Universi, ognuno dei quali riportadati di�erenti, rendendo pertanto di�coltoso comprendere quali siano gli Universicorretti da utilizzare per le interrogazioni.Infine, una criticità rilevante è identificabile nella di�coltà di abituare e istruire idipendenti ad utilizzare determinati tool di reportistica, in quanto abituati a eseguireestrazioni dati utilizzando fogli di calcolo Excel.

Page 46: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 37

4.3 Applicazione web per la gestione dei corsiPer facilitare la creazione di sessioni dei corsi, soprattutto quelli riguardanti la

sicurezza aziendale, e gestire le iscrizioni in modo e�ciente, è stata sviluppato unprototipo di un’applicazione web che consenta di ottimizzare i tempi e le risorse (aule,docenti, etc.) per la programmazione dell’attività formativa nell’anno di riferimento.

4.3.1 Architettura

Il disegno dell’architettura e la scelta delle tecnologie per l’applicazione sviluppatasono stati dettati principalmente dallo scenario presente e dalle esigenze di manu-tenzione future. L’applicazione web verrà posizionata su un server Linux, o�rendopertanto la libertà di scegliere linguaggi e tecnologie open source, ma al tempo stessodeve essere realizzata con linguaggi popolari e opportunamente documentati, in mododa garantire la possibilità di sviluppi evolutivi o manutentivi futuri anche da partedi altri dipendenti.La scelta è pertanto ricaduta su un’architettura basata su servizi REST, che permettadi tenere logicamente separata la parte di back-end da quella di front-end. Questopermette di intervenire sull’interfaccia utente indipendentemente dai servizi che for-niscono i dati, mentre questi ultimi sono facilmente intercambiabili senza la necessitàdi dover intervenire sul front-end dell’applicazione. Questo pattern architetturale ènoto con il nome di Microservices.Gli strati dell’architettura sono così composti:

• Interfaccia utente: l’interfaccia client che viene direttamente utilizzata dagliutenti e che o�re tutte le funzionalità previste. Per questo layer si è scelto diutilizzare la libreria Backbone.js.

• API rest: la componente server side che risponde alle richieste dei client e chesi occupa di fornire i dati richiesti o di instradare correttamente le richieste.Questo layer è stato implementato utilizzando Node.js.

• Moduli: si tratta dei componenti lato server che rappresentano le entità utiliz-zate nell’applicazione. Ogni modulo interagisce direttamente con il database esi occupa dell’estrazione e della persistenza dei dati sul database. Anche questicomponenti appartengono allo strato sviluppato con Node.js.

Page 47: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

38 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

• Database: il layer di persistenza dei dati è stato implementato con l’ausilio diMongoDB.

Per lo sviluppo dell’applicazione sono state utilizzate API RESTFul.L’architettura REST richiede l’utilizzo di ipertesti e permette una maggiore scalabi-lità e il server è libero di cambiare le risorse esposte in base alle necessità. Non vi èalcuna API fissa al di là di ciò che definisce REST stessa. Il cliente ha bisogno diconoscere solo l’URI iniziale, e successivamente sceglie in base al server utilizzatodi navigare o eseguire azioni. Un server può scaricare il codice dal il client che puòessere di supporto nella navigazione e nella rappresentazione degli stati.Tutto questo è in netto contrasto, ad esempio, con le chiamate di procedura remota(RPC). In questo caso infatti il client e il server devono concordare un protocollodettagliato che deve in genere essere compilato da entrembi (ad esempio URI di unaforma particolare si accede in un ordine particolare a un estremo, SOAP / WSDL /WS * all’altra). Questo approccio può mostrare delle fragilità, in quanto eventualimodifiche devono essere attuate sia sul server che sul client allo stesso tempo. Questoapproccio diventa quindi insostenibile con la crescita di server e client in interazione.I server, in particolare, so�rono perché l’evoluzione delle API pubblicate diventanosempre più complesse e di�cile gestione. Alla luce di questi fattori, l’utillizzo di APIRESTFul risulta essere una scelta implementativa adeguata.. Esso consente la rapidaevoluzione dei server e permette un numero enorme di applicazioni di interagireliberamente su una base ad hoc (ad esempio, l’intera Internet).Inoltre l’architettura REST, come nel nostro caso, è consigliata se l’applicazione èstata sviluppata per l’interazione con un utente e deve reagire in base alle azioni diquest’ultimo.I protocolli RPC web invece non permettono questa flessibilità ma sono nati proprioper legare entrambe le parti ad un protocollo fisso. Per questo motivo sono maggior-mente indicate per processi automatizzati e dove l’interazione con l’utente è quasiassente.Inoltre l’architettura REST permette una scalabilità in senso lato; sia in numerocrescente di utenti e sessioni, sia in termini di crescita di dimensioni delle applicazionie dei processi. Inoltre un accoppiamento stretto presenta un grave ostacolo perl’adattabilità delle applicazioni web. E’ di�cile immaginare l’esistenza della piùgrande applicazione nota, il World Wide Web, senza l’accoppiamento estremamentelasso o�erto dall’architettura REST.

Page 48: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 39

Figura 4.4: Architettura dell’applicazione web

Page 49: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

40 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

4.3.2 Tecnologie utilizzate

Backbone.jsBackbone.js è una libreria Javascript, non un framework, che struttura le applicazioniweb fornendo models, collections con un elevato numero di API, views che connettegli eventi alle API all’interno di un interfaccia RESTful e JSON.L’obiettivo del creatore, Jeremy Ashkenas, era quello di sviluppare una libreriaminimale in modo da avere strumenti e metodologie utili nell’utilizzo di javascript alfine di migliorare la qualità del codice scritto. Questa necessità emerge dalla di�coltànel garantire scalabilità, mantenibilità e solidità del software di un’applicazionecomplessa.La libreria è composta dalle seguenti componenti:

• Backbone.Model: Modelli

• Backbone.Collection: Liste di modelli

• Backbone.View: Viste

• Backbone.Router: Routing e gestione degli stati centralizzata

La sua architettura rientra nella categoria delle librerie MV, un adattamento deldesign pattern MVC (Model-View-Controller); essa infatti implementa i Models e leViews delegando l’attività del Controller alle stesse Views e ad una componente diRouting. Questo permette di mantenere la logica di business all’interfaccia utentefacilitandone l’utilizzo e la gestione.

Figura 4.5: Interazione Models e Views con backbone.js

Il Model si occupa di gestire i dati e la logica funzionale, carica e salva i dati delserver e attiva gli eventi quando cambiano i dati. Esso gestisce una tabella internadi attributi ed attiva eventi "change" quando uno di questi viene modificato.

Page 50: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 41

La View rileva i cambiamenti e renderizza le interfacce utente (UI), gestisce l’interazio-ne con l’utente inviando gli input al model. Essa è una parte atomica dell’interfacciautente che spesso renderizza i dati da un modello specifico, o da diversi modelli. Imodelli possono generalmente ignorare le viste, mentre le viste reagiscono in modoadeguato agli eventi "change" del modello.

Un’altra componente di backbone.js è la Collection; che aiuta nella gestione dimodelli correlati tra loro trattando il loading e salvando i nuovi modelli sul server efornendo delle funzioni ausiliarie per l’aggregazione e la computazione in una lista dimodelli.

Figura 4.6: Componente Collection di backbone.js

Infine troviamo il Router che aggiorna URL nel browser tutte le volte chel’utente raggiunge una nuova vista dell’applicazione in modo che possano essereanche condivise o salvate nei segnalibri, indicando esattamente anche dove l’utentesi trova.Per la creazione dell’applicazione è stato utilizzato come tool Yeoman che aiutanella generazione della struttura di una applicazione web. L’applicazione presentaun’interfaccia da linea di comando per Node.js che combina diverse funzioni in ununivo tool, come ad esempio la generazione di template, gestione delle dipendenze,gestione dello unit tests e fornisce un server locale per lo sviluppo.Comprende pricipalmente tre tools per migliorare la qualità e la produttività nellosviluppo:

Page 51: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

42 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

• YO: gestisce e costruisce la struttura dell’applicazione, creando anche ledipendenze necessarie tra i packages;

• Build System: è usato per costruire, visualizzare l’anteprima e testare il progetto.In questo progetto è stato utilizzato Grunt.

• Package Manager : usato per la gestione delle dipendenze, tra cui Bower e npm.

BootstrapBootstrap1 è un framework front-end e open-source per la realizzazione di applicazioniweb responsive. Questo significa che il layout dellla pagina web si adatta dinamica-mente al dispositivo utilizzato (tablet, laptop, cellulare).Contiene templates basatisull’utilizzo di HTML e CSS per la tipografia, i bottoni, i menù di navigazione ealtre componenti utilizzate nelle interfacce web. Inoltre ha la possibilità di utilizzarel’estensione per JavaScript.Questo framework è composto da moduli e da una serie ti fogli di stile in Less2 cheimplementano le diverse componenti disponibili.E’ possibile adattare i template in base alle proprie esigenze, integrando le compo-nenti che devono essere utilizzate nel progetto. Inoltre, il framework, presenta unasistema di layaot a griglia (1170 pixel di standard) che può essere utilizzato in modovariabile e adattabile allo schermo su cui viene visualizzata l’applicazione.Oltre alle componenti HTML classici metet a disposizione elementi molto utilizzatinelle interfacce come: bottoni (raggruppati, con una drop-down, navigazione, etc..),etichette, thumbnails, barre di caricamento, badges e molto altro.Come anticipato, possono essere utilizzati anche componenti JavaScript nella formadi plugins JQuery3 che permettono l’utilizzo di elementi come tooltips, carousels perle immagini e l’auto-completamento dei campi di input.

1Bootstrap è stato sviluppato da Mark Otto e Jacob Thornton presso Twitter come un frameworkche uniformasse i vari componenti che ne realizzavano l’interfaccia web. Nell’agosto 2011 Twitterha rilasciato Bootstrap come open source, invitando tutti gli sviluppatori a partecipare al progettoe a dare il loro contributo alla piattaforma.

2Less è un linguaggio dinamico per i fogli di stile; esso deve essere compilato in un foglio di stileCSS e quindi eseguito lato client o lato server.

3jQuery è una libreria JavaScript per applicazioni web. Nasce con l’obiettivo di semplificarela selezione, la manipolazione, la gestione degli eventi e l’animazione di elementi DOM in pagineHTML, nonché implementare funzionalità AJAX.

Page 52: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 43

Figura 4.7: Interfaccia creazione corso

Node.jsNode.js è un framework event-driven sviluppato sul motore JavaScript V8 utilizzatoper Google Chrome, relativo all’utilizzo server-side di Javascript; esso fornisce unaricca libreria di di�erenti moduli JavaScript che semplificano lo sviluppo di applica-zioni web. Utilizza un modello a single thread con un event loop che permette alserver di di rispondere in modo non bloccante e lo rende maggiormente scalabile.Le API fornite sono asincrone e quindi il server non resta mai in attesa dei dati diritorno delle chiamate, passando alla API successiva. Inoltre non mette in bu�ernessun dato ma invia i dati di output in chunks.

MongoDBNella nostra applicazione abbiamo utilizzato come database MongoDB; è un DBMSnon relazionale orientato ai documenti e cross-platform. Esso è un database NoSQLe i documenti creati sono simili ad oggetti JSON. I valori dei campi dell’oggettopossono includere altri documenti, array e array di documenti.L’utilizzo di questa tipologia di documenti presenta diversi vantaggi, tra cui la ridu-zione della necessità di numerosi join, il supporto al polimorfismo grazie all’utilizzodi uno schema dinamico e la corrispondenza tra documenti e tipi di dato primitivi didiversi linguaggi di programmazione.Esso da la possibilità di scrivere query ad hoc, supportando anche ricerche per campi,intervalli ed espressioni regolari, indicizzare i campi scalabilità orizzontale attraverso

Page 53: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

44 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI

lo sharding 4 e bilanciando adeguatamente i dati. MongoDB, inoltre, garantisceun’alta disponibilità dei dati e aumento del carico gestito attraverso replica set (dueo più copie dei dati).Per lo sviluppo dell’applicazione è stato utilizzato Mongoose; un package di modella-zione degli oggetti per Node.js che essenzialmente si comporta come una ORM 5 eche permette di avere un semplice accesso ai comandi MongoDB per le operazioniCRUD.

4.3.3 Criticità a�rontateL’aspetto che ha presentato maggiore criticità è stata la scelta delle tecnologie

da utilizzare, in quanto queste devono rispondere a diverse esigenze: innanzituttol’applicazione deve poter essere rilasciata su un server Linux messo a disposizione perquesto tipo di applicazioni all’interno dell’azienda; in secondo luogo l’applicazionedeve essere facilmente mantenibile ed espandibile, in quanto la prima versionerealizzata consiste in un prototipo funzionante, ma la maggior parte delle funzionalitàverranno sviluppate in futuro da altre persone. Per questo motivo i linguaggi utilizzatisono stati scelti tra quelli maggiormente di�usi e utilizzati al giorno d’oggi, e quindimaggiormente documentati.Un altro aspetto che ha richiesto la progettazione di una soluzione specifica è legatoall’accessibilità dei dati per la generazione dei report dall’interfaccia dell’applicazione.Parte dei dati applicativi risiedono su MongoDB, come le informazioni relative agliutenti e alle sessioni dei corsi, tuttavia tutti i dati utilizzati per la generazionedelle statistiche risiedono su altri database a cui l’applicazione non può accederedirettamente. Si è scelto pertanto di generare dei report statici in formato CSVcon Business Objects, che vengono depositati ogni giorno su uno specifico foldercondiviso in rete. Il componente Node.js dell’applicazione può quindi recuperare idati da questo folder e presentarli su richiesta degli utenti.

4Sharding è il processo di archiviare i dati su diverse macchine. MongoDB utilizza questoapproccio per rispondere adeguatamente al continuo incremento del quantitativo e della grandezzadei dati da memorizzare, risolvendo il problema della scalabilità orizzontale

5ORM (Object-Relational Mapping) è una tecnica di programmazione che favorisce l’integrazionedi sistemi software aderenti al paradigma della programmazione orientata agli oggetti con sistemiRDBMS. Esso fornisce, attraverso un’interfaccia, tutti i servizi inerenti alla persistenza dei datiindipendentemente dal database utilizzato.

Page 54: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Capitolo 5

Business Intelligence

Le soluzioni sviluppate, soprattutto nel caso degli aspetti riguardanti la reporti-stica, e le esigenze aziendali si orientano verso l’ambito della Business Intelligence.Con questo termine viene definito un insieme di tecniche e strumenti finalizzatiall’acquisizione e alla trasformazione dei dati grezzi in dati significativi e utili per labusiness analysis.Queste tecniche, definite spesso anche di "data surfacing", sono in grado di gestire unelevato numero di dati non strutturati al fine di identificare, sviluppare e creare nuovestrategie di business; inoltre dovrebbero permettere un’interpretazione semplice deidati.La Business Intelligence permette di avere una visione temporale delle attività azien-dali monitorate attraverso i report, data mining, benchmarking, l’analisi predittiva equella prescrittiva. Attraverso questo tipo di analisi l’azienda può avere una migliorevisione del segmento di mercato di interesse, quello dei microprocessori, e di possibilinuovi mercati in cui entrare aumentando la propria possibilità di crescita e a�erma-zione in essi.In azienda viene utilizzato come tool di Business Intelligence SAP Business Objects.Esistono diverse tipologie di analisi dei processi di business e possiamo classificarlain: descrittiva, diagnostica, predittiva, prescrittiva e preventiva. L’analisi descrittivaanalizza gli eventi passati per darne una visione concisa e semplificata, presentandole proprietà generali. L’analisi diagnostica analizza, invece, le cause che hannogenerato determinate tendenze e risultati. L’analisi predittiva permette di prevederel’andamento futuro partendo da modelli di analisi sui dati a disposizione. Infine,l’analisi descrittiva fornisce delle indicazioni su come agire ed intervenire in manie-

45

Page 55: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

46 CAPITOLO 5. BUSINESS INTELLIGENCE

ra automatica nelle scelte aziendali integrando statistica, business e machine learning.

5.1 Le funzioni della Business IntelligenceQuesto insieme di tecniche permette di implementare diverse funzionalità.

• Reporting: Visto il grande numero di dati grezzi utilizzati risulta fondamentaleottimizzare la gestione e l’organizzazione dei dati per poterli utilizzare in modocorretto e adeguato.

• Online Processing: l’obiettivo principale di elaborazione on-line è quello difornire velocità, disponibilità e facilità nel recupero dei dati, garantendo allostesso tempo la coerenza e la consistenza dei dati richiesti. Per garantire questecaratteristiche risulta necessario l’utilizzo di un database che gestisca in modoottimale una grande mole di dati in tempo reale.

• Data Mining: una tecnica che cerca all’interno di un vasto set di dati perscoprire pattern e trend che stanno dietro una semplice analisi. Esso permetteagli utenti, accedendo da diversi punti di accesso, per utilizzare i dati inbase alle proprie esigenze. Questo risulta essere un aspetto fondamentale nelprendere decisioni nelle strategie di business, ad esempio per l’organizzazione el’inserimento a catalogo di nuove tipologie di corsi formativi. Il metodo prevedetre fasi: esplorare, comprendere e analizzare.

• Event Processing: fornisce una piattaforma integrata dove i dati vengonofiltrati, correlati e processati real-time per incontrare le esigenze di business

• Business performance management: la gestione delle prestazioni aziendali puòessere definita come un insieme di processi analitici che aiutano il monitoraggiodelle prestazioni a livello aziendale nel raggiungimento di obiettivi prestabiliti.Business Performance Management ha tre attività chiave: la definizione o laselezione di obiettivi, il consolidamento di indici di misurazione che indicano ilprogressivo andamento dell’organizzazione nel raggiungimento degli obiettivie, infine, gli interventi che vengono attuati alla luce delle informazioni rica-vate dall’andamento dell’organizzazione al fine di migliorare la performanceregistrata.

Page 56: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 47

• Benchmarking: Definisce una misura della qualità dell’organizzazione in terminidi politiche, prodotti, strategie, etc. e il confronto di questa misura con altretipologie di misurazione di business standard o simili. Questo è il processo chepermette all’azienda di confrontare i processi aziendali interni con le metrichedi performance per le best practice del settore provenienti da altre impreseconcorrenti. Sono spesso utilizzati indici specifici o indicatori come la qualità,costi e tempi. A seconda della politica interna di gestione aziendale, l’analisicomparativa potrebbe essere fatta come un processo continuo o con intervallitemporali specifici. Ma qualunque sia il caso, questa funzione di BusinessIntelligence permette all’azienda di prendere decisioni che rispondano alleesigenze negli ambiti di interesse.

• Analisi Predittiva: Questo è un ramo di data mining che si occupa della previ-sione e delle tendenze future, in termini di probabilità, delle attività in esame.Esso descrive una serie di tecniche analitiche e statistiche utilizzate per svilup-pare modelli che possono essere utilizzati per predire eventi futuri del business.Alcuni dei vantaggi dell’analisi predittiva sono: fornire una base quantitativaper riconoscere e valutare l’andamento del business; aiutare a identificare iltarget di mercato e come rispondere alle richieste, assistere i manager nellagestione aziendale; migliorare il processo decisionale nel raggiungimento degliobiettivi prefissati.

5.2 Misurazione dell’impatto sui processi di busi-ness

I modelli predittivi in ambito aziendale analizzano dati storici e attuali e ven-gono utilizzati per comprendere al meglio l’andamento aziendale nei confronti delloscenario di riferimento. I risultati forniti sono utili come guida nelle decisioni dibusiness per il conseguimento degli obiettivi prefissati in quanto utilizzando questimodelli è possibile avere una previsione sugli andamenti futuri e sugli e�etti delleattività svolte, nel nostro caso come un certo tipo di formazione impatti sulle attivitàproduttive e di lavoro in team. Una delle tecniche maggiormente utilizzate per questotipo di analisi è definita Decision Tree. Il modello viene rappresentato attraverso unalbero decisionale che ha in input un oggetto con i suoi diversi attributi e produce in

Page 57: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

48 CAPITOLO 5. BUSINESS INTELLIGENCE

output una decisione con associata una probabilità in base ai valori inseriti.La partizione rappresentata deriva da un processo ricorsivo di separazione binomialedei dati dal nodo padre fino alle foglie (nodi terminali). Ogni dato da classificarequindi parte dalla radice e ogni separazione dipende dalla misura di una determinatavariabile. Alla foglia viene associata una classe di predizione che viene cosí attribuitaa tutti i dati che raggiungono quel nodo.Attualmente un’analisi completa di questo tipo non può essere e�ettuata in quantomancano i dati relativi agli e�etti in ambito lavorativo dovuti ad un determinatopercorso formativo.

5.2.1 Reportistica e Gestione Corsi

Le attività condotte nell’ambito della reportistica aziendale hanno portato diversivantaggi nell’operatività quotidiana del team HR. Innanzitutto queste ottimizzazionihanno consentito di ridurre i tempi per la generazione dei report, semplificandol’estrazione dei dati necessari per rispondere alle varie esigenze aziendali.Ad esempio, la gestione dei corsi obbligatori che necessitano di un aggiornamento intempi di�erenti veniva in precedenza gestita manualmente con fogli Excel, utilizzandoPivot e funzioni di VLookup tra le tabelle. Questa procedura richiedeva diverse oree presentava diverse criticità, in quanto la possibilità di errore era elevata; inoltreessa era fortemente condizionata dalle conoscenze dell’operatore e dalla sua abilitànell’uso di Excel. Ora questa procedura viene gestita in maniera automatizzata esemplificata attraverso l’utilizzo di template di report Business Objects, che consen-tono di schedulare aggiornamenti quotidiani senza bisogno di intervenire sui dati.Inoltre l’applicazione web consente una rapida consultazione di questi report. In-fatti l’utente può visualizzare i report disponibili in formato tabellare senza doversiconnettere agli altri tool usati in azienda per la generazione dei report. È anchepossibile scaricare i report generati in formato PDF, CSV e XLS.Oltre alla reportistica, l’applicazione permetterà una gestione semplificate dellacreazione delle sessioni dei diversi corsi per la calendarizzazione e la gestione deipartecipanti. Attualmente i responsabili devono creare le sessioni direttamente sulsoftware aziendale (PeopleFirst) dove sono presenti anche quelle create da altresedi nel mondo. Inoltre, in caso di cancellazioni e spostamenti delle sessioni create,l’utente deve seguire un procedimento standard che richiede tempo e risorse. Utiliz-

Page 58: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 49

zando l’applicazione i responsabili potranno avere una visione chiara e precisa dellesessioni create per le sedi dell’area Continental Italy gestendo in modo semplificatole modifiche prima di registrarle sul software utilizzato a livello Corporate.

Figura 5.1: Tabella generata relativa al report selezionato

L’applicazione presenta un utilizzo immediato e intuitivo rispetto ai diversi toolutilizzati precedentemente; essa racchiude in un’unica interfaccia utente diverse fun-zionalità facilitandone la consultazione e riducendo di molto i tempi per la creazionee la consultazione dei documenti richiesti. Inoltre il software e i modelli di reportsono stati sviluppati a partire da un’attenta analisi dei requisiti (RASD) e dellerichieste dell’Organizational Development & Training per la sede di Agrate cercandodi rispondere adeguatamente alle richieste. I tool utilizzati in azienda, pur essendostabili e ricchi di funzionalità, sono condivisi a livello Corporate e non disegnati sullenecessità delle singole sedi rendendo più complesso il loro utilizzo e richiedendo unmaggior tempo per la formazione del personale.

La seguente tabella illustra le di�erenze nelle procedure di reportistica prima edopo gli interventi di automatizzazione apportati, evidenziando i vantaggi derivantida una riduzione delle tempistiche e degli interventi manuali richiesti in precedenza.

Page 59: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

50 CAPITOLO 5. BUSINESS INTELLIGENCE

Figura 5.2: Tabella che evidenzia le di�erenze tra le vecchie e le nuove procedure direportistica

Page 60: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 51

5.2.2 Analisi statisticaL’utilizzo dei template di reportistica creati permette una valutazione dei dati e

un’analisi più veloce e con una probabilità di errori nell’estrazione dei dati inferiorealla modalità utilizzata precedentemente. La struttura e l’organizzazione del trainingaziendale risulta essere molto complessa e o�re un notevole quantitativo di dati e diinformazioni utili per l’analisi statistica. L’o�erta formativa è suddivisa in TrainingFamily che racchiudono i corsi relativi a una determinata area e che condividonol’obiettivo di sviluppare delle specifiche competenze. Inoltre i corsi sono caratterizzatianche da una Training Class, che descrive se il corso è base o avanzato e se è definitoa livello Corporate o locale, e da una descrizione dalla quale è possibile estrarre unamappa di parole chiave che identificano gli argomenti del corso in oggetto.Durante l’ultimo anno i corsi erogati appartenevano in larga misura alla famiglia"Sustainable Development" e "Job Specific" seguiti dai corsi della famiglia relativaallo sviluppo delle competenze personali e relazionali ("Personal Development").L’azienda infatti pone attenzione sia sugli aspetti legati alla sostenibilità e alle compe-tenze tecniche senza tralasciare gli aspetti legati al potenziamento delle competenzepersonali e relative al lavoro in team.

Figura 5.3: Frequenze maschili per famiglia di Training e età

Osservando i dati relativi alla formazione nell’ultimo anno si può osservare chela maggior parte dei dipendenti di sesso femminile ha frequentato corsi appartenentisoprattutto alle famiglie: "Job Specific", "Personal Development" e "Tools and

Page 61: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

52 CAPITOLO 5. BUSINESS INTELLIGENCE

Methodologies". Inoltre la fascia d’età predominante risulta essere quella tra i 35 e i45 anni.Per quanto riguarda i colleghi di sesso maschile, si può notare che hanno frequentatomaggiormente corsi appartenenti alle famiglie di training "Job Specific" e "SustainableDevelopment". Anche in questo caso la fascia d’età predominante risulta essere quellatra i 35 e i 45 anni.

Figura 5.4: Frequenze femminili per famiglia di Training ed età

Page 62: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 53

Figura 5.5: Frequenze maschili per famiglia di Training ed età

Page 63: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

54 CAPITOLO 5. BUSINESS INTELLIGENCE

Attraverso l’utilizzo di strumenti di Business Intelligence è possibile arricchirel’analisi e generare dei modelli predittivi molto utili come guida nelle scelte formativeaziendali in funzione degli obiettivi prefissati.Inoltre è possibile visualizzare i dati raggruppandoli in diversi modi in base alleproprie esigenze e renderli facilmente interpretabili. Ad esempio, le informazioniriguardanti la frequenza dei corsi in base al sesso e alla classe di età possono esserevisualizzate con un grafico di dispersione in cui le due variabili del nostro set didati sono riportate su uno spazio cartesiano. I dati sono visualizzati tramite unacollezione di punti ciascuno con una posizione sull’asse orizzontale determinato dauna variabile e sull’asse verticale determinato dall’altra.

Figura 5.6: Frequenze per famiglia di Training e sesso

Page 64: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 55

Figura 5.7: Frequenze per famiglia di Training e classi di età

In termini di valutazione a livello 1 della scala Kirkpatrick, si nota che la maggiorparte dei corsi ha ottenuto una valutazione medio alta in termini di gradimento ee�cacia da parte dei dipendenti, con un valore medio superiore al 6 (su una scala a7 punti).

Figura 5.8: Frequenze per famiglia di Training e valutazione del corso

Page 65: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

56 CAPITOLO 5. BUSINESS INTELLIGENCE

Come anticipato, i corsi hanno anche una descrizione che permette al dipendentedi capire meglio l’argomento del corso stesso e con questo campo è stato possibilegenerare un "Tag Cloud" nella quale vengono messe in evidenza i termini in basealla loro frequenza all’interno delle descrizioni dei corsi e�ettuati durante l’anno diriferimento. Questo permette una rappresentazione semplice, intuitiva ed e�cace deidati.

Figura 5.9: Tag cloud

Dall’immagine si evince che i corsi durante l’anno riguardavano soprattuttol’ambito della sicurezza, delle performance e del lavoro in team, in linea con leconsiderazioni precedenti. Questa rappresentazione dei dati permette all’utente diavere velocemente una fotografia e una visione chiara degli argomenti trattati neicorsi e�ettuati con la loro frequenza. Un’estensione di questo tipo di analisi e dipresentazione dei dati dei diversi aspetti monitorati nella formazione, permetterebbeuna maggiore condivisione dei dati tra i dipendenti.

Page 66: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 57

5.2.3 Sviluppi futuriPartendo da questi dati potrebbe essere sviluppato un modello predittivo che

permetta di avere una visione, anche graficamente, più chiara sulla probabilità diraggiungere determinati nodi, caratterizzati da specifici attributi, come la valutazionedel corso e la classe di training del corso, a partire da un nodo padre. Anche l’inte-rattività di questi modelli velocizzerebbe il tempo necessario per la consultazione el’estrapolazione di dati partendo da di�erenti valori di attributi all’interno del set didati.

Figura 5.10: Esempio di modello ad albero generato a partire dalla Training Family"Information Technology"

Sarebbe opportuno inserire degli indici di valutazione al livello di attività produt-tiva e di lavoro in team per osservare l’impatto di un determinato percorso formativoall’interno dell’ambiente lavorativo. In questo modo si potrebbero utilizzare le analisie�ettuate per proporre una formazione ad hoc per dipendente e per organizzazionesulla base di una valutazione statistica della probabilità dell’acquisizione di determi-nate competenze e sull’impatto positivo in ambito lavorativo.Innanzitutto si potrebbe sottoporre ad un numero ristretto di dipendenti un per-corso formativo pilota per lo sviluppo di specifiche competenze. Successivamente

Page 67: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

58 CAPITOLO 5. BUSINESS INTELLIGENCE

osservare l’impatto che questo tipo di formazione ha avuto nello scenario lavorativodel dipendente (es. numero di assenze, percentuale di obiettivi raggiunti in tre mesi,coinvolgimento all’interno dei meeting, etc..) e confrontare gli indicatori registraticon un gruppo di controllo.Inoltre sarebbe opportuno utilizzare questo tipo di analisi anche per facilitare l’inter-pretazione e la visualizzazione dei dati da parte dei dipendenti.

Page 68: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Capitolo 6

Conclusioni

Le attività svolte durante il tirocinio sono state di diversa natura e hanno richie-sto l’impiego di strumenti e tecnologie di�erenti. Tuttavia, le soluzioni analizzate eimplementate hanno consentito di muovere i primi passi verso l’ottimizzazione deiprocessi informativi aziendali del reparto HR.Gli strumenti utilizzati per le attività di reportistica si sono dimostrati piuttostopotenti, anche se talvolta un po’ troppo poco flessibili. Software quali BusinessObjects consentono di accedere alla maggior parte dei dati aziendali disponibili, manon sempre o�rono un livello di personalizzazione adeguato per costruire un certotipo di interrogazioni. Sicuramente queste di�coltà possono essere sormontate ingran parte una volta superata la curva di apprendimento iniziale e con un’adeguataformazione professionale.L’impiego di tecnologie moderne quali Node.js e Backbone.js ha consentito di svilup-pare un’applicazione portabile e facilmente espandibile in futuro, ma ha richiestoparecchio tempo per le fasi di apprendimento dei framework. Questo ha evidenziatocome i linguaggi di programmazione e le tecnologie, soprattutto in ambito web, sistiano specializzando, consentendo di sviluppare diversi componenti software indi-pendenti tra di loro, ma con un alto livello di interoperabilità.Ognuna delle soluzioni proposte e implementate potrà in futuro essere approfondita econseguentemente migliorata, mantenendo un focus costante sull’ottimizzazione delleprocedure di Business Intelligence. Ad esempio, l’applicazione web potrà integrarenuove modalità di visualizzazione dei dati esportati, mentre le attività di reportisticasi potranno focalizzare sulla creazione di nuovi dataset a supporto delle analisi. Ancheil sito intranet della formazione potrà essere ulteriormente sviluppato con l’aggiunta

59

Page 69: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

60 CAPITOLO 6. CONCLUSIONI

di nuovo materiale e con l’aumento dell’interattività con gli utenti, con funzionalitàquali la votazione dei corsi e l’invio di commenti.Questo tipo di approccio rivolto alla Business Intelligence non dovrebbe essere limita-to solo a singole aree aziendali ma dovrebbe coprire tutti gli aspetti che interessanoe contribuiscono alla vision della Corporate, come ad esempio nell’ambito dellaformazione. Un investimento guidato e supportato da modelli statistici e di analisipermette di utilizzare al meglio le risorse a disposizione con una maggiore probabilitàdi raggiungere gli obiettivi fissati.All’interno di un’azienda multinazionale, come STMicroelectronics, risulta ben evi-dente come ogni singolo dipartimento lavori per il conseguimento di obiettivi comuni,anche se a volte risulta molto complesso lo scambio e la coordinazione dei diversiattori all’interno di tutta l’azienda.

Page 70: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Bibliografia

[1] Martin Fowler, "UML distilled. Guida rapida al linguaggio di modellazionestandard", Ed. Pearson, 4 edizione, 2010

[2] Luciano Baresi, "Dall’idea al codice con UML 2. Guida all’utilizzo di UMLattraverso esempi.", Ed. Pearson, 2006

[3] Ian Sommerville, "Ingegneria del software", Ed. Pearson, 8 edizione, 2007

[4] James Rumbaugh Ivar Jacobson Grady Booch, "The Unified Modeling LanguageReference Manual", Ed. ADDISON-WESLEY, 2004

[5] Kendal Scott, "UML explained", Ed. ADDISON-WESLEY, 2000

[6] Alfredo Bolt, Massimiliano de Leoni, Wil M. P. van der Aalst, Pierre Gorissen,"Exploiting Process Cubes, Analytic Workflows and Process Mining for BusinessProcess Reporting: A Case Study in Education", SIMPDA, 2015

[7] Oracle o�cial documentation, http://www.oracle.com

[8] SAP learning hub, https://www.sapbi.com

[9] "Data Mining Concepts 11g Release 1(11.1)", Oracle, 2008.

[10] SAP o�cial documentation, http://help.sap.com

[11] Backbone.js o�cial documentation, http://backbonejs.org

[12] UML o�cial documentation, http://www.omg.org/spec/UML/2.5

[13] IBM o�cial documentation, http://www.ibm.com/developerworks/rational/library/769.html

[14] STMicroelectronics website, http://st.com

61

Page 71: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

62 BIBLIOGRAFIA

[15] Maurice Udoh, "Business Intelligence: A catalyst for change management",International Journal of Engineering Research (IJOER), 2015

[16] Han, M. Kamber “Data Mining: Concepts and Technique”, 2004

[17] Node.js o�cial documentation, https://nodejs.org/en/docs

[18] MongoDB o�cial documentation, https://docs.mongodb.com

[19] Yeoman o�cial documentation, http://yeoman.io/learning/index.html

Page 72: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

Appendice

Macro VBA a supporto della gestione della formazione delle squadre di interventoERT.

Sub CopiaDati(sheet As String)

Sheets(sheet).UsedRange.ClearContents

PopolaGruppi (sheet)Intestazione (sheet)

Dim FoglioDati As WorksheetSet FoglioDati = Sheets("Dati")Dim x As Integer

’ Set numrows = number of rows of data.NumRows = FoglioDati.Range("B2", Range("B2").End(xlDown)).Rows.Count

’ Select cell a2.Range("B2").Select

’ Establish "For" loop to loop "numrows" number of times.

For x = 2 To NumRows + 1Dim organizzazione As StringDim group As StringDim name As StringDim ruolo As String

organizzazione = Trim(FoglioDati.Range("D" & CStr(x)))

63

Page 73: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

64 APPENDICE

group = Trim(FoglioDati.Range("E" & CStr(x)))name = Trim(FoglioDati.Range("B" & CStr(x)))ruolo = Trim(FoglioDati.Range("G" & CStr(x)))

If (sheet = "Arancio") ThenIf (organizzazione = "AG8-AGM" Or organizzazione = "FEM EWS") Then

Select Case groupCase "A"

Call ScriviCella(sheet, "A", name, ruolo)Case "B"

Call ScriviCella(sheet, "B", name, ruolo)Case "C"

Call ScriviCella(sheet, "C", name, ruolo)Case "D"

Call ScriviCella(sheet, "D", name, ruolo)Case "E"

Call ScriviCella(sheet, "E", name, ruolo)Case "15 T"

Call ScriviCella(sheet, "F", name, ruolo)Case "W.E.S."

Call ScriviCella(sheet, "G", name, ruolo)Case "blank"

Call ScriviCella(sheet, "H", name, ruolo)End Select

End IfEnd If

If (sheet = "Azzurra") ThenIf (organizzazione = "R2") Then

Select Case groupCase "A"

Call ScriviCella(sheet, "A", name, ruolo)Case "B"

Call ScriviCella(sheet, "B", name, ruolo)Case "C"

Call ScriviCella(sheet, "C", name, ruolo)Case "D"

Page 74: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

65

Call ScriviCella(sheet, "D", name, ruolo)Case "E"

Call ScriviCella(sheet, "E", name, ruolo)Case "TGCM"

Call ScriviCella(sheet, "F", name, ruolo)Case "TGCM/A"

Call ScriviCella(sheet, "G", name, ruolo)Case "TGCM/B"

Call ScriviCella(sheet, "H", name, ruolo)Case "blank"

Call ScriviCella(sheet, "I", name, ruolo)End Select

End IfEnd If

If (sheet = "Viola") ThenIf (organizzazione = "SSGG") Then

Select Case groupCase "Antincendio"

Call ScriviCella(sheet, "A", name, ruolo)Case "CDZ"

Call ScriviCella(sheet, "B", name, ruolo)Case "ECOFACILITY"

Call ScriviCella(sheet, "C", name, ruolo)Case "EE"

Call ScriviCella(sheet, "D", name, ruolo)Case "SECURITY"

Call ScriviCella(sheet, "E", name, ruolo)Case "UPW"

Call ScriviCella(sheet, "F", name, ruolo)Case "W.E.S."

Call ScriviCella(sheet, "G", name, ruolo)Case "blank"

Call ScriviCella(sheet, "H", name, ruolo)End Select

End IfEnd If

Page 75: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

66 APPENDICE

If (sheet = "blank") ThenIf (organizzazione = "blank") Then

Call ScriviCella(sheet, "A", name, ruolo)End If

End If

’ Selects cell down 1 row from active cell.ActiveCell.Offset(1, 0).Select

Next

End Sub

’ Scrivi il value nella prima cella libera della colonna specificata

Sub ScriviCella(sheet As String, col As String, value As String, ruolo AsString)

Dim Previous As RangeDim PreviousRole As StringDim i As IntegerDim FirstFree As RangeSet FirstFree = Sheets(sheet).Columns(col).Find("",

Cells(Sheets(sheet).Rows.Count, col))

Debug.Print value

’scrivo coordinatoreIf (ruolo = "COORDINATORE") Then

For i = FirstFree.Row To 6 Step -1Set Previous = Sheets(sheet).Range(col & i - 1)PreviousRole = "blank"

If (i = 6) ThenPreviousRole = "first"

End If

If (InStr(Previous.value, "COORDINATORE") <> 0) Then

Page 76: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

67

PreviousRole = "COORDINATORE"End If

If (InStr(Previous.value, "VICE-COORD") <> 0) ThenPreviousRole = "VICE-COORD"

End If

If ((PreviousRole = "VICE-COORD" Or PreviousRole = "blank") And i >6) Then

Sheets(sheet).Range(col & CStr(i)) = Previous.valuePrevious = value + " - COORDINATORE"

ElseIf (FirstFree.Row = 6 And PreviousRole = "first") ThenSheets(sheet).Range(col & CStr(i)) = value + " - COORDINATORE"

End If

Next i

’scrivo viceElseIf (ruolo = "VICE-COORD") Then

For i = FirstFree.Row To 6 Step -1Set Previous = Sheets(sheet).Range(col & i - 1)PreviousRole = "blank"

If (i = 6) ThenPreviousRole = "first"

End If

If (InStr(Previous.value, "COORDINATORE") <> 0) ThenPreviousRole = "COORDINATORE"

End If

If (InStr(Previous.value, "VICE-COORD") <> 0) ThenPreviousRole = "VICE-COORD"

End If

If (PreviousRole = "blank" And i > 6) ThenSheets(sheet).Range(col & CStr(i)) = Previous.value

Page 77: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

68 APPENDICE

Previous = value + " - VICE-COORD"ElseIf (FirstFree.Row = 6 And PreviousRole = "first") Then

Sheets(sheet).Range(col & CStr(i)) = value + " - VICE-COORD"End If

Next i

’ruolo normaleElse

FirstFree = valueEnd If

End Sub

Sub PopolaGruppi(sheet)If (sheet = "Arancio") Then

Sheets(sheet).Range("A5") = "A"Sheets(sheet).Range("B5") = "B"Sheets(sheet).Range("C5") = "C"Sheets(sheet).Range("D5") = "D"Sheets(sheet).Range("E5") = "E"Sheets(sheet).Range("F5") = "15 T"Sheets(sheet).Range("G5") = "W.E.S."Sheets(sheet).Range("H5") = "blank"Sheets(sheet).Range("A5:H5").Interior.Color = RGB(205, 128, 0)Sheets(sheet).Range("A5:H5").HorizontalAlignment = xlCenterSheets(sheet).Range("A5:H5").VerticalAlignment = xlVAlignCenterSheets(sheet).Range("A5:H5").Font.FontStyle = "Bold Italic"Sheets(sheet).Range("A5:H5").Font.Size = 16Sheets(sheet).Range("A5:H5").Columns("A:H").ColumnWidth = 30Sheets(sheet).Range("A5:H5").Borders(xlEdgeBottom).LineStyle =

xlContinuousSheets(sheet).Range("A5:H5").Borders(xlEdgeTop).LineStyle =

xlContinuousSheets(sheet).Range("A5:H5").Borders(xlInsideVertical).LineStyle =

xlContinuous

Page 78: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

69

Sheets(sheet).Range("A5:H5").Borders(xlEdgeLeft).LineStyle =xlContinuous

Sheets(sheet).Range("A5:H5").Borders(xlEdgeRight).LineStyle =xlContinuous

End If

If (sheet = "Azzurra") ThenSheets(sheet).Range("A5") = "A"Sheets(sheet).Range("B5") = "B"Sheets(sheet).Range("C5") = "C"Sheets(sheet).Range("D5") = "D"Sheets(sheet).Range("E5") = "E"Sheets(sheet).Range("F5") = "TGCM"Sheets(sheet).Range("G5") = "TGCM/A"Sheets(sheet).Range("H5") = "TGCM/B"Sheets(sheet).Range("I5") = "blank"Sheets(sheet).Range("A5:I5").Interior.Color = RGB(153, 255, 255)Sheets(sheet).Range("A5:I5").HorizontalAlignment = xlCenterSheets(sheet).Range("A5:I5").VerticalAlignment = xlVAlignCenterSheets(sheet).Range("A5:I5").Font.FontStyle = "Bold Italic"Sheets(sheet).Range("A5:I5").Font.Size = 16Sheets(sheet).Range("A5:I5").Columns("A:I").ColumnWidth = 30Sheets(sheet).Range("A5:I5").Borders(xlEdgeBottom).LineStyle =

xlContinuousSheets(sheet).Range("A5:I5").Borders(xlEdgeTop).LineStyle =

xlContinuousSheets(sheet).Range("A5:I5").Borders(xlInsideVertical).LineStyle =

xlContinuousSheets(sheet).Range("A5:I5").Borders(xlEdgeLeft).LineStyle =

xlContinuousSheets(sheet).Range("A5:I5").Borders(xlEdgeRight).LineStyle =

xlContinuousEnd IfIf (sheet = "Viola") Then

Sheets(sheet).Range("A5") = "ANTINCENDIO"Sheets(sheet).Range("B5") = "CDZ"

Page 79: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

70 APPENDICE

Sheets(sheet).Range("C5") = "ECOFACILITY"Sheets(sheet).Range("D5") = "EE"Sheets(sheet).Range("E5") = "SECURITY"Sheets(sheet).Range("F5") = "UPW"Sheets(sheet).Range("G5") = "W.E.S."Sheets(sheet).Range("H5") = "blank"Sheets(sheet).Range("A5:H5").Interior.Color = RGB(209, 204, 255)Sheets(sheet).Range("A5:H5").HorizontalAlignment = xlCenterSheets(sheet).Range("A5:H5").VerticalAlignment = xlVAlignCenterSheets(sheet).Range("A5:H5").Font.FontStyle = "Bold Italic"Sheets(sheet).Range("A5:H5").Font.Size = 16Sheets(sheet).Range("A5:H5").Columns("A:H").ColumnWidth = 30Sheets(sheet).Range("A5:H5").Borders(xlEdgeBottom).LineStyle =

xlContinuousSheets(sheet).Range("A5:H5").Borders(xlEdgeTop).LineStyle =

xlContinuousSheets(sheet).Range("A5:H5").Borders(xlInsideVertical).LineStyle =

xlContinuousSheets(sheet).Range("A5:H5").Borders(xlEdgeLeft).LineStyle =

xlContinuousSheets(sheet).Range("A5:H5").Borders(xlEdgeRight).LineStyle =

xlContinuousEnd IfIf (sheet = "blank") Then

Sheets(sheet).Range("A1") = "Nome e Cognome"Sheets(sheet).Range("A1").Columns("A").ColumnWidth = 30Sheets(sheet).Range("A1").Borders(xlEdgeBottom).LineStyle =

xlContinuousSheets(sheet).Range("A1").Borders(xlEdgeTop).LineStyle =

xlContinuousSheets(sheet).Range("A1").Borders(xlInsideVertical).LineStyle =

xlContinuousSheets(sheet).Range("A1").Borders(xlEdgeLeft).LineStyle =

xlContinuousSheets(sheet).Range("A1").Borders(xlEdgeRight).LineStyle =

xlContinuousEnd If

Page 80: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

71

End Sub

Sub Intestazione(sheet)If (sheet = "Arancio") Then

Sheets(sheet).Range("A1:H4").MergeCells = TrueSheets(sheet).Range("A1:H4") = "Squadra " + sheetSheets(sheet).Range("A1:H4").Interior.Color = RGB(205, 128, 0)With Sheets(sheet)

.Range("A1:H4").HorizontalAlignment = xlCenter

.Range("A1:H4").VerticalAlignment = xlVAlignCenter

.Range("A1:H4").Font.FontStyle = "Bold Italic"

.Range("A1:H4").Font.Size = 28End With

End If

If (sheet = "Azzurra") ThenSheets(sheet).Range("A1:I4").MergeCells = TrueSheets(sheet).Range("A1:I4") = "Squadra " + sheetSheets(sheet).Range("A1:I4").Interior.Color = RGB(153, 255, 255)With Sheets(sheet)

.Range("A1:I4").HorizontalAlignment = xlCenter

.Range("A1:I4").VerticalAlignment = xlVAlignCenter

.Range("A1:I4").Font.FontStyle = "Bold Italic"

.Range("A1:I4").Font.Size = 28End With

End If

If (sheet = "Viola") ThenSheets(sheet).Range("A1:H4").MergeCells = TrueSheets(sheet).Range("A1:H4") = "Squadra " + sheetSheets(sheet).Range("A1:H4").Interior.Color = RGB(209, 204, 255)With Sheets(sheet)

.Range("A1:H4").HorizontalAlignment = xlCenter

.Range("A1:H4").VerticalAlignment = xlVAlignCenter

.Range("A1:H4").Font.FontStyle = "Bold Italic"

.Range("A1:H4").Font.Size = 28End With

Page 81: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

72 APPENDICE

End IfIf (sheet = "blank") Then

Sheets(sheet).Range("A1").Interior.Color = RGB(212, 212, 212)Sheets(sheet).Range("A1").HorizontalAlignment = xlCenterSheets(sheet).Range("A1").VerticalAlignment = xlVAlignCenterSheets(sheet).Range("A1").Font.FontStyle = "Bold Italic"Sheets(sheet).Range("A1").Font.Size = 16

End IfEnd Sub

Routing dell’applicazione con Backbone.js.

/*global Stweb, Backbone*/

Stweb.Routers = Stweb.Routers || {};

(function () {’use strict’;

Stweb.Routers.Main = Backbone.Router.extend({routes: {

’’: ’home’,’/’: ’home’,’home’: ’home’,’corsi’: ’corsi’,’mieiCorsi’:’mieiCorsi’,’report’: ’report’,’sessioni’ : ’sessioni’,’creazioneSessioni’ : ’creazioneSessioni’,’ERT’ : ’ert’,’contatti’: ’contatti’,’login’: ’login’,

},

home: function(){Stweb.Instances.Views.Home = new Stweb.Views.Home();this.checkLogin();

Page 82: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

73

},

corsi: function(){Stweb.Instances.Views.Corsi = new Stweb.Views.Corsi();this.checkLogin();

},

mieiCorsi: function(){Stweb.Instances.Views.MieiCorsi = new Stweb.Views.MieiCorsi();this.checkLogin();

},

report: function(){Stweb.Instances.Views.Report = new Stweb.Views.Report();this.checkLogin();

},

sessioni: function(){Stweb.Instances.Views.Sessioni = new Stweb.Views.Sessioni();this.checkLogin();

},

creazioneSessioni: function(){Stweb.Instances.Views.creazioneSessioni = new

Stweb.Views.creazioneSessioni();this.checkLogin();

},ert: function(){

Stweb.Instances.Views.Ert = new Stweb.Views.Ert();this.checkLogin();

},

contatti: function(){Stweb.Instances.Views.Contatti = new Stweb.Views.Contatti();this.checkLogin();

},

Page 83: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

74 APPENDICE

login: function(){Stweb.Instances.Views.Login = new Stweb.Views.Login();

},

checkLogin: function(){if(!localStorage.getItem("user")){

location.reload();//ricarico la pagina}

}

});

})();

Model dell’applicazione con Backbone.js.

/*global Stweb, Backbone*/

Stweb.Models = Stweb.Models || {};

(function () {’use strict’;

Stweb.Models.Corsi = Backbone.Model.extend({

url: ’’,

initialize: function() {},

defaults: {},

validate: function(attrs, options) {},

parse: function(response, options) {

Page 84: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

75

return response;}

});

})();

Model Node.js che contiene lo schema della classe utente su MongoDB.

var mongoose = require(’mongoose’);var Schema = mongoose.Schema;

mongoose.connect(’mongodb://...’);

var UserSchema = new Schema({id: Number,first_name: String,last_name: String,email: String,password: String,hr: Boolean

}, { collection: ’users’ });

module.exports = mongoose.model(’User’, UserSchema);

Modulo per la creazione dei report con Node.js.

var fs = require(’fs’);var readline = require(’readline’);

function generate(type, cb){if((type == ’corsi-attivi’)||(type == ’sessioni-corsi-attivi’)){

var lineReader = readline.createInterface({input: fs.createReadStream(’data/corsiAttivi.txt’)

});var data = [];

lineReader.on(’line’, function (line) {

Page 85: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

76 APPENDICE

var arr = line.split(’\t’);if(type == ’sessioni-corsi-attivi’){if(arr[6] == ’A’){

data.push(arr);}

}else{data.push(arr);

}});

lineReader.on(’close’, function(){var columns = [

{ "title": "Course Set ID"},{ "title": "Course Code"},{ "title": "Course Description"},{ "title": "Course Status"},{ "title": "Session Set ID"},{ "title": "Session Number"},{ "title": "Session Status" }

];cb(false, data, columns);

});}

else if(type == ’convocazioni-sicurezza’){var lineReader = readline.createInterface({

input: fs.createReadStream(’data/Corsi_safety.txt’)});var data = [];

lineReader.on(’line’, function (line) {var arr = line.split(’\t’);if (arr[3] == ’Alert’){data.push([

arr[0], arr[1], arr[2], arr[5], arr[6], arr[7], arr[8],arr[10], arr[15], arr[16], arr[17]

]);

Page 86: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

77

}});

lineReader.on(’close’,function(){var columns = [

{ "title": "Course Name"},{ "title": "Course Code"},{ "title": "Last session date"},{ "title": "ID"},{ "title": "Name"},{ "title": "Email"},{ "title": "Current Cost Center code"},{ "title": "Current direct manager"},{ "title": "Status"},{ "title": "R/T"},{ "title": "Full/Part"},

];cb(false, data, columns);

});}

}

exports.generate = generate;

Implementazione del server con Node.js.

// call the packages we needvar express = require(’express’); // call expressvar app = express(); // define our app using expressvar bodyParser = require(’body-parser’);var fs = require(’fs’); //definisco fsvar User = require(’./models/user’);var sha1 = require(’sha1’);var report = require(’./modules/report’);var corsi = require(’./modules/corsi’);

Page 87: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

78 APPENDICE

// configure app to use bodyParser()// this will let us get the data from a POSTapp.use(bodyParser.urlencoded({ extended: true }));app.use(bodyParser.json());

var port = process.env.PORT || 8080; // set our port

// ROUTES FOR OUR API//

=============================================================================var router = express.Router(); // get an instance of the express

Router

app.use(function(req, res, next) {res.header(’Access-Control-Allow-Origin’, ’*’);res.header(’Access-Control-Allow-Headers’, ’Origin, X-Requested-With,

Content-Type, Accept’);next();

});

// test route to make sure everything is working (accessed at GEThttp://localhost:8080/api)

router.get(’/’, function(req, res) {res.json({ message: ’hooray! welcome to our api!’ });

});

//end point della login,url esposta da API a cui il client si connetterouter.post(’/login’, function(req, res){

var username = req.body.username;var password = req.body.password;

User.findOne({ ’email’: username, ’password’: sha1(password) }, ’idfirst_name last_name email hr’, function (err, user) {

if (err) res.json({message: ’error’});res.json({message: ’ok’, user: user});

});});

Page 88: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

79

router.route(’/user’).post(function(req, res){

var user = new User();user.id = req.body.id;user.first_name = req.body.first_name; //imposto l’attributo name

dell’utente, leggendolo dai parametri passati nella richiestapost

user.last_name = req.body.last_name;user.email = req.body.email;user.password = sha1(req.body.password); //password non viene

salvata in chiarouser.hr = req.body.hr;

user.save(function(err){if (err) res.send(err);res.json({ message: ’User created!’ });

});}).get(function(req, res){

User.find(function(err, users){if (err) res.send(err);

res.json(users);})

})

router.get(’/report/type/:type’, function(req, res){report.generate(req.params.type, function(err, data, columns){

if (err) res.json({message: ’error’});res.json({message: ’ok’, data: data, columns: columns});

});});

router.get(’/corsi’, function(req, res){corsi.lista(function(err, data){

Page 89: Dall’analisi dei bisogni allo sviluppo di un applicativo ... · ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una

80 APPENDICE

if (err) res.json({message: ’error’});res.json({message: ’ok’, data: data});

})});

// REGISTER OUR ROUTES -------------------------------// all of our routes will be prefixed with /apiapp.use(’/api’, router);

// START THE SERVER//

=============================================================================app.listen(port);console.log(’Magic happens on port ’ + port);