(Crema) Dall`analisi dei bisogni allo sviluppo di un applicativo di
Transcript
(Crema) Dall`analisi dei bisogni allo sviluppo di un applicativo di
Corso di Laurea in Informatica (Crema) Dall’analisi dei bisogni allo sviluppo di un applicativo di Business Intelligence TESI DI LAUREA DI RELATORE Prof. Paolo Ceravolo Anno Accademico 2015/2016 Tamara Quaranta Matr. 828416 Ringraziamenti Durante la realizzazione di questa tesi molte persone mi sono state vicino e hanno contribuito alla sua realizzazione. Un ringraziamento particolare al Prof. Paolo Ceravolo per la cortesia e la disponibilità e soprattutto per il supporto teorico e tecnico. Un grazie di cuore alla mia tutor Mara Villa, che si è sempre dimostrata attenta e pronta 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. Abstract La tesi presenta i risultati delle attività svolte durante il tirocinio presso la STMicroelectronics di Agrate Brianza, il cui obiettivo era quello di ottimizzare i processi informativi aziendali della funzione HR-Organization Development & Training grazie allo sviluppo di diverse soluzioni, tra cui un sito intranet e un applicativo web per la gestione dei corsi di formazione. Nel dettaglio vengono pertanto presentate le diverse fasi affrontate, a partire dall’analisi dei processi attuali e raccolta dei requisiti, passando per l’identificazione delle soluzioni ottimali, per arrivare infine ai dettagli tecnici e architetturali delle soluzioni implementate. Vengono inoltre proposti spunti di sviluppo ulteriori con particolare attenzione alle analisi di Business Intelligence. Il contesto a cui vengono applicate le attività descritte è quello di un’azienda multinazionale 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 da raggiungere 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 manuale ai dipendenti HR, sia per l’organizzazione logistica che per la reportistica. L’analisi dei processi è stata affrontata utilizzando gli standard della BPMN (Business Process Modeling Notation) e ha portato a produrre degli esempi di modelli per l’ottimizzazione dei flussi di processo legati alla Need Analysis formativa e alla modalità di gestione e calendarizzazione dei corsi durante l’anno di riferimento. Buona parte dell’analisi si è concentrata sull’identificazione dei KPI (Key Performance Indicators) e dei CSF (Critical Success Factors) aziendali, al fine di ottenere dei parametri di valutazione e misurazione che permettono di avere una panoramica chiara degli obiettivi da raggiungere e dei risultati ottenuti. La progettazione delle soluzioni è iniziata con un Feasibility Study focalizzato sui tre scenari coinvolti: il sito intranet del Training, la reportistica e la gestione dei 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 dei dipendenti, grazie allo sviluppo di un sito web ad hoc. La principale tecnologia impiegata è stata Microsoft SharePoint. Le procedure di estrazione delle informazioni attualmente in uso sono state incrementate e migliorate attraverso la creazione di nuovi report basati su SAP Business Objects e Oracle PeopleSoft. Questa reportistica ha permesso di gettare le basi per future attività di Business Intelligence, in quanto fondamentali per avere una visione chiara dei diversi ambiti aziendali funzionale alla progettazione e pianificazione dei processi utili al conseguimento degli obiettivi. È stato inoltre sviluppato un applicativo web, rivolto esclusivamente ai dipendenti HR, per facilitare la creazione e calendarizzazione delle sessioni dei corsi e per accedere più rapidamente ad alcune tipologie di report automatizzati. L’architettura implementata consta di un’interfaccia realizzata con Backbone.js, un layer di API sviluppato con Node.js e suddiviso in moduli indipendenti che interagiscono con un database non relazionale, nello specifico MongoDB. L’introduzione di processi e metodologie di Business Intelligence consentirà di estrarre un maggior valore dagli strumenti realizzati e messi a disposizione durante questi mesi. Un primo vantaggio deriverà dalla valutazione degli effetti sulle competenze 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 sarebbe interessante arrivare a definire degli indicatori strettamente legati all’ambito produttivo, che potranno essere correlati con i percorsi formativi proposti e le competenze acquisite. In conclusione, le attività svolte durante il tirocinio sono state di diversa natura e hanno richiesto l’impiego di strumenti e tecnologie differenti. Tuttavia, le soluzioni analizzate e implementate hanno consentito di muovere i primi passi verso l’ottimizzazione dei processi informativi aziendali del funzione HR. Ognuna di queste potrà in futuro essere approfondita e conseguentemente migliorata, mantenendo un focus costante sull’ottimizzazione delle procedure di Business Intelligence. Indice 1 Il contesto Aziendale 1 1.1 Scenario Aziendale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 La formazione in azienda . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Analisi dei processi 7 2.1 Business Process Model . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 KPI e CSF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Value Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 Progettazione delle soluzioni 3.1 3.2 21 Feasibility study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.1 Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Possibili soluzioni . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.1.3 Benefici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Requirement Analysis and Specification Document . . . . . . . . . . . 24 3.2.1 Dominio (Who and Why) . . . . . . . . . . . . . . . . . . . . 24 3.2.2 Requisiti Funzionali (What) . . . . . . . . . . . . . . . . . . . 26 3.2.3 Requisiti Non Funzionali (Where) . . . . . . . . . . . . . . . . 26 3.2.4 Requisiti del processo e manutenzione (When) . . . . . . . . . 26 4 Implementazione delle soluzioni 4.1 4.2 29 Sito web Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.1.1 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 30 4.1.2 Criticità affrontate . . . . . . . . . . . . . . . . . . . . . . . . 30 Reportistica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.2.1 Tecnologie utilizzate . . . . . . . . . . . . . . . . . . . . . . . 32 iii iv INDICE 4.3 4.2.2 Criticità affrontate . . . . . . . . . Applicazione web per la gestione dei corsi . 4.3.1 Architettura . . . . . . . . . . . . . 4.3.2 Tecnologie utilizzate . . . . . . . . 4.3.3 Criticità affrontate . . . . . . . . . 5 Business Intelligence 5.1 Le funzioni della Business Intelligence . 5.2 Misurazione dell’impatto sui processi di 5.2.1 Reportistica e Gestione Corsi . 5.2.2 Analisi statistica . . . . . . . . 5.2.3 Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . business . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 37 37 40 44 . . . . . 45 46 47 48 51 57 6 Conclusioni 59 Bibliografia 61 Appendice 63 Capitolo 1 Il contesto Aziendale 1.1 Scenario Aziendale STMicroelectronics è stata costituita nel 1987 dalla fusione tra due società di lungo corso nel settore dei semiconduttori, l’italiana SGS Microelettronica e la francese Thomson Semiconducteurs, ed è quotata in borsa dal 1994; oggi è presente nel listino del New York Stock Exchange (NYSE:STM), di Euronext Parigi e della Borsa 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 della Ricerca 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 of Things 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 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 microelettronica. L’azienda è fortemente impegnata nel raggiungimento della propria mission: apportare un contributo positivo e innovativo alla vita delle persone. Dalla gestione e risparmio d’energia alla protezione e sicurezza dei dati, dalle applicazioni per la sanità e benessere della persona agli smart gadget, a casa, in automobile e in ufficio, al lavoro e nel tempo libero. Mission che viene rispecchiata anche dal motto aziendale: ST life.augmented. La sede principale della Società si trova a Ginevra con molti altri siti aziendali nel mondo. 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 è impegnato in 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 possiede quasi 15.000 brevetti e domande di brevetto corrispondenti a più di 9.000 famiglie di brevetti, comprese 500 nuove domande originali presentate nel 2015. La Società fa leva su un ricco portafoglio di tecnologie di fabbricazione dei chip, che comprende processi avanzati CMOS (Complementary Metal Oxide Semiconductor) FD SOI (Fully Depleted Silicon on Insulator), a segnale misto, analogici e di potenza. Fin dalla sua nascita, ST ha creato una cultura fortemente incentrata sulle partnership e nel corso degli anni ha dato vita a una rete mondiale di alleanze strategiche con clienti chiave, fornitori, altri produttori di semiconduttori e importanti istituti accademici e di ricerca di tutto il mondo. Per fornire ai clienti una struttura di produzione indipendente, sicura ed economicamente efficiente, ST si avvale di una rete mondiale di impianti di Front end (per la lavorazione delle fette di silicio) e Back end (per l’assemblaggio, il collaudo e il packaging). I principali impianti di Front end si trovano in Italia ad Agrate Brianza e Catania, in Francia a Crolles, Rousset e Tours e a Singapore. Questi impianti sono affiancati da linee di assemblaggio e collaudo di classe mondiale in Cina, Malesia, Malta, Marocco, Filippine e Singapore. 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 rivolta all’ambiente; è stata una delle prime società industriali globali a riconoscere l’importanza della responsabilità nei confronti dell’ambiente. Negli ultimi anni, infatti, diverse sedi, hanno ricevuto più di 100 riconoscimenti per la loro eccellenza in tutti gli ambiti della Sostenibilità: dalla qualità e responsabilità per i prodotti alla corporate governance, agli aspetti sociali, alla salute e sicurezza del personale fino alla protezione dell’ambiente. Per il conseguimento del successo aziendale rivestono un ruolo fondamentale gli stakeholders, con i quali è necessario mantenere un dialogo attivo per capire al meglio le loro aspettative e interessi. Allo stesso tempo l’azienda ha la possibilità di spiegare la propria attività, i vincoli e le realizzazioni future. Viene posta anche una grande attenzione ai feedback che i portatori di interesse rimandano rispetto alle attività dell’azienda; dal 2012 viene chiesto a tutti gli stakeholders di compilare un survey per ottenere delle informazioni utili per le scelte produttive e organizzative future. Anche i dipendenti hanno la possibilità di dar voce alla propria opinione e dare suggerimenti in base all’esperienza lavorativa quotidiana. 1.2. LA FORMAZIONE IN AZIENDA 5 Figura 1.5: Organigramma Corporate ST 1.2 La formazione in azienda Tra i diversi ambiti di sviluppo e di interesse aziendale, ricopre un ruolo importante la formazione del personale. STMicroelectronics propone un ampio catalogo e programmi ad hoc, sia in ambito tecnico che comportamentale e manageriale, per lo sviluppo delle competenze dei propri dipendenti. A livello Corporate una particolare attenzione è stata rivolta soprattutto al raggiungimento degli standard di conformità rispetto alla formazione in ambito della sicurezza aziendale, 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 che stanno frequentando scuole tecniche per informarli sul lavoro di STMicroelectronics e il settore industriale di riferimento. I dipendenti partecipano regolarmente agli incontri high-tech e a fiere del settore presentando, anche con dimostrazioni pratiche, i prodotti realizzati. L’Organizational Development & Training ha la priorità di soddisfare i bisogni formativi delle singole organizzazioni (produttive, di ricerca, di sviluppo, ...) presenti nella sede al fine di garantire un’adeguata formazione personale e professionale, mantenendo degli elevati standard aziendali. I corsi infatti spaziano dall’apprendimento di competenze base all’approfondimento di competenze specifiche sia in ambito tecnico 6 CAPITOLO 1. IL CONTESTO AZIENDALE sia di sviluppo personale. Gli utenti possono accedere al catalogo corsi, presente sull’intranet aziendale, iscriversi ad un corso di proprio interesse e di seguito partecipare. I corsi selezionati dovranno essere attinenti all’ambito lavorativo del dipendente al fine di garantire migliori performance relativamente al ruolo rivestito. Per raggiungere questi obiettivi e per garantire un’offerta adeguata, il dipartimento effettua una capillare e attenta analisi dei bisogni aziendali, sia ad un livello di bisogni macro-organizzativi sia entrando nel dettaglio del piano di sviluppo di ogni singolo dipendente. Per questo motivo il calendario corsi molto ricco e che permette ai dipendenti di poter frequentare le sessioni dei corsi in base anche agli impegni lavorativi. Oltre all’attenzione rivolta si dipendenti, l’azienda offre molteplici opportunità di stage in collaborazione con scuole superiori e università (come ad esempio attraverso il progetto "Alternanza scuola-lavoro") dando la possibilità agli studenti di poter fare un’esperienza lavorativa in una multinazionale. Oltre ai corsi vengono proposti dei percorsi formativi di sviluppo personali estesi a tutti i dipendenti indipendentemente dalla sede, come ad esempio il percorso MIM rivolto a tutti i Junior Professional. Figura 1.6: esempio di percorso formativo per Junior Professional Capitolo 2 Analisi dei processi STMicroelectronics ha come mission quella di contribuire al miglioramento della qualità di vita delle persone attraverso le sue tecnologie. Ogni dipartimento lavora per raggiungere questi obiettivi attraverso un’attenta e minuziosa 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 fondamentale della formazione dei propri dipendenti; formazione non solamente tecnica ma anche di sviluppo delle competenze personali e manageriali e miglioramento delle competenze relazionali e di lavoro in team. La priorità del dipartimento è di assicurare la soddisfazione dei bisogni formativi delle organizzazioni nella loro capacità di gestire nuovi obiettivi di crescita. 7 8 CAPITOLO 2. ANALISI DEI PROCESSI All’interno dell’Organizational Development & Training i i responsabili delle diverse famiglie corsi presenti nel catalogo in modo tale garantiscono un migliore organizzazione del lavoro e proporre degli adeguati percorsi formativi per il loro ambito. L’offerta formativa propone programmi che integrano metodologie tradizionali e innovative, come coaching, counseling, etc., utilizzando sia le competenze di dipendenti interni che avvalendosi della collaborazione di consulenti esterni, ponendo anche molta attenzione ai feedback ricevuti dai partecipanti ai corsi. La valutazione dei corsi erogati viene effettuata sulla base del Metodo di valutazione Kirkpatrick. Il metodo utilizzato è stato elaborato da Donald Kirkpatrick nel 1969 e basato su 4 livelli su cui impatta la formazione I 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 formazione rispetto al livello di soddisfazione, interesse e gradimento del corso e il gradimento del corso sul piano didattico, organizzativo e sociale. Il feedback ricevuto subito dopo la partecipazione permette un controllo e un conseguente miglioramento dell’attività proposta. Il secondo livello si focalizza sull’efficacia delle metodologie utilizzate per favorire l’apprendimento. Vengono utilizzati dei questionari da somministrare prima della partecipazione al corso (pre-test) e alla fine dell’attività formativa (post-test) in modo da monitorare l’impatto che la metodologia di insegnamento ha avuto sui partecipanti. Il livello 3 analizza quanto di quello che è stato appreso è stato possibile trasferire in ambito lavorativo; valuta quindi quali cambiamenti nel comportamento sul lavoro sono derivati dalla formazione. Non sempre quello che è stato appreso viene applicato nella stessa misura in termini concreti di modifica del comportamento in ambito aziendale. L’ultimo livello, invece, sposta l’interesse sull’azienda e sull’impatto che la formazione ha avuto in termini di riduzione dei costi, miglioramento dell’efficacia degli interventi, 9 incremento della produzione, riduzione dei tassi di turnover e miglioramento del clima aziendale. A livello di sede Continental Italy non vengono valutati i quattro livelli per tutti i corsi erogati; solo il primo livello viene richiesto per ogni famiglia di attività formativa. Il secondo livello viene largamente utilizzato per la valutazione dei corsi; mentre il livello 3 attualmente risulta attivo per pochi corsi a livello manageriale. La difficoltà nell’estendere questo livello di valutazione risiede nel fatto che, per un’analisi accurata, è necessario coinvolgere diverse persone del team del dipendente e dedicare tempo per colloqui e restituzioni di quello che è emerso; risorse e tempistiche spesso difficili da integrare con le richieste aziendali e produttive. La valutazione del "trasferimento sul 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 ha frequentato il corso e che partecipano all’osservazione del suo comportamento in ambito lavorativo. Dopo un periodo temporale di circa 4 mesi è richiesto loro di dare un feedback rispetto a quanto osservato. Dopo aver raccolto i dati, il valutatore effettua una restituzione con l’interessato in modo da potersi confrontare su quanto emerso. Per avere una visione più chiara del progetto e per pianificare correttamente una strategia di intervento è possibile utilizzare l’analisi SWOT a supporto delle decisioni future. La matrice SWOT viene usata per valutare punti di forza (Strengths), debolezza (Weaknesses), opportunità (Opportunities) e le minacce (Threats) di un processo aziendale e risulta importante per pianificare le attività utili al conseguimento di un obiettivo prefissato. L’obiettivo dell’Organizational Development & Training è quello di aumentare l’offerta formativa, rispondendo in modo adeguato alle esigenze, garantendo un elevato standard di qualità e un conseguente miglioramento dei diversi aspetti dei singoli corsi. 10 CAPITOLO 2. ANALISI DEI PROCESSI Tabella 2.1: SWOT Analysis 2.1 Business Process Model Al fine di migliorare l’efficacia e l’efficienza dei processi risulta opportuno avere una chiara visione dei processi aziendali, nei quali risultino evidenti i ruoli coinvolti e le loro interazioni. Per questo motivo i processi possono essere descritti attraverso il Business Process Modeling (BPM), rappresentandoli nell’ottica attuale (as-is) e in quella desiderata (to-be). Esistono diverse tecniche di modellazione dei processi che presentano un certo livello di standardizzazione della notazione grafica; tra questi troviamo Business Process Model and Notation (BPMN). Questo standard offre una notazione grafica dei processi di business basata sui flo- 2.1. BUSINESS PROCESS MODEL 11 wchart e molto simile ai diagrammi di attività utilizzati in UML (Unified Model Language), molto utile per comprendere e ridefinire le attività coinvolte. All’interno dell’Organizational Development & Training esistono moltissimi processi differenti che interagiscono tra loro; nel nostro caso ci focalizzeremo sul processo di pianificazione dell’offerta formativa annuali e sulla modalità di iscrizione ad un corso da parte di un dipendente. I referenti dell’Organizational Development & Training raccolgono le richieste, relative ai bisogni formativi; sulla base dei risultati ottenuti negli anni precedenti e sulle attività svolte si cerca di pianificare un calendario corsi per l’intero anno successivo. Figura 2.2: Pianificazione offerta formativa annuale Vengono prese in considerazione tutte le richieste pervenute, ma queste sono valutate e organizzate in relazione alle priorita’ aziendali e soprattutto in base al budget disponibile per l’anno di riferimento. Inoltre, essendo un’azienda grande e con una notevole offerta formativa, la gestione della 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 la collaborazione di docenti sia per avere delle ulteriori aule a disposizione. Una volta pianificato definitivamente il calendario delle sessioni dei corsi, esso non deve ritenersi definitivo ma verrà adattato al reale andamento delle attività in azienda; infatti potrebbero esserci delle sessioni che dovranno essere cancellate o spostate in 12 CAPITOLO 2. ANALISI DEI PROCESSI caso di un numero non sufficiente di partecipanti o per altri motivi organizzativi. L’iscrizione e la partecipazione ad un corso da parte di un dipendente richiede l’approvazione da parte dal manager di riferimento. Questo per evitare che l’assenza di un dipendente crei problemi a livello produttivo e 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 provenienti dai diversi attori coinvolti. L’azienda, sia a livello corporate che locale, presta molta attenzione a formare adeguatamente i propri dipendenti in modo da garantire anche una maggiore competitività sul mercato rispetto alle altre aziende del settore. 2.2 KPI e CSF I KPI (Key Performance Indicators) sono una parte importante nella pianificazione 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 da avere una fotografia chiara della situazione aziendale e una valutazione dell’efficacia delle strategie messe in atto. La realtà italiana che comprende "Sicilia", che comprende le sedi di Catania e Palermo, 2.2. KPI E CSF 13 e "Continental Italy", che comprende Agrate Brianza, Aosta, Arzano, Cornaredo, Marcianise e Lecce. 14 CAPITOLO 2. ANALISI DEI PROCESSI Tabella 2.2: Key Performance Indicators 2.2. KPI E CSF 15 L’Organizational Development & Training definisce ogni anno diversi obiettivi che permettano una pianificazione ponderata delle attività che verranno svolte durante l’anno con la divisione dei rispettivi compiti. L’azienda, a livello corporate, pone una particolare attenzione alla formazione dei propri dipendenti e in alcuni ambiti pone degli standard ben precisi, come ad esempio nell’ambito della sicurezza sono richieste almeno 4 ore di formazione annua per dipendente. Per questo motivo un livello di formazione adeguato risulta di primaria importanza a tutti i livelli e trasversalmente a 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 dipendenti e dei responsabili delle singole organizzazioni presenti. I dipendenti sono invitati anche a proporre argomenti e tematiche che vorrebbero approfondire per aumentare la propria performance lavorativa. In base alle richieste raccolte e alle esigenze aziendali, il dipartimento training può pianificare al meglio l’offerta formativa per l’anno successivo. Naturalmente, nell’organizzazione dell’offerta formativa, oltre ai bisogni, è necessario rispettare il budget annuale concesso dall’azienda. L’obiettivo è quello di rispettare il budget assegnato senza che questo impatti negativamente sulla qualità del servizio erogato. Connesso alla contenimento dei costi di formazione e alla specificità di alcune tematiche affrontate, quando è possibile l’azienda cerca di incentivare l’affidamento ai corsi al personale interno piuttosto che incaricare aziende di consulenza esterne. Per questo motivo, alle persone selezionate, viene offerta e garantita la formazione e il conseguimento delle certificazioni necessarie per la docenza. L’impegno dei dipendenti che si rendono disponibili ad effettuare attività formative, in aula o on the job, viene riconosciuto e premiato attraverso una cerimonia aziendale annuale. Come anticipato, il dipartimento e l’azienda stessa, pongono particolare attenzione a mantenere degli elevati standard formativi, sia a livello di gradimento che di apprendimento. La scala di riferimento utilizzata per la valutazione, come descritto nel paragrafo precedente, si basa sul modello Kirkpatrick. Attualmente lo standard per il livello 1 che riguarda il gradimento e la soddisfazione dei partecipanti rispetto al corso che hanno frequentato e l’obiettivo per le sedi Italiane è 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 è quello di ottenere un delta positivo tra risultati ottenuti nel pre-test (effettuato prima di 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 corso erogate in un anno. Tabella 2.3: Critical Success Factors La calendarizzazione delle sessioni erogate per tipologia di corso viene effettuata all’inizio dell’anno sulla base dell’analisi dei bisogni, del budget e degli spazi a disposizione, anche se tuttavia può essere modificato in itinere. Per migliorare l’organizzazione il dipartimento, attraverso un nuovo catalogo e un nuovo sito intranet maggiormente esplicativo, mira a favorire e a facilitare la scelta e l’iscrizione da parte di un dipendente ad un corso a catalogo. In base alla tipologia di corso viene inoltre valutato se è opportuno che i dipendenti della stessa organizzazione e squadra partecipino alla stessa sessione. In caso contrario, per corsi con una o due sessioni per anno, un dipendente potrebbe dover attendere un lungo periodo di tempo prima di poter frequentare e approfondire un determinato argomento. 2.2. KPI E CSF 17 Per questo motivo si pone sempre maggiore attenzione alla collaborazione con i referenti 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 visione sempre aggiornata sui progressi, al fine di mettere in pratica delle possibili attività correttive. A fine anno viene poi fatta una valutazione complessiva dell’anno trascorso rispetto al raggiungimento degli obiettivi precedentemente prefissati e confrontata con la situazione degli anni precedenti. Da quanto emerge dai grafici, il livello di gradimento e soddisfazione dei dipendenti relativo ai corsi di formazione frequentati ha raggiunto sempre valutazioni superiori o uguali al 6.1(valore minimo), con un incremento negli ultimi 2 anni. E’ possibile osservare anche un miglioramento delle conoscenze apprese durante il corso con un tasso di risposte corrette nettamente superiore nella compilazione del questionario al termine della formazione in aula. Figura 2.4: Valutazione media Kirkpatrick Livello 1 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 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 costi di training ma sono aumentati i fondi messi a disposizione da organizzazioni di rappresentanza delle Parti Sociali. 2.3 Value Model Il Value Model è un modello utilizzato per rappresentare quali valori, tra gli attori coinvolti nel processo, vengono scambiati. All’interno del nostro scenario aziendale gli attori sono i dipendenti aziendali, i dipendenti dell’Organizational Development & Training ed infine l’azienda stessa. Il segmento di mercato di riferimento è quello della produzione di Microprocessori. Figura 2.7: Value Model 1 I Fondi Interprofessionali per la formazione continua sono stati istituiti con la legge 388/2000 con l’obiettivo di diffondere la pratica dell’aggiornamento e della formazione nelle imprese italiane. I fondi sono organismi associativi di diritto privato, che vengono istituiti in base ad accordi interconfederali e si alimentano con il contributo dello 0,30% in base alle adesioni delle imprese 20 CAPITOLO 2. ANALISI DEI PROCESSI Come rappresentato in figura, STM mette a disposizione un budget annuale da utilizzare per la formazione dei propri dipendenti e questo ambito viene gestito dall’Organizational Development & Training . Il dipartimento raccoglie i bisogni formativi da parte dei dipendenti e in base alle richieste ricevute e al budget eroga l’offerta formativa adeguata. I dipendenti, attraverso la frequenza ai corsi, acquisiscono delle competenze utili per la loro mansione e ambiente lavorativo. Attraverso questo scambio l’azienda può usufruire delle maggiori competenze dei propri lavoratori per la competitività sui mercati internazionali. Infatti grazie a dipendenti più competenti ed efficienti l’azienda è in grado di introdurre innovazione all’interno del mercato di riferimento, quello dei microprocessori. Innovazione e qualità risultano essere valori fondamentali da immettere nel mercato per aumentare il valore aziendale e naturalmente i guadagni che permettono di continuare ad investire sul miglioramento delle competenze dei propri dipendenti. Capitolo 3 Progettazione delle soluzioni 3.1 3.1.1 Feasibility study Scenario Sito web Training L’utente che deve scegliere un corso da frequentare ha la possibilità di consultare un catalogo aziendale con l’offerta formativa disponibile. Attualmente, l’azienda ha un’offerta molto ampia ma la ricerca e la consultazione online del catalogo non risultano essere intuitive e dettagliate. Non è presente una descrizione esplicativa dei singoli corsi e non c’è un raggruppamento per percorso formativo che aiuti il dipendente nella scelta, sebbene i corsis ono raggruppati per aree o in percorsi. Non sono visibili né le medie delle valutazioni di gradimento, che i singoli partecipanti compilano dopo aver frequentato un corso, né i commenti degli utenti. Queste due informazioni potrebbero aiutare maggiormente l’utente a capire quale corso risponda meglio ai suoi bisogni e interessi. Reportistica Attualmente i test di valutazione dei corsi, relativi sia al gradimento che all’apprendimento dei singoli partecipanti (valutazione pre e post frequenza), vengono inviati manualmente. Anche l’invio dei promemoria relativi alla compilazione devono essere inviati manualmente; i dipendenti dell’Organizational Development & Training devono cercare le singole sessioni dei corsi e inviare una mail ai singoli partecipanti. Sempre per 21 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 relativi alla Sicurezza con le rispettive scadenze, da cui deriva la necessità di convocare gli utenti che hanno bisogno di rinnovare la certificazione ai sensi di legge. L’utente generico può iscriversi ai corsi ma il sistema attuale permette l’iscrizione anche se il numero massimo di posti disponibili è stato superato. Gestione corsi L’utente del dipartimento dell’Organizational Development & Training deve gestire i nominativi dei dipendenti iscritti alle liste di attesa per singoli corsi e gestire l’assegnamento alle sessioni erogate. Questa attività risulta essere abbastanza complessa in quanto deve considerare anche le disponibilità degli iscritti in termini di turni lavorativi e esigenze organizzative. Per una migliore organizzazione sarebbe opportuno poter gestire le iscrizioni e poterle visualizzare precedentemente. Attualmente il dipendente si iscrive in una lista di attesa del corso di interesse, quando viene attivata una sessione viene convocato. Successivamente i dipendenti devono confermare la partecipazione attraverso un’email di conferma. Il responsabile di Training deve inserire i nominativi nella sessione attiva. Naturalmente i posti sono limitati e in base alle 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 formazione con l’aggiunta, dove è possibile, di immagini e filmati che permettano all’utente una 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 partecipato alle sessioni precedenti. 3.1. FEASIBILITY STUDY 23 • Raggruppamento per aree e percorsi formativi dei corsi offerti in modo guidare il dipendente nella scelta e sviluppare le competenze in modo mirato e coerente. • Creazione di un catalogo corsi interattivo e maggiormente intuitivo nella consultazione da parte dei dipendenti. Reportistica • Facilitare l’interrogazione del DB e l’estrazione dei dati utilizzando un Database aziendale aggiornato e integrare i dati non presenti in esso. • Generare delle query e dei report standard sulla base delle esigenze del dipartimento con un’interfaccia semplificata che permetta di modificare alcuni parametri per l’interrogazione. I report potranno essere salvati in diversi formati in modo da facilitarne l’invio a chi lo ha richiesto. • Inserire un campo per ciascun corso che ne indichi il costo e integrarlo con una funzione che calcoli il costo complessivo in base alle sessioni erogate per il periodo di riferimento selezionato. • Generazione automatica su base mensile di un report che segnali nominativi e corsi per cui è necessaria una sessione di aggiornamento. • Invio settimanale del foglio firme con nominativi dei partecipanti, informazioni logistiche del corso e del docente inviati settimanalmente ai responsabili di training, in modo da avere una modulistica condivisa e con informazioni aggiornate con i database aziendali. Gestione corsi Per gestire al meglio la creazione e la calendarizzazione delle sessioni dei diversi 24 CAPITOLO 3. PROGETTAZIONE DELLE SOLUZIONI corsi sarebbe opportuno sviluppare un’interfaccia web, utilizzata dai dipendenti dell’Organizational Development & Training, che permetta la visualizzazione dei corsi e delle sessioni attive e le persone iscritte. Attraverso l’applicazione il responsabile potrebbe gestire il numero, la data e i partecipanti delle singole sessioni in modo da ottimizzare la pianificazione e l’organizzazione dell’offerta formativa nei mesi successivi. L’applicazione presenterebbe una sezione specifica per la gestione dei corsi relativi alla sicurezza aziendale e ai corsi rivolti alle persone addette alle gestione delle emergenze. Un pannello di report permette la generazione, in diversi formati, di alcuni modelli di report standard aggiornati settimanalmente o quotidianamente. 3.1.3 Benefici Le diverse soluzioni software sviluppate per rispondere alle esigenze del cliente dovrebbero portare ad una riduzione del tempo per l’estrazione dei dati e per la creazione di report specifici per differenti richieste rivolte all’Organizational Development & Training . I dati sarebbero integrati con una maggiore facilità di gestione e diminuirebbero il numero di possibili errori nei dati, dovuti a modifiche da parte di persone non autorizzate e di errori nell’aggregazione. Anche i report relativi alle rendicontazioni e calcolo del budget presenterebbero una minore possibilità di errore nei calcoli in quanto sarebbero automatizzati. I promemoria verrebbero inviati in modo schedulato automaticamente senza la necessità che il dipendente controlli le singole sessioni dei corsi e invii manualmente la mail. Lato utente, il dipendente sarebbe facilitato nella scelta dei corsi in modo da sviluppare le competenze che più gli interessano. 3.2 Requirement Analysis and Specification Document 3.2.1 Dominio (Who and Why) Sito web Intranet L’interfaccia relativa ai corsi di formazione deve essere utilizzata non solo dai dipendenti dell’Organizational Development & Training, ma anche da tutti i dipendenti 3.2. REQUIREMENT ANALYSIS AND SPECIFICATION DOCUMENT 25 dell’azienda. Naturalmente i permessi e la possibilità di accedere a specifiche funzionalità sarà differente in base al gruppo e al ruolo degli utenti in azienda. All’interno dell’interfaccia deve esserci la possibilità di accedere ad un catalogo corsi chiaro e dettagliato, arricchito con immagini e/o video e valutazione degli utenti, in modo da facilitare l’utente nella scelta. Per quest’ultimo scopo, è consigliabile raggruppare i corsi in percorsi formativi per tematiche e competenze. L’interfaccia avrà anche un’area di documenti condivisi per favorire la consultazione del materiale da parte dei partecipanti ad un determinato corso. Reportisitica L’interfaccia per l’utilizzo del database è rivolta esclusivamente ai dipendenti dell’Organizational Development & Training, questo perchè è presente la necessità di estrapolare dati aziendali e sensibili in modo rapido e riducendo al minimo la possibilità di errore. Considerata la presenza di diversi database aggiornati con tempistiche differenti emerge la necessità di riunire le informazioni in un’unica piattaforma. L’Organizational Development & Training necessita di una gestione semplificata e automatizzata dei costi dei corsi per la creazione del prospetto spese. I template di report creati provvedono alla segnalazione ai dipendenti con corsi obbligatori che necessitano di aggiornamento periodico (corsi Sicurezza) per rispondere alle normative di legge vigenti. Esiste inoltre la necessità di un invio automatico e schedulato delle email di richiesta compilazione di questionari per la valutazione del gradimento e dell’apprendimento relativi al corso frequentato. Gestione corsi L’interffaccia per la gestione dei corsi è rivolta esclusivamente ai dipendenti l’Organizational Development & Training. Attraverso l’applicazione gli utenti possono creare sessioni e gestire le iscrizioni prima di inserirle definitivamente a database e queste potranno essere facilmente condivise tra i responsabili di training. L’interfaccia offre la funzionalità di scegliere tra alcuni modelli di report presenti e aggiornati e scaricarli in formato excel o pdf in base alle proprie esigenze. Per supportare i responsabili della gestione dei corsi di sicurezza aziendale è presente una sezione apposita per questa tipologia di corsi. 26 3.2.2 CAPITOLO 3. PROGETTAZIONE DELLE SOLUZIONI Requisiti Funzionali (What) L’interfaccia DB deve accedere a dati provenienti da differenti piattaforme per generare un unico risultato aggiornato e corretto. Per questo motivo, i dati devono essere aggiornati giornalmente in modo automatico (aggiornamento notturno). Anche i report devono essere schedulati e inviati automaticamente ai responsabili della 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 di vista 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 acquistati da fornitori esterni) e fogli Excel utilizzati nella gestione della rendicontazione e dei corsi legati alla sicurezza. I dati esportati sono sensibili e quindi deve essere garantito l’accesso solo a persone autorizzate per evitare la diffusione e l’utilizzo improprio di essi. Inoltre i dati e le piattaforme devono essere sempre disponibili e con un basso tasso di possibilità di errore. La scelta del tipo di database e linguaggio di implementazione deve essere ammesso dalle 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 Software con altre funzionalità (report più dettagliati, gestione della parte testistica) e altri tools utilizzati in azienda. Inoltre il codice deve essere facilmente comprensibile e modificabile da altri admin che dovranno intervenire in caso di nuove implementazioni e di controllo. 3.2. REQUIREMENT ANALYSIS AND SPECIFICATION DOCUMENT Figura 3.1: Diagramma dei casi d’uso 27 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 differenti tecnologie. 4.1 Sito web Training L’Organizational Development & Training con sede ad Agrate Brianza e responsabili delle sedi appartenenti alla Continental Italy hanno espresso la necessità di un nuovo sito intranet che raccogliesse le informazioni relative all’attività formativa e che fosse di facile navigazione per l’utente. La tecnologia scelta per lo sviluppo di questa soluzione è Microsoft Sharepoint, la cui scelta è conforme agli standard aziendali. Il sito è accessibile dagli utenti connessi all’intranet aziendale e quindi non visibile dall’esterno senza connessione VPN; inoltre, alcune tipologie di risorse sono accessibili solo a un target specifico di dipendenti. I permessi sono gestiti attraverso la funzionalità messa a disposizione da Sharepoint e che consente di associare gruppi di utenti a determinate risorse. L’obiettivo è creare un sito web relativo al training e a tutti gli aspetti ad esso associati, in modo che gli utenti possano facilmente trovare le informazioni e il materiale di loro interesse. Lo spazio web infatti raccoglie tutti i documenti utili ai dipendenti per la scelta del proprio percorso formativo e sono presenti anche le spiegazioni 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 30 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI attraverso un video. 4.1.1 Tecnologie utilizzate Sharepoint Microsoft Sharepoint è una piattaforma di Content Management System che, trattandosi di una tecnologia lato server, permette anche la distribuzione di siti web all’interno dell’intranet aziendale. Il software ha lo scopo di permettere la condivisione di informazioni e documenti; da la possibilità di creare liste, repository documentali, calendari, etc. sfruttando anche l’integrazione con gli applicativi del pacchetto Office. I documenti possono essere modificati da uno solo utente alla volta utilizza attraverso le funzioni di "check-in" e di "check-out" che evitano conflitti sull’utilizzo della risorsa condivisa. STMicroelectronics da la possibilità ai dipartimenti, dislocati nelle diverse sedi aziendali, di creare siti dedicati e di condividere documenti di interesse per il proprio lavoro. 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 un progetto con il proprio team di collaboratori; il secondo è utilizzato come soluzione per salvare, gestire e condividere i documenti con altri utenti ed il Survey Center viene utilizzato per creare e gestire questionari per avere un feedback riguardo ad attività svolte in azienda (es. corsi d’inglese). Attraverso l’utilizzo del DocShare vengono condivisi i materiali didattici messi a disposizione dai singoli docenti e relativi ad i corsi erogati. La piattaforma permette una gestione dinamica e agile dei permessi di accesso alle singole risorse. Bloccando l’ereditarietà, che estenderebbe gli stessi permessi a tutto il sito, è possibile gestire le diverse tipologie di utenti in base alle esigenze ed evitare che utenti non autorizzati modifichino o cancellino dati importanti. 4.1.2 Criticità affrontate Sharepoint offre diverse funzionalità in base al livello dei permessi associati all’utente. Solitamente, un’utenza con ruolo di amministratore ha accesso a tutte le 4.1. SITO WEB TRAINING 31 funzionalità esposte dal prodotto; tuttavia, nel caso di STMicroelectronics, è presente un’ulteriore livello di controllo e sicurezza esercitato dal dipartimento IT a livello Corporate (quindi esteso in tutte le sedi). Questo ha determinato l’impossibilità di usufruire a pieno di tutte le potenzialità del prodotto, ponendo parecchi rallentamenti (es. richiesta di permessi, risorse, etc.) e limiti alle scelte progettuali e implementative. 32 4.2 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI Reportistica Diversi modelli di report sono stati impostati per rispondere alle diverse esigenze dell’Organizational Development & Training in termini di estrazione di dati. Le informazioni presenti in questi report vengono utilizzate per diversi scopi, tra cui la gestione delle sessioni di training, la gestione dei rinnovi per i corsi di sicurezza aziendale e la risposta a differenti richieste da parte dei responsabili delle organizzazioni interne alla sede e alla Corporate stessa. Per facilitare anche l’organizzazione logistica dei corsi è stato implementato un modello di report (foglio firme) che viene aggiornato automaticamente con le informazioni del corso e i nominativi dei partecipanti, e inviato ai responsabili dei training su base settimanale. Nel caso della sicurezza, il modello creato evidenzia i nominativi dei dipendenti che devono essere convocati in base alle diverse tipologie di corso, facilitandone la gestione che inizialmente veniva svolta manualmente. Tutta la reportistica è stata impostata avvalendosi delle tecnologie messe a disposizione dallo scenario aziendale, tra cui SAP Business Objects e Oracle PeopleSoft. 4.2.1 Tecnologie utilizzate SAP BusinessObjects BusinessObjects XI (BOXI) è un’applicazione SAP utilizzata per la business intelligence. Offre soluzioni, da strumenti flessibili di reporting, query e analisi ad hoc a cruscotti e visualizzazioni avanzate. SAP Business Objects è un portafoglio di strumenti e applicazioni perfettamente integrate con i software gestionali SAP, utilizzato in azienda per la gestione della fatturazione e dei rapporti commerciali con i fornitori. Esso viene utilizzato per la reportistica, analisi strategica dei dati, qualità delle informazioni, pianificazione e budget. Presenta un’interfaccia utente che consente l’interrogazione di database SQL anche a chi non ha sviluppato una competenza tecnica e permette di salvare la documentazione generata in diversi formati facilmente condivisibili con altri utenti. L’applicativo consente di accedere al database corporate in quanto esso presenta un livello semantico di business intelligence che permette di lavorare sui dati d’interesse senza modificare direttamente quelli presenti nel database; esso prende il nome di universo. In azienda esistono diversi tipi di universi ognuno dei quali presenta delle 4.2. REPORTISTICA 33 informazioni relative a dipendenti, posizione lavorativa, sede, formazione, etc. Ogni utente può accedere ad essi e eseguire determinate operazioni in base ai permessi settati sul profilo o sul gruppo di appartenenza dell’utente stesso. Viene utilizzato un Query Panel, dove l’utente seleziona i campi che vuole estrapolare e le condizioni che devono rispettare; la query creata è un tipo di data provider da cui è possibile generare dei reports interattivi utilizzando anche funzioni di drill-down e slice and dice. Il database corporate è costantemente aggiornato e l’universo e/o il report generato possono essere semplicemente sincronizzati attraverso un refresh. Per rispondere alle esigenze aziendali, sono stati sviluppati, e sono tuttora in via di ampliamento, dei report standard che facilitano la generazione di specifici report da parte del dipartimento. Le query sugli universi disponibili, differenti in base ai permessi settanti, sono state impostate attraverso il Query Panel messo a disposizione dal software. Figura 4.1: Query panel BusinessObjects Nella parte sinistra del pannello vengono visualizzati gli oggetti, le misure e i dettagli che possono essere estratti e su cui è possibile determinare delle condizioni. Nella parte superiore destra è visualizzata la lista degli oggetti estratti dalla query in 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 vengono applicate agli oggetti estratti. Il tool presenta la possibilità di scegliere diverse tipologie di condizioni da applicare. Nel caso non sia possibile utilizzare l’ambiente 34 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI predefinito, BO dispone di un editor SQL che permette di scrivere le query sul database 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 dei fogli firme, necessari per la registrazione dei partecipanti di un corso, per le sessioni dei corsi programmati nella settimana di riferimento. Il report, generato con BO, viene inviato settimanalmente alla fine della settimana aggiornato con i dati relativi alla settimana successiva. Il file .rep è stato caricato sul serve aziendale BO@ST dove è stato possibile schedulare l’aggiornamento e l’invio automatico ai responsabili della formazione. Gli altri modelli di report creati non sono stati schedulati ma utilizzati dai dipendenti dell’Organizational Development & Training in base alle esigenze e inserendo i relativi prompt. Inoltre, potendo salvare i report in diversi formati, sono stati utilizzate anche delle macro VBA per ottimizzare l’aggiornamento e la formattazione del file in base alle necessità. Ad esempio e’ stata scritta una macro per facilitare l’organizzazione in squadre dei membri dei gruppi di emergenza aziendale. 4.2. REPORTISTICA 35 Oracle PeopleSoft PeopleSoft è un software prodotto da Oracle utilizzato per la gestione dei diversi aspetti di business per aziende che presentano un elevato grado di complessità. Esso viene utilizzato per permettere la comunicazione e la condivisione dei dati tra le diverse sedi aziendali presenti in tutto il mondo. Utilizza, quindi, un database relazionale Oracle; il software si basa sulla tecnologia di People Tools. Essa include differenti componenti utilizzati per creare applicazioni web-based. Viene utilizzato un linguaggio di scripting, conosciuto come PeopleCode, che permette di definire differenti tipologie di metadata, strutture standard di sicurezza e permette di interfacciarsi con database SQL. I metadata descrivono informazioni per le interfacce, le tabelle, i messaggi, la navigazione, etc. Ciò permette a PeopleSoft di essere indipendente dalla piattaforma sulla quale verrà eseguita. Attualmente il software viene utilizzato per la gestione di diverse attività che coprono differenti ambiti della formazione: creazione di corsi e sessioni, iscrizioni dei partecipanti, controllo dei percorsi di acquisizione delle competenze dei singoli dipendenti, gestione del corpo docenti, etc. Inoltre PeopleSoft viene sinconizzato giornalmente con 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à affrontate Le tipologie di report richieste rispondono a diverse esigenze, più o meno complesse. Lo scenario, per questo motivo, è piuttosto variegato, in quanto i dati devono essere recuperati da sorgenti differenti e non sempre è possibile risalire alla strut- 36 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI tura dati originaria. La principale sorgente è PeopleSoft, che presenta un livello di astrazione che non consente di comprendere la struttura delle tabelle relazionali che lo compongono ed espone delle query di default che non permettono di modificare campi, filtri e condizioni dell’estrazione. Questa mancanza di visibilità della struttura da origine a incoerenze nei report generati utilizzando tool diversi, nonostante i dati di partenza siano gli stessi. Ad esempio, il report di ore medie annuali di formazione per dipendente restituisce risultati differenti a seconda che venga generato utilizzando PeopleSoft o BusinessObjects, perché vengono applicati dei filtraggi differenti su cui non sempre si ha il totale controllo. Tali criticità sono state risolte procedendo a ritroso attraverso un attento confronto con altri colleghi per cercare di ricostruire la struttura originaria e le logiche di filtraggio delle query. Inoltre, in BusinessObjects sono presenti differenti Universi, ognuno dei quali riporta dati differenti, rendendo pertanto difficoltoso comprendere quali siano gli Universi corretti da utilizzare per le interrogazioni. Infine, una criticità rilevante è identificabile nella difficoltà di abituare e istruire i dipendenti ad utilizzare determinati tool di reportistica, in quanto abituati a eseguire estrazioni dati utilizzando fogli di calcolo Excel. 4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 4.3 37 Applicazione web per la gestione dei corsi Per facilitare la creazione di sessioni dei corsi, soprattutto quelli riguardanti la sicurezza aziendale, e gestire le iscrizioni in modo efficiente, è stata sviluppato un prototipo 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 sviluppata sono stati dettati principalmente dallo scenario presente e dalle esigenze di manutenzione future. L’applicazione web verrà posizionata su un server Linux, offrendo pertanto la libertà di scegliere linguaggi e tecnologie open source, ma al tempo stesso deve essere realizzata con linguaggi popolari e opportunamente documentati, in modo da garantire la possibilità di sviluppi evolutivi o manutentivi futuri anche da parte di altri dipendenti. La scelta è pertanto ricaduta su un’architettura basata su servizi REST, che permetta di tenere logicamente separata la parte di back-end da quella di front-end. Questo permette di intervenire sull’interfaccia utente indipendentemente dai servizi che forniscono 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 dagli utenti e che offre tutte le funzionalità previste. Per questo layer si è scelto di utilizzare la libreria Backbone.js. • API rest: la componente server side che risponde alle richieste dei client e che si 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à utilizzate nell’applicazione. Ogni modulo interagisce direttamente con il database e si occupa dell’estrazione e della persistenza dei dati sul database. Anche questi componenti appartengono allo strato sviluppato con Node.js. 38 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI • Database: il layer di persistenza dei dati è stato implementato con l’ausilio di MongoDB. Per lo sviluppo dell’applicazione sono state utilizzate API RESTFul. L’architettura REST richiede l’utilizzo di ipertesti e permette una maggiore scalabilità 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 di conoscere solo l’URI iniziale, e successivamente sceglie in base al server utilizzato di 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 protocollo dettagliato che deve in genere essere compilato da entrembi (ad esempio URI di una forma particolare si accede in un ordine particolare a un estremo, SOAP / WSDL / WS * all’altra). Questo approccio può mostrare delle fragilità, in quanto eventuali modifiche devono essere attuate sia sul server che sul client allo stesso tempo. Questo approccio diventa quindi insostenibile con la crescita di server e client in interazione. I server, in particolare, soffrono perché l’evoluzione delle API pubblicate diventano sempre più complesse e difficile gestione. Alla luce di questi fattori, l’utillizzo di API RESTFul risulta essere una scelta implementativa adeguata.. Esso consente la rapida evoluzione dei server e permette un numero enorme di applicazioni di interagire liberamente 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 di quest’ultimo. I protocolli RPC web invece non permettono questa flessibilità ma sono nati proprio per legare entrambe le parti ad un protocollo fisso. Per questo motivo sono maggiormente indicate per processi automatizzati e dove l’interazione con l’utente è quasi assente. Inoltre l’architettura REST permette una scalabilità in senso lato; sia in numero crescente di utenti e sessioni, sia in termini di crescita di dimensioni delle applicazioni e dei processi. Inoltre un accoppiamento stretto presenta un grave ostacolo per l’adattabilità delle applicazioni web. E’ difficile immaginare l’esistenza della più grande applicazione nota, il World Wide Web, senza l’accoppiamento estremamente lasso offerto dall’architettura REST. 4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI Figura 4.4: Architettura dell’applicazione web 39 40 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI 4.3.2 Tecnologie utilizzate Backbone.js Backbone.js è una libreria Javascript, non un framework, che struttura le applicazioni web fornendo models, collections con un elevato numero di API, views che connette gli eventi alle API all’interno di un interfaccia RESTful e JSON. L’obiettivo del creatore, Jeremy Ashkenas, era quello di sviluppare una libreria minimale in modo da avere strumenti e metodologie utili nell’utilizzo di javascript al fine di migliorare la qualità del codice scritto. Questa necessità emerge dalla difficoltà nel garantire scalabilità, mantenibilità e solidità del software di un’applicazione complessa. 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 del design pattern MVC (Model-View-Controller); essa infatti implementa i Models e le Views delegando l’attività del Controller alle stesse Views e ad una componente di Routing. Questo permette di mantenere la logica di business all’interfaccia utente facilitandone 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 del server e attiva gli eventi quando cambiano i dati. Esso gestisce una tabella interna di attributi ed attiva eventi "change" quando uno di questi viene modificato. 4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 41 La View rileva i cambiamenti e renderizza le interfacce utente (UI), gestisce l’interazione con l’utente inviando gli input al model. Essa è una parte atomica dell’interfaccia utente che spesso renderizza i dati da un modello specifico, o da diversi modelli. I modelli possono generalmente ignorare le viste, mentre le viste reagiscono in modo adeguato agli eventi "change" del modello. Un’altra componente di backbone.js è la Collection; che aiuta nella gestione di modelli correlati tra loro trattando il loading e salvando i nuovi modelli sul server e fornendo delle funzioni ausiliarie per l’aggregazione e la computazione in una lista di modelli. Figura 4.6: Componente Collection di backbone.js Infine troviamo il Router che aggiorna URL nel browser tutte le volte che l’utente raggiunge una nuova vista dell’applicazione in modo che possano essere anche condivise o salvate nei segnalibri, indicando esattamente anche dove l’utente si trova. Per la creazione dell’applicazione è stato utilizzato come tool Yeoman che aiuta nella generazione della struttura di una applicazione web. L’applicazione presenta un’interfaccia da linea di comando per Node.js che combina diverse funzioni in un univo 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à nello sviluppo: 42 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI • YO: gestisce e costruisce la struttura dell’applicazione, creando anche le dipendenze 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. Bootstrap Bootstrap1 è un framework front-end e open-source per la realizzazione di applicazioni web responsive. Questo significa che il layout dellla pagina web si adatta dinamicamente al dispositivo utilizzato (tablet, laptop, cellulare).Contiene templates basati sull’utilizzo di HTML e CSS per la tipografia, i bottoni, i menù di navigazione e altre componenti utilizzate nelle interfacce web. Inoltre ha la possibilità di utilizzare l’estensione per JavaScript. Questo framework è composto da moduli e da una serie ti fogli di stile in Less2 che implementano le diverse componenti disponibili. E’ possibile adattare i template in base alle proprie esigenze, integrando le componenti che devono essere utilizzate nel progetto. Inoltre, il framework, presenta una sistema di layaot a griglia (1170 pixel di standard) che può essere utilizzato in modo variabile e adattabile allo schermo su cui viene visualizzata l’applicazione. Oltre alle componenti HTML classici metet a disposizione elementi molto utilizzati nelle 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 forma di plugins JQuery3 che permettono l’utilizzo di elementi come tooltips, carousels per le immagini e l’auto-completamento dei campi di input. 1 Bootstrap è stato sviluppato da Mark Otto e Jacob Thornton presso Twitter come un framework che uniformasse i vari componenti che ne realizzavano l’interfaccia web. Nell’agosto 2011 Twitter ha rilasciato Bootstrap come open source, invitando tutti gli sviluppatori a partecipare al progetto e a dare il loro contributo alla piattaforma. 2 Less è un linguaggio dinamico per i fogli di stile; esso deve essere compilato in un foglio di stile CSS e quindi eseguito lato client o lato server. 3 jQuery è una libreria JavaScript per applicazioni web. Nasce con l’obiettivo di semplificare la selezione, la manipolazione, la gestione degli eventi e l’animazione di elementi DOM in pagine HTML, nonché implementare funzionalità AJAX. 4.3. APPLICAZIONE WEB PER LA GESTIONE DEI CORSI 43 Figura 4.7: Interfaccia creazione corso Node.js Node.js è un framework event-driven sviluppato sul motore JavaScript V8 utilizzato per Google Chrome, relativo all’utilizzo server-side di Javascript; esso fornisce una ricca libreria di differenti moduli JavaScript che semplificano lo sviluppo di applicazioni web. Utilizza un modello a single thread con un event loop che permette al server 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 di ritorno delle chiamate, passando alla API successiva. Inoltre non mette in buffer nessun dato ma invia i dati di output in chunks. MongoDB Nella nostra applicazione abbiamo utilizzato come database MongoDB; è un DBMS non relazionale orientato ai documenti e cross-platform. Esso è un database NoSQL e i documenti creati sono simili ad oggetti JSON. I valori dei campi dell’oggetto possono includere altri documenti, array e array di documenti. L’utilizzo di questa tipologia di documenti presenta diversi vantaggi, tra cui la riduzione della necessità di numerosi join, il supporto al polimorfismo grazie all’utilizzo di uno schema dinamico e la corrispondenza tra documenti e tipi di dato primitivi di diversi 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 44 CAPITOLO 4. IMPLEMENTAZIONE DELLE SOLUZIONI lo sharding 4 e bilanciando adeguatamente i dati. MongoDB, inoltre, garantisce un’alta disponibilità dei dati e aumento del carico gestito attraverso replica set (due o più copie dei dati). Per lo sviluppo dell’applicazione è stato utilizzato Mongoose; un package di modellazione degli oggetti per Node.js che essenzialmente si comporta come una ORM 5 e che permette di avere un semplice accesso ai comandi MongoDB per le operazioni CRUD. 4.3.3 Criticità affrontate L’aspetto che ha presentato maggiore criticità è stata la scelta delle tecnologie da utilizzare, in quanto queste devono rispondere a diverse esigenze: innanzitutto l’applicazione deve poter essere rilasciata su un server Linux messo a disposizione per questo tipo di applicazioni all’interno dell’azienda; in secondo luogo l’applicazione deve essere facilmente mantenibile ed espandibile, in quanto la prima versione realizzata consiste in un prototipo funzionante, ma la maggior parte delle funzionalità verranno sviluppate in futuro da altre persone. Per questo motivo i linguaggi utilizzati sono stati scelti tra quelli maggiormente diffusi e utilizzati al giorno d’oggi, e quindi maggiormente documentati. Un altro aspetto che ha richiesto la progettazione di una soluzione specifica è legato all’accessibilità dei dati per la generazione dei report dall’interfaccia dell’applicazione. Parte dei dati applicativi risiedono su MongoDB, come le informazioni relative agli utenti e alle sessioni dei corsi, tuttavia tutti i dati utilizzati per la generazione delle statistiche risiedono su altri database a cui l’applicazione non può accedere direttamente. Si è scelto pertanto di generare dei report statici in formato CSV con Business Objects, che vengono depositati ogni giorno su uno specifico folder condiviso in rete. Il componente Node.js dell’applicazione può quindi recuperare i dati da questo folder e presentarli su richiesta degli utenti. 4 Sharding è il processo di archiviare i dati su diverse macchine. MongoDB utilizza questo approccio per rispondere adeguatamente al continuo incremento del quantitativo e della grandezza dei dati da memorizzare, risolvendo il problema della scalabilità orizzontale 5 ORM (Object-Relational Mapping) è una tecnica di programmazione che favorisce l’integrazione di sistemi software aderenti al paradigma della programmazione orientata agli oggetti con sistemi RDBMS. Esso fornisce, attraverso un’interfaccia, tutti i servizi inerenti alla persistenza dei dati indipendentemente dal database utilizzato. Capitolo 5 Business Intelligence Le soluzioni sviluppate, soprattutto nel caso degli aspetti riguardanti la reportistica, e le esigenze aziendali si orientano verso l’ambito della Business Intelligence. Con questo termine viene definito un insieme di tecniche e strumenti finalizzati all’acquisizione e alla trasformazione dei dati grezzi in dati significativi e utili per la business analysis. Queste tecniche, definite spesso anche di "data surfacing", sono in grado di gestire un elevato numero di dati non strutturati al fine di identificare, sviluppare e creare nuove strategie di business; inoltre dovrebbero permettere un’interpretazione semplice dei dati. La Business Intelligence permette di avere una visione temporale delle attività aziendali monitorate attraverso i report, data mining, benchmarking, l’analisi predittiva e quella prescrittiva. Attraverso questo tipo di analisi l’azienda può avere una migliore visione del segmento di mercato di interesse, quello dei microprocessori, e di possibili nuovi mercati in cui entrare aumentando la propria possibilità di crescita e affermazione 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 classificarla in: descrittiva, diagnostica, predittiva, prescrittiva e preventiva. L’analisi descrittiva analizza gli eventi passati per darne una visione concisa e semplificata, presentando le proprietà generali. L’analisi diagnostica analizza, invece, le cause che hanno generato determinate tendenze e risultati. L’analisi predittiva permette di prevedere l’andamento futuro partendo da modelli di analisi sui dati a disposizione. Infine, l’analisi descrittiva fornisce delle indicazioni su come agire ed intervenire in manie45 46 CAPITOLO 5. BUSINESS INTELLIGENCE ra automatica nelle scelte aziendali integrando statistica, business e machine learning. 5.1 Le funzioni della Business Intelligence Questo insieme di tecniche permette di implementare diverse funzionalità. • Reporting: Visto il grande numero di dati grezzi utilizzati risulta fondamentale ottimizzare la gestione e l’organizzazione dei dati per poterli utilizzare in modo corretto e adeguato. • Online Processing: l’obiettivo principale di elaborazione on-line è quello di fornire velocità, disponibilità e facilità nel recupero dei dati, garantendo allo stesso tempo la coerenza e la consistenza dei dati richiesti. Per garantire queste caratteristiche risulta necessario l’utilizzo di un database che gestisca in modo ottimale una grande mole di dati in tempo reale. • Data Mining: una tecnica che cerca all’interno di un vasto set di dati per scoprire pattern e trend che stanno dietro una semplice analisi. Esso permette agli utenti, accedendo da diversi punti di accesso, per utilizzare i dati in base alle proprie esigenze. Questo risulta essere un aspetto fondamentale nel prendere decisioni nelle strategie di business, ad esempio per l’organizzazione e l’inserimento a catalogo di nuove tipologie di corsi formativi. Il metodo prevede tre fasi: esplorare, comprendere e analizzare. • Event Processing: fornisce una piattaforma integrata dove i dati vengono filtrati, 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 monitoraggio delle prestazioni a livello aziendale nel raggiungimento di obiettivi prestabiliti. Business Performance Management ha tre attività chiave: la definizione o la selezione di obiettivi, il consolidamento di indici di misurazione che indicano il progressivo andamento dell’organizzazione nel raggiungimento degli obiettivi e, infine, gli interventi che vengono attuati alla luce delle informazioni ricavate dall’andamento dell’organizzazione al fine di migliorare la performance registrata. 5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 47 • Benchmarking: Definisce una misura della qualità dell’organizzazione in termini di politiche, prodotti, strategie, etc. e il confronto di questa misura con altre tipologie di misurazione di business standard o simili. Questo è il processo che permette all’azienda di confrontare i processi aziendali interni con le metriche di performance per le best practice del settore provenienti da altre imprese concorrenti. Sono spesso utilizzati indici specifici o indicatori come la qualità, costi e tempi. A seconda della politica interna di gestione aziendale, l’analisi comparativa potrebbe essere fatta come un processo continuo o con intervalli temporali specifici. Ma qualunque sia il caso, questa funzione di Business Intelligence permette all’azienda di prendere decisioni che rispondano alle esigenze negli ambiti di interesse. • Analisi Predittiva: Questo è un ramo di data mining che si occupa della previsione e delle tendenze future, in termini di probabilità, delle attività in esame. Esso descrive una serie di tecniche analitiche e statistiche utilizzate per sviluppare modelli che possono essere utilizzati per predire eventi futuri del business. Alcuni dei vantaggi dell’analisi predittiva sono: fornire una base quantitativa per riconoscere e valutare l’andamento del business; aiutare a identificare il target di mercato e come rispondere alle richieste, assistere i manager nella gestione aziendale; migliorare il processo decisionale nel raggiungimento degli obiettivi prefissati. 5.2 Misurazione dell’impatto sui processi di business I modelli predittivi in ambito aziendale analizzano dati storici e attuali e vengono utilizzati per comprendere al meglio l’andamento aziendale nei confronti dello scenario di riferimento. I risultati forniti sono utili come guida nelle decisioni di business per il conseguimento degli obiettivi prefissati in quanto utilizzando questi modelli è possibile avere una previsione sugli andamenti futuri e sugli effetti delle attività 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 questo tipo di analisi è definita Decision Tree. Il modello viene rappresentato attraverso un albero decisionale che ha in input un oggetto con i suoi diversi attributi e produce in 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 binomiale dei dati dal nodo padre fino alle foglie (nodi terminali). Ogni dato da classificare quindi parte dalla radice e ogni separazione dipende dalla misura di una determinata variabile. Alla foglia viene associata una classe di predizione che viene cosí attribuita a tutti i dati che raggiungono quel nodo. Attualmente un’analisi completa di questo tipo non può essere effettuata in quanto mancano i dati relativi agli effetti in ambito lavorativo dovuti ad un determinato percorso formativo. 5.2.1 Reportistica e Gestione Corsi Le attività condotte nell’ambito della reportistica aziendale hanno portato diversi vantaggi nell’operatività quotidiana del team HR. Innanzitutto queste ottimizzazioni hanno consentito di ridurre i tempi per la generazione dei report, semplificando l’estrazione dei dati necessari per rispondere alle varie esigenze aziendali. Ad esempio, la gestione dei corsi obbligatori che necessitano di un aggiornamento in tempi differenti veniva in precedenza gestita manualmente con fogli Excel, utilizzando Pivot e funzioni di VLookup tra le tabelle. Questa procedura richiedeva diverse ore e presentava diverse criticità, in quanto la possibilità di errore era elevata; inoltre essa era fortemente condizionata dalle conoscenze dell’operatore e dalla sua abilità nell’uso di Excel. Ora questa procedura viene gestita in maniera automatizzata e semplificata attraverso l’utilizzo di template di report Business Objects, che consentono di schedulare aggiornamenti quotidiani senza bisogno di intervenire sui dati. Inoltre l’applicazione web consente una rapida consultazione di questi report. Infatti l’utente può visualizzare i report disponibili in formato tabellare senza doversi connettere agli altri tool usati in azienda per la generazione dei report. È anche possibile scaricare i report generati in formato PDF, CSV e XLS. Oltre alla reportistica, l’applicazione permetterà una gestione semplificate della creazione delle sessioni dei diversi corsi per la calendarizzazione e la gestione dei partecipanti. Attualmente i responsabili devono creare le sessioni direttamente sul software aziendale (PeopleFirst) dove sono presenti anche quelle create da altre sedi 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- 5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 49 zando l’applicazione i responsabili potranno avere una visione chiara e precisa delle sessioni create per le sedi dell’area Continental Italy gestendo in modo semplificato le 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 tool utilizzati precedentemente; essa racchiude in un’unica interfaccia utente diverse funzionalità facilitandone la consultazione e riducendo di molto i tempi per la creazione e la consultazione dei documenti richiesti. Inoltre il software e i modelli di report sono stati sviluppati a partire da un’attenta analisi dei requisiti (RASD) e delle richieste dell’Organizational Development & Training per la sede di Agrate cercando di rispondere adeguatamente alle richieste. I tool utilizzati in azienda, pur essendo stabili e ricchi di funzionalità, sono condivisi a livello Corporate e non disegnati sulle necessità delle singole sedi rendendo più complesso il loro utilizzo e richiedendo un maggior tempo per la formazione del personale. La seguente tabella illustra le differenze nelle procedure di reportistica prima e dopo gli interventi di automatizzazione apportati, evidenziando i vantaggi derivanti da una riduzione delle tempistiche e degli interventi manuali richiesti in precedenza. 50 CAPITOLO 5. BUSINESS INTELLIGENCE Figura 5.2: Tabella che evidenzia le differenze tra le vecchie e le nuove procedure di reportistica 5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 5.2.2 51 Analisi statistica L’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 inferiore alla modalità utilizzata precedentemente. La struttura e l’organizzazione del training aziendale risulta essere molto complessa e offre un notevole quantitativo di dati e di informazioni utili per l’analisi statistica. L’offerta formativa è suddivisa in Training Family che racchiudono i corsi relativi a una determinata area e che condividono l’obiettivo di sviluppare delle specifiche competenze. Inoltre i corsi sono caratterizzati anche da una Training Class, che descrive se il corso è base o avanzato e se è definito a livello Corporate o locale, e da una descrizione dalla quale è possibile estrarre una mappa 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 relativa allo sviluppo delle competenze personali e relazionali ("Personal Development"). L’azienda infatti pone attenzione sia sugli aspetti legati alla sostenibilità e alle competenze tecniche senza tralasciare gli aspetti legati al potenziamento delle competenze personali 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 che la maggior parte dei dipendenti di sesso femminile ha frequentato corsi appartenenti soprattutto alle famiglie: "Job Specific", "Personal Development" e "Tools and 52 CAPITOLO 5. BUSINESS INTELLIGENCE Methodologies". Inoltre la fascia d’età predominante risulta essere quella tra i 35 e i 45 anni. Per quanto riguarda i colleghi di sesso maschile, si può notare che hanno frequentato maggiormente corsi appartenenti alle famiglie di training "Job Specific" e "Sustainable Development". Anche in questo caso la fascia d’età predominante risulta essere quella tra i 35 e i 45 anni. Figura 5.4: Frequenze femminili per famiglia di Training ed età 5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS Figura 5.5: Frequenze maschili per famiglia di Training ed età 53 54 CAPITOLO 5. BUSINESS INTELLIGENCE Attraverso l’utilizzo di strumenti di Business Intelligence è possibile arricchire l’analisi e generare dei modelli predittivi molto utili come guida nelle scelte formative aziendali in funzione degli obiettivi prefissati. Inoltre è possibile visualizzare i dati raggruppandoli in diversi modi in base alle proprie esigenze e renderli facilmente interpretabili. Ad esempio, le informazioni riguardanti la frequenza dei corsi in base al sesso e alla classe di età possono essere visualizzate con un grafico di dispersione in cui le due variabili del nostro set di dati sono riportate su uno spazio cartesiano. I dati sono visualizzati tramite una collezione di punti ciascuno con una posizione sull’asse orizzontale determinato da una variabile e sull’asse verticale determinato dall’altra. Figura 5.6: Frequenze per famiglia di Training e sesso 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 maggior parte dei corsi ha ottenuto una valutazione medio alta in termini di gradimento e efficacia da parte dei dipendenti, con un valore medio superiore al 6 (su una scala a 7 punti). Figura 5.8: Frequenze per famiglia di Training e valutazione del corso 56 CAPITOLO 5. BUSINESS INTELLIGENCE Come anticipato, i corsi hanno anche una descrizione che permette al dipendente di capire meglio l’argomento del corso stesso e con questo campo è stato possibile generare un "Tag Cloud" nella quale vengono messe in evidenza i termini in base alla loro frequenza all’interno delle descrizioni dei corsi effettuati durante l’anno di riferimento. Questo permette una rappresentazione semplice, intuitiva ed efficace dei dati. Figura 5.9: Tag cloud Dall’immagine si evince che i corsi durante l’anno riguardavano soprattutto l’ambito della sicurezza, delle performance e del lavoro in team, in linea con le considerazioni precedenti. Questa rappresentazione dei dati permette all’utente di avere velocemente una fotografia e una visione chiara degli argomenti trattati nei corsi effettuati con la loro frequenza. Un’estensione di questo tipo di analisi e di presentazione dei dati dei diversi aspetti monitorati nella formazione, permetterebbe una maggiore condivisione dei dati tra i dipendenti. 5.2. MISURAZIONE DELL’IMPATTO SUI PROCESSI DI BUSINESS 5.2.3 57 Sviluppi futuri Partendo da questi dati potrebbe essere sviluppato un modello predittivo che permetta di avere una visione, anche graficamente, più chiara sulla probabilità di raggiungere determinati nodi, caratterizzati da specifici attributi, come la valutazione del corso e la classe di training del corso, a partire da un nodo padre. Anche l’interattività di questi modelli velocizzerebbe il tempo necessario per la consultazione e l’estrapolazione di dati partendo da differenti valori di attributi all’interno del set di dati. 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à produttiva e di lavoro in team per osservare l’impatto di un determinato percorso formativo all’interno dell’ambiente lavorativo. In questo modo si potrebbero utilizzare le analisi effettuate per proporre una formazione ad hoc per dipendente e per organizzazione sulla base di una valutazione statistica della probabilità dell’acquisizione di determinate competenze e sull’impatto positivo in ambito lavorativo. Innanzitutto si potrebbe sottoporre ad un numero ristretto di dipendenti un percorso formativo pilota per lo sviluppo di specifiche competenze. Successivamente 58 CAPITOLO 5. BUSINESS INTELLIGENCE osservare l’impatto che questo tipo di formazione ha avuto nello scenario lavorativo del dipendente (es. numero di assenze, percentuale di obiettivi raggiunti in tre mesi, coinvolgimento all’interno dei meeting, etc..) e confrontare gli indicatori registrati con un gruppo di controllo. Inoltre sarebbe opportuno utilizzare questo tipo di analisi anche per facilitare l’interpretazione e la visualizzazione dei dati da parte dei dipendenti. Capitolo 6 Conclusioni Le attività svolte durante il tirocinio sono state di diversa natura e hanno richiesto l’impiego di strumenti e tecnologie differenti. Tuttavia, le soluzioni analizzate e implementate hanno consentito di muovere i primi passi verso l’ottimizzazione dei processi informativi aziendali del reparto HR. Gli strumenti utilizzati per le attività di reportistica si sono dimostrati piuttosto potenti, anche se talvolta un po’ troppo poco flessibili. Software quali Business Objects consentono di accedere alla maggior parte dei dati aziendali disponibili, ma non sempre offrono un livello di personalizzazione adeguato per costruire un certo tipo di interrogazioni. Sicuramente queste difficoltà possono essere sormontate in gran parte una volta superata la curva di apprendimento iniziale e con un’adeguata formazione professionale. L’impiego di tecnologie moderne quali Node.js e Backbone.js ha consentito di sviluppare un’applicazione portabile e facilmente espandibile in futuro, ma ha richiesto parecchio tempo per le fasi di apprendimento dei framework. Questo ha evidenziato come i linguaggi di programmazione e le tecnologie, soprattutto in ambito web, si stiano specializzando, consentendo di sviluppare diversi componenti software indipendenti tra di loro, ma con un alto livello di interoperabilità. Ognuna delle soluzioni proposte e implementate potrà in futuro essere approfondita e conseguentemente migliorata, mantenendo un focus costante sull’ottimizzazione delle procedure di Business Intelligence. Ad esempio, l’applicazione web potrà integrare nuove modalità di visualizzazione dei dati esportati, mentre le attività di reportistica si potranno focalizzare sulla creazione di nuovi dataset a supporto delle analisi. Anche il sito intranet della formazione potrà essere ulteriormente sviluppato con l’aggiunta 59 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 limitato solo a singole aree aziendali ma dovrebbe coprire tutti gli aspetti che interessano e contribuiscono alla vision della Corporate, come ad esempio nell’ambito della formazione. Un investimento guidato e supportato da modelli statistici e di analisi permette 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 evidente come ogni singolo dipartimento lavori per il conseguimento di obiettivi comuni, anche se a volte risulta molto complesso lo scambio e la coordinazione dei diversi attori all’interno di tutta l’azienda. Bibliografia [1] Martin Fowler, "UML distilled. Guida rapida al linguaggio di modellazione standard", Ed. Pearson, 4 edizione, 2010 [2] Luciano Baresi, "Dall’idea al codice con UML 2. Guida all’utilizzo di UML attraverso 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 Language Reference 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 Business Process Reporting: A Case Study in Education", SIMPDA, 2015 [7] Oracle official 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 official documentation, http://help.sap.com [11] Backbone.js official documentation, http://backbonejs.org [12] UML official documentation, http://www.omg.org/spec/UML/2.5 [13] IBM official documentation, http://www.ibm.com/developerworks/rational/library/769.html [14] STMicroelectronics website, http://st.com 61 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 official documentation, https://nodejs.org/en/docs [18] MongoDB official documentation, https://docs.mongodb.com [19] Yeoman official documentation, http://yeoman.io/learning/index.html Appendice Macro VBA a supporto della gestione della formazione delle squadre di intervento ERT. Sub CopiaDati(sheet As String) Sheets(sheet).UsedRange.ClearContents PopolaGruppi (sheet) Intestazione (sheet) Dim FoglioDati As Worksheet Set 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 Dim Dim Dim Dim = 2 To NumRows + 1 organizzazione As String group As String name As String ruolo As String organizzazione = Trim(FoglioDati.Range("D" & CStr(x))) 63 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") Then If (organizzazione = "AG8-AGM" Or organizzazione = "FEM EWS") Then Select Case group Case "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 If End If If (sheet = "Azzurra") Then If (organizzazione = "R2") Then Select Case group Case "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" 65 Call ScriviCella(sheet, Case "E" Call ScriviCella(sheet, Case "TGCM" Call ScriviCella(sheet, Case "TGCM/A" Call ScriviCella(sheet, Case "TGCM/B" Call ScriviCella(sheet, Case "blank" Call ScriviCella(sheet, End Select End If End If "D", name, ruolo) "E", name, ruolo) "F", name, ruolo) "G", name, ruolo) "H", name, ruolo) "I", name, ruolo) If (sheet = "Viola") Then If (organizzazione = "SSGG") Then Select Case group Case "Antincendio" Call ScriviCella(sheet, "A", name, Case "CDZ" Call ScriviCella(sheet, "B", name, Case "ECOFACILITY" Call ScriviCella(sheet, "C", name, Case "EE" Call ScriviCella(sheet, "D", name, Case "SECURITY" Call ScriviCella(sheet, "E", name, Case "UPW" Call ScriviCella(sheet, "F", name, Case "W.E.S." Call ScriviCella(sheet, "G", name, Case "blank" Call ScriviCella(sheet, "H", name, End Select End If End If ruolo) ruolo) ruolo) ruolo) ruolo) ruolo) ruolo) ruolo) 66 APPENDICE If (sheet = "blank") Then If (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 As String) Dim Previous As Range Dim PreviousRole As String Dim i As Integer Dim FirstFree As Range Set FirstFree = Sheets(sheet).Columns(col).Find("", Cells(Sheets(sheet).Rows.Count, col)) Debug.Print value ’scrivo coordinatore If (ruolo = "COORDINATORE") Then For i = FirstFree.Row To 6 Step -1 Set Previous = Sheets(sheet).Range(col & i - 1) PreviousRole = "blank" If (i = 6) Then PreviousRole = "first" End If If (InStr(Previous.value, "COORDINATORE") <> 0) Then 67 PreviousRole = "COORDINATORE" End If If (InStr(Previous.value, "VICE-COORD") <> 0) Then PreviousRole = "VICE-COORD" End If If ((PreviousRole = "VICE-COORD" Or PreviousRole = "blank") And i > 6) Then Sheets(sheet).Range(col & CStr(i)) = Previous.value Previous = value + " - COORDINATORE" ElseIf (FirstFree.Row = 6 And PreviousRole = "first") Then Sheets(sheet).Range(col & CStr(i)) = value + " - COORDINATORE" End If Next i ’scrivo vice ElseIf (ruolo = "VICE-COORD") Then For i = FirstFree.Row To 6 Step -1 Set Previous = Sheets(sheet).Range(col & i - 1) PreviousRole = "blank" If (i = 6) Then PreviousRole = "first" End If If (InStr(Previous.value, "COORDINATORE") <> 0) Then PreviousRole = "COORDINATORE" End If If (InStr(Previous.value, "VICE-COORD") <> 0) Then PreviousRole = "VICE-COORD" End If If (PreviousRole = "blank" And i > 6) Then Sheets(sheet).Range(col & CStr(i)) = Previous.value 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 normale Else FirstFree = value End 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 = xlCenter Sheets(sheet).Range("A5:H5").VerticalAlignment = xlVAlignCenter Sheets(sheet).Range("A5:H5").Font.FontStyle = "Bold Italic" Sheets(sheet).Range("A5:H5").Font.Size = 16 Sheets(sheet).Range("A5:H5").Columns("A:H").ColumnWidth = 30 Sheets(sheet).Range("A5:H5").Borders(xlEdgeBottom).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlEdgeTop).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlInsideVertical).LineStyle = xlContinuous 69 Sheets(sheet).Range("A5:H5").Borders(xlEdgeLeft).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlEdgeRight).LineStyle = xlContinuous End If If (sheet = "Azzurra") 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") = "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 = xlCenter Sheets(sheet).Range("A5:I5").VerticalAlignment = xlVAlignCenter Sheets(sheet).Range("A5:I5").Font.FontStyle = "Bold Italic" Sheets(sheet).Range("A5:I5").Font.Size = 16 Sheets(sheet).Range("A5:I5").Columns("A:I").ColumnWidth = 30 Sheets(sheet).Range("A5:I5").Borders(xlEdgeBottom).LineStyle = xlContinuous Sheets(sheet).Range("A5:I5").Borders(xlEdgeTop).LineStyle = xlContinuous Sheets(sheet).Range("A5:I5").Borders(xlInsideVertical).LineStyle = xlContinuous Sheets(sheet).Range("A5:I5").Borders(xlEdgeLeft).LineStyle = xlContinuous Sheets(sheet).Range("A5:I5").Borders(xlEdgeRight).LineStyle = xlContinuous End If If (sheet = "Viola") Then Sheets(sheet).Range("A5") = "ANTINCENDIO" Sheets(sheet).Range("B5") = "CDZ" 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 = xlCenter Sheets(sheet).Range("A5:H5").VerticalAlignment = xlVAlignCenter Sheets(sheet).Range("A5:H5").Font.FontStyle = "Bold Italic" Sheets(sheet).Range("A5:H5").Font.Size = 16 Sheets(sheet).Range("A5:H5").Columns("A:H").ColumnWidth = 30 Sheets(sheet).Range("A5:H5").Borders(xlEdgeBottom).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlEdgeTop).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlInsideVertical).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlEdgeLeft).LineStyle = xlContinuous Sheets(sheet).Range("A5:H5").Borders(xlEdgeRight).LineStyle = xlContinuous End If If (sheet = "blank") Then Sheets(sheet).Range("A1") = "Nome e Cognome" Sheets(sheet).Range("A1").Columns("A").ColumnWidth = 30 Sheets(sheet).Range("A1").Borders(xlEdgeBottom).LineStyle = xlContinuous Sheets(sheet).Range("A1").Borders(xlEdgeTop).LineStyle = xlContinuous Sheets(sheet).Range("A1").Borders(xlInsideVertical).LineStyle = xlContinuous Sheets(sheet).Range("A1").Borders(xlEdgeLeft).LineStyle = xlContinuous Sheets(sheet).Range("A1").Borders(xlEdgeRight).LineStyle = xlContinuous End If 71 End Sub Sub Intestazione(sheet) If (sheet = "Arancio") Then Sheets(sheet).Range("A1:H4").MergeCells = True Sheets(sheet).Range("A1:H4") = "Squadra " + sheet Sheets(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 = 28 End With End If If (sheet = "Azzurra") Then Sheets(sheet).Range("A1:I4").MergeCells = True Sheets(sheet).Range("A1:I4") = "Squadra " + sheet Sheets(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 = 28 End With End If If (sheet = "Viola") Then Sheets(sheet).Range("A1:H4").MergeCells = True Sheets(sheet).Range("A1:H4") = "Squadra " + sheet Sheets(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 = 28 End With 72 APPENDICE End If If (sheet = "blank") Then Sheets(sheet).Range("A1").Interior.Color = RGB(212, 212, 212) Sheets(sheet).Range("A1").HorizontalAlignment = xlCenter Sheets(sheet).Range("A1").VerticalAlignment = xlVAlignCenter Sheets(sheet).Range("A1").Font.FontStyle = "Bold Italic" Sheets(sheet).Range("A1").Font.Size = 16 End If End 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(); 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(); }, 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) { 75 return response; } }); })(); Model Node.js che contiene lo schema della classe utente su MongoDB. var mongoose var Schema = require(’mongoose’); = 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) { 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] ]); 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 need var express = require(’express’); // call express var app = express(); // define our app using express var bodyParser = require(’body-parser’); var fs = require(’fs’); //definisco fs var User = require(’./models/user’); var sha1 = require(’sha1’); var report = require(’./modules/report’); var corsi = require(’./modules/corsi’); 78 APPENDICE // configure app to use bodyParser() // this will let us get the data from a POST app.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 GET http://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 connette router.post(’/login’, function(req, res){ var username = req.body.username; var password = req.body.password; User.findOne({ ’email’: username, ’password’: sha1(password) }, ’id first_name last_name email hr’, function (err, user) { if (err) res.json({message: ’error’}); res.json({message: ’ok’, user: user}); }); }); 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 richiesta post user.last_name = req.body.last_name; user.email = req.body.email; user.password = sha1(req.body.password); //password non viene salvata in chiaro user.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){ 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 /api app.use(’/api’, router); // START THE SERVER // ============================================================================= app.listen(port); console.log(’Magic happens on port ’ + port);