(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);