...

LA GESTIONE DELLE INFORMAZIONI NELLA JUST-IN

by user

on
Category: Documents
13

views

Report

Comments

Transcript

LA GESTIONE DELLE INFORMAZIONI NELLA JUST-IN
POLITECNICO DI MILANO
Facoltà di Ingegneria dell’Informazione
Corso di Laurea Specialistica in Ingegneria Informatica
LA GESTIONE DELLE INFORMAZIONI
NELLA JUST-IN-TIME ORGANIZATION
Relatore: Prof. Alfonso Fuggetta
Correlatore: Ing. Giordano Sassaroli
Tesi di Laurea di:
Giulio Presazzi, matricola 731977
Matteo Valoriani, matricola 736188
Anno Accademico 2010-2011
Ai compagni di questa lunga avventura...
Sommario
Per un’impresa moderna e competitiva è importante avere una visione completa e aggiornata delle prestazioni e dell’andamento del proprio business.
La Just-In-Time Organization è una filosofia organizzativa che si concentra
sugli aspetti di gestione e analisi delle informazioni al fine di massimizzare
l’efficienza e l’efficacia dell’azienda. Ricevere dati in tempo reale, aiuta il
management a tenere sempre sotto controllo la situazione aziendale, pianificare al meglio le strategie future e risolvere prontamente i problemi che si
presentano. L’ IT può venire incontro a queste esigenze e fornire strumenti
efficaci e valide soluzioni. Il nostro lavoro parte da questa considerazione
per fornire una soluzione tecnologica in grado aiutare l’azienda. La soluzione che proponiamo permette l’analisi delle performance aziendali con una
bassa latenza e aiuta prendere decisioni in modo tempestivo. La tecnologia
negli ultimi anni ha subito enormi cambiamenti, in particolare ha visto la
nascita di interfacce innovative e nuovi meccanismi di interazione. Nel nostro lavoro abbiamo ripensato queste tecnologie per adattarle alle esigenze
aziendali e fornire dispositivi al supporto delle attività di business che siano
funzionali e allo stesso tempo innovativi. Il lavoro è stato svolto all’interno di
CEFRIEL società che svolge attività di formazione e di consulenza ad alto livello tecnologico e che da anni si è indirizzata verso un modello organizzativo
”Just-In-Time” e quindi già dotata di un buon livello di informatizzazione.
I
Partendo dall’analisi dell’attuale modello di gestione delle attività aziendali e
dalle esigenze espresse dai manager, abbiamo sviluppato un sistema integrato
con gli altri già disponibili, ma che permette di raccogliere e distribuire informazioni su vari canali in tempo reale, migliorando la capacità di monitorare
lo stato di salute dell’azienda.
Ringraziamenti
Ogni minuto che passi arrabbiato perdi sessanta secondi di felicità
Albert Einstein
Desidero innanzitutto ringraziare il Professor Alfonso Fuggetta per averci
dato la possibilità di svolgere questa tesi all’interno di Cefriel.
Inoltre, ringrazio sentitamente l’Ing. Giordano Sassaroli per la disponibilità
e professionalità e per averci aiutato e indirizzato in questi mesi di lavoro.
Intendo poi ringraziare tutti i coloro che in azienda ci hanno sostenuto e
aiutato: Ing. Fabiano Cattaneo e tutti i responsabili dell’area tecnica.
Ringrazio Matteo, il compagno di tesi. Grazie che hai voluto collaborare
con me in questo lavoro aiutandomi anche nel mio Italiano ’Valtellinese’.
Nonostante ritardi storici e immisurabili ce l’abbiamo fatta.
Un ringraziamento di cuore è per i miei genitori, Fabio e Maria che 5
anni fa mi hanno permesso di iniziare questa esperienza, mi sono stati vicino
mi hanno sostenuto, moralmente ed economicamente: due persone rare e insostituibili. Papà grazie per la tua tranquillità, disponibilità, bontà d’animo e
umiltà. Mamma grazie per la tua voglia di fare, il tuo volermi bene(o gelosia
:D) e per tutte le volte che mi hai permesso di non andare a lavorare rinunciando tu ai tuoi momenti :-D .Ringrazio Elena, la mia ’sorellina’ (non ti ho
mai chiamato sorellina vero? ) che con il suo ottimismo mi ha permesso di
vedere il mondo con occhi diversi. Un ringraziamento sentito a una persona
che è entrata attivamente nella mia vita da quasi un anno ormai ma è come se ci fosse da sempre, donandomi tanta felicità e amore. Grazie Giulia,
anche se alle tue richieste rispondo ”Signorsı̀ signore” lo faccio sempre con
piacere;-).
III
Grazie a tutti i miei parenti che mi hanno sempre sostenuto e incoraggiato
in questa esperienza. Un grazie particolare va al mitico nonno Luigi e alla
nonna Pina, come avrei fatto senza di voi? Grazie perché il vostro affetto mi
rimarrà per sempre nel cuore. Grazie per le ”mancette” segrete, grazie per
la vostra semplicità, comprensione e bontà.
Un grazie a Massimo e Morena e a tutto lo staff della ”Tana del Grillo”,
compagni di viaggio in questi 5 anni. Siete stati indispensabili da punto di
vista economico, ma la vostra umanità e disponibilità non la dimenticherò
mai. Se nei prossimi impieghi avrò dei ”padroni” antipatici mi farò rivedere
:-).
Vorrei ringraziare i miei compagni di sempre. Un grazie a Luca, il Fox, il
mio compagno di stanza (e non solo) per tutta questa esperienza. La tua voglia di uscire vincente, il tuo essere razionale, la voglia di divertirsi ed essere
felici ci ha tenuti legati per tutto questo tempo. Grazie ai miei coinquilini, di
oggi e di ieri. Grazie Davide, spero di esserti d’aiuto quanto tu lo sei stato
per me; Mariuccio grazie per i tuoi consigli da vero genietto; Checo grazie
per la tua voglia di divertirti e per i progetti fatti insieme :-). Speriamo di
divertirci e passare momenti indimenticabili come lo sono stati questi mesi.
Grazie a Fabio e Oscar, gli amici di vecchia data. Fabio grazie per la tua
semplicità, spero che avrai tutto il successo che una persona come te merita.
Grazie Oscar, insieme abbiamo girato il ”Mondo” passando momenti indimenticabili, la Valtellina ci rimane comunque nel cuore. Grazie alle ragazze
del piano di sotto: Sara A (Saretta ovviamente), Sara B, Caterina, Anna,
Stefania. Grazie ai miei colleghi o ex colleghi universitari e Milanesi: Davide
Staky, Marta la Grosina, Max, Leo e Marco (i dottorandi Fiorentini), Pippo
(il nerd del Micro), Trive, Gigio, Davide, Laura, Alessandra, Guido e Fabio(Airo). Grazie a Callo (Alby o Alberto), compagno di viaggi responsabili,
nel bene, di un’esperienza fantastica.
Grazie a tutti coloro che hanno creduto in me. A quelli che mi incontravano lungo la strada e mi chiedevano: ”Come và l’università ?”. Adesso
finalmente posso rispondere:”E’ finita”. E un po’ è anche merito vostro.
Giulio
Ringraziamenti
Il miglior modo per iniziare a cambiare il mondo,
è iniziare a immaginare un mondo diverso.
Wow, non mi sembra possibile! Sto scrivendo i ringraziamenti della mia
tesi!
Sono passati cinque anni come fossero cinque secondi. Ricordo benissimo il
primo giorno a Milano, un giorno grigio di fine settembre, pioveva e dopo
aver lasciato la mi bella casetta mi sono ritrovato da solo in una stanza semibuia e più grigia del cielo che si intravedeva dalla tapparella rotta. Certo che
come partenza non è stata delle migliori e chi avrebbe pensato che quello fosse l’inizio di tutta questa lunga avventura. Ho conosciuto cosı̀ tante persone,
amici, che la lista dei ringraziamenti mi sembra interminabile e penso che
la cosa migliore sia ripercorrere con la mente questi cinque anni per cercare
di non dimenticare nessuno. Il primo giorno di università mi trovavo seduto
accanto a un valtellinese, il primo che ho conosciuto di una lunga serie, e
un brianzolo fissato con i puntatori. Oggi dopo cinque anni mi capita ancora
di trovarmi seduto con quelle stesse persone: Mari(ucci)o Filipp(iell)o grazie, senza di voi sarebbero stati molto noiosi questi anni di università. Loro
sono stati i primi che ho conosciuto, ma subito dopo si sono aggiunti molti
altri a partire Marco(Trivellino) e dal branco valtellinese: Luca, Max, Fabio
e Giulio, che mi ha sopportato anche in questa tesi. Naturalmente non posso
dimenticarmi di Oscar con cui ho condiviso esami e serate estenuanti.
In questi anni non c’è stata solo l’università e non posso non ringraziare i
tanti amici conosciuti nel collegio, con molti dei quali ho condiviso anche una
casa: Flavio, Mauro, Felice, Giovanni, Domenico, Stefano grazie a tutti per
V
avermi fatto compagnia nei miei caffè notturni.
Il bello dell’amicizia è che è una rete che tende ad allargarsi sempre di più
per accogliere nuove persone e molte altre meritano di essere ringraziate. Innanzitutto il lato femminile del corso Marta, Laura, Sara e Alessandra, e poi
ancora Gigio, Davide, Staky e i miei compagni toscani Marco e Leo che mi
avete aiutato a difendermi dalla colonia valtellinese. Una colonia che con
gli anni è diventata sempre più grande con Sara, Anna, Stefania, Caterina,
Claudio, Francesca, Davide,... grazie a tutti per le divertentissime serate.
Oltre a loro ci sono anche gli amici conosciuti nelle partite di calcetto e lavorando a Roma, tutte persone che hanno lasciato un segno in questi cinque
anni.
In questi anni sono cambiate molte cose, sono cambiato io, ma per fortuna
l’amicizia con i vecchi amici Laura, Giulia, Tommaso non è cambiata, grazie.
Arrivando a giorni più recenti devo ringraziare anche Alfonso Fuggetta che
ci ha accettati come suoi tesisti e Giordano Sassaroli e Fabiano Cattaneo che
ci hanno seguito nello sviluppo di questo lavoro. Ringrazio anche Carlo Iantorno che mi ha dato l’opportunità di lavorare in Microsoft dove ho imparato
moltissimo e ho capito un po’ di più come va il modo fuori dall’università.
Infine, il ringraziamento più speciale di tutti va alla mia famiglia: alla mia
Mamma, al mio Babbo e alla mia Taty. Mi avete sempre sorretto e spinto avanti senza mai chiedermi nulla, sono quello che sono oggi per merito
vostro. Grazie anche a tutti i parenti e amici che mi hanno sostenuto fisicamente con le loro leccornie culinarie.
Questa avventura è finita, non so cosa ci sarà domani come non lo sa nessun’altro, ma sicuramente non ho rimpianti per il passato e sono felice per
tutto quello che abbiamo fatto insieme e sono certo che le amicizie strette in
questi anni non svaniranno nel nulla.
A tutti ancora un immenso grazie.
Matteo
Indice
Sommario
I
Ringraziamenti Giulio
III
Ringraziamenti Matteo
V
1 Introduzione
1
1.1
Il contesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Obiettivi della tesi . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . .
4
2 Stato dell’arte
2.1
2.2
7
La filosofia Just-In-Time . . . . . . . . . . . . . . . . . . . . .
7
2.1.1
JIT Organizations: un’azienda moderna . . . . . . . .
9
2.1.2
Informazioni nella JIT Organizations . . . . . . . . . . 12
Le tecnologie di presentazione e interazione . . . . . . . . . . . 14
2.2.1
Tecnologie desktop . . . . . . . . . . . . . . . . . . . . 15
2.2.2
Tecnologie mobile . . . . . . . . . . . . . . . . . . . . . 18
2.2.3
Tecnologie entertainment . . . . . . . . . . . . . . . . . 23
3 Proposte per l’impresa Just in Time
3.1
27
La struttura organizzativa di riferimento . . . . . . . . . . . . 28
IX
3.2
Realizzare un’impresa Just-In-Time . . . . . . . . . . . . . . . 31
3.3
Informazioni rilevanti . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.1
Gli utenti . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.2
Scenari d’uso . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.3
Il modello di riferimento . . . . . . . . . . . . . . . . . 38
4 Architettura del Sistema
41
4.1
Presentazione dell’architettura . . . . . . . . . . . . . . . . . . 41
4.2
Modello three tier . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3
4.2.1
Data Access Layer (DAL) . . . . . . . . . . . . . . . . 44
4.2.2
Layer della logica . . . . . . . . . . . . . . . . . . . . . 45
4.2.3
Presentation and Interation Layer(PIL) . . . . . . . . . 47
4.2.4
Considerazioni . . . . . . . . . . . . . . . . . . . . . . . 49
Aspetti di sicurezza . . . . . . . . . . . . . . . . . . . . . . . . 49
5 Caso di Studio: CEFRIEL
5.1
5.2
5.3
53
Descrizione del caso di studio . . . . . . . . . . . . . . . . . . 53
5.1.1
Il CEFRIEL . . . . . . . . . . . . . . . . . . . . . . . . 54
5.1.2
Il modello organizzativo . . . . . . . . . . . . . . . . . 55
5.1.3
Il sistema di controllo e gestione progetti . . . . . . . . 56
5.1.4
Contesto tecnologico . . . . . . . . . . . . . . . . . . . 57
Esigenze aziendali . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.1
Casi d’uso: Professional . . . . . . . . . . . . . . . . . 58
5.2.2
Casi d’uso: Project Manager . . . . . . . . . . . . . . . 60
5.2.3
Casi d’uso: Account Manager . . . . . . . . . . . . . . 62
5.2.4
Casi d’uso: Head of Division . . . . . . . . . . . . . . . 62
Architettura di back-end . . . . . . . . . . . . . . . . . . . . . 63
5.3.1
Layer di accesso ai dati . . . . . . . . . . . . . . . . . . 64
5.4
5.3.2
Layer logico . . . . . . . . . . . . . . . . . . . . . . . . 71
5.3.3
Analisi dei dati . . . . . . . . . . . . . . . . . . . . . . 76
5.3.4
Comunicazione . . . . . . . . . . . . . . . . . . . . . . 79
5.3.5
Sicurezza del sistema . . . . . . . . . . . . . . . . . . . 83
I client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5.4.1
Pattern Model-View-View-Model (MVVM) . . . . . . . 88
5.4.2
Front-end desktop . . . . . . . . . . . . . . . . . . . . . 92
5.4.3
Front-end mobile . . . . . . . . . . . . . . . . . . . . . 98
5.4.4
Front-end gestuale . . . . . . . . . . . . . . . . . . . . 100
6 Direzioni future di ricerca e conclusioni
105
6.1
Piloting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.2
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
6.3
Sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.3.1
Sviluppi futuri per il back-end . . . . . . . . . . . . . . 110
6.3.2
Sviluppi futuri per il front-end . . . . . . . . . . . . . . 112
Bibliografia
113
A Tabella comparativa tra piattaforme mobile
117
B Database Gedi Alert
121
C Stati di Progetto
125
Elenco delle figure
2.1
Esempi di alcuni Widget installati su un PC . . . . . . . . . . 16
2.2
Esempi di Pinned Site . . . . . . . . . . . . . . . . . . . . . . 17
2.3
Microsoft Surface . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.4
iOS4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5
Windows Phone 7 . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6
Android 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7
Wii mote e Wii sensor bar . . . . . . . . . . . . . . . . . . . . 24
2.8
Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1
Modello di riferimento . . . . . . . . . . . . . . . . . . . . . . 29
3.2
Ciclo di sviluppo del sistema . . . . . . . . . . . . . . . . . . . 35
3.3
Utenti del sistema . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4
Modello di riferimento . . . . . . . . . . . . . . . . . . . . . . 39
4.1
Componenti dell’architettura . . . . . . . . . . . . . . . . . . . 42
4.2
Architettura a tre livelli . . . . . . . . . . . . . . . . . . . . . 43
4.3
Architettura del Presentation Layer . . . . . . . . . . . . . . . 48
5.1
Schema dell’architettura attuale in CEFRIEL . . . . . . . . . 57
5.2
Use Case Professional . . . . . . . . . . . . . . . . . . . . . . . 59
5.3
Use Case Project Manager . . . . . . . . . . . . . . . . . . . . 61
5.4
Use Case Head of Division . . . . . . . . . . . . . . . . . . . . 63
XIII
5.5
Architettura del sistema nel dettaglio . . . . . . . . . . . . . . 64
5.6
Schema ER di GEDI ALERT . . . . . . . . . . . . . . . . . . 65
5.7
Class Diagram DAL
5.8
Class Diagram Package CGP . . . . . . . . . . . . . . . . . . . 67
5.9
Esempio Sequence Diagram per chiamata a DAL . . . . . . . . 68
. . . . . . . . . . . . . . . . . . . . . . . 66
5.10 Business Logic Layer nel dettaglio . . . . . . . . . . . . . . . . 72
5.11 Esempio Sequence Diagram per chiamata a BLL . . . . . . . . 73
5.12 Class diagram del package DataContract . . . . . . . . . . . . 74
5.13 Class diagram del package Analysis . . . . . . . . . . . . . . . 78
5.14 Architettura del web service nel dettaglio . . . . . . . . . . . . 79
5.15 Esempio di utilizzo WCF . . . . . . . . . . . . . . . . . . . . . 81
5.16 Struttura di un servizio WCF . . . . . . . . . . . . . . . . . . 82
5.17 Integrate Windows Authentication (Kerberos v5) . . . . . . . 85
5.18 Scambio di messaggi utilizzando HTTPS . . . . . . . . . . . . 86
5.19 Pattern MVVM . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.20 Pattern MVVM nell’architettura
. . . . . . . . . . . . . . . . 91
5.21 Class diagram delle classi che implementano il MVVM . . . . 92
5.22 Gedi Gadget . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.23 Gedi Gadget in due istanze . . . . . . . . . . . . . . . . . . . . 93
5.24 Inserimento e consuntivazione Professional . . . . . . . . . . . 94
5.25 Visualizzazione dettagli progetti per PM . . . . . . . . . . . . 95
5.26 Pagina di dettaglio per i capi divisione . . . . . . . . . . . . . 97
5.27 Pagina di invio di avvisi . . . . . . . . . . . . . . . . . . . . . 97
5.28 Home GEDI Windows phone 7
. . . . . . . . . . . . . . . . . 100
5.29 Pagina Iniziale GEDI kinect . . . . . . . . . . . . . . . . . . . 103
5.30 Selezione dei progetti . . . . . . . . . . . . . . . . . . . . . . . 103
5.31 Selezione del report . . . . . . . . . . . . . . . . . . . . . . . . 103
6.1
Grafico dei giorni di inserimento dei consuntivi distribuito in
un anno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.2
Grafico dei giorni di inserimento dei consuntivi distribuito su
sei mesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.3
Totale consuntivi inseriti raggruppati per giorno del mese . . . 107
6.4
Modello di riferimento - Caratteristiche coperte dal front-end
desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.5
Modello di riferimento - Caratteristiche coperte dal front-end
mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.6
Modello di riferimento - Caratteristiche coperte dal front-end
gestuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Elenco delle tabelle
5.1
Tabella dei contesti per il Professional . . . . . . . . . . . . . 60
5.2
Tabella dei contesti per il Project Manager . . . . . . . . . . . 62
5.3
Tabella dei contesti per il Head of Division . . . . . . . . . . . 63
B.2 Campi della tabella Alert . . . . . . . . . . . . . . . . . . . . . 122
B.4 Campi della tabella Tipo . . . . . . . . . . . . . . . . . . . . . 123
XVII
Acronimi e abbreviazioni
CIA
Confidentiality, Integrity and Availability
DAL
Data Access Layer
EBA
Enterprice Business Architecture
ETL
Extract, Transform, Load
GEDI
Graphical Enterprise Data Integrator
IIS
Internet Information Service
JIT
Just in Time
MVP
Model-View-Presenter
MVVM
Model-View-View-Model
OpenNI
Open Natural Interface
SAL
Stato Avanzamento Lavori
WIP
Work in Progress
WCF
Windows Communication Foundation
WPF
Windows Presentation Foundation
XAML
eXtensible Application Markup Language
XIX
Capitolo 1
Introduzione
”The advantage lies not with first movers
but with first movers that can scale up their activities once
the way forward has become clear”
Lowell L. Bryan
Per fronteggiare un mercato sempre più complesso e dinamico, le imprese
devono aggiornare i propri prodotti, servizi e processi. La variabile tempo,
in questo contesto, gioca un ruolo fondamentale: le aziende infatti devono
prevedere e anticipare le possibili minacce di mercato, preparandosi ad affrontarle con le risorse disponibili. In quest’ottica, la tecnologia diventa un
indispensabile asset per tutte le aziende che vogliano tornare a competere nel
mondo post-crisi.
1.1
Il contesto
I due fattori che incidono da sempre sulle decisioni e le strategie aziendali
sono l’analisi del mercato e il monitoraggio delle performances dell’impresa:
2
Capitolo 1. Introduzione
nel primo caso le informazioni provengono dall’esterno, mentre nel secondo
dal funzionamento delle attività interne. Con l’accelerare delle dinamiche
di mercato su scala globale, ma anche delle dinamiche interne dell’azienda,
risulta sempre più difficile essere in grado di tenere sotto controllo, in tempi
brevi, tutte le variabili in gioco.
La Just-In-Time Organization è una filosofia organizzativa che vuole massimizzare l’efficienza e l’efficacia dell’azienda nel gestire e analizzare le informazioni rilevanti per il proprio business. Per fare ciò, la JIT organizzation
si concentra su tre aspetti: l’organizzazione dell’azienda, i processi e la tecnologia. In particolare, la tecnologia può venire incontro alle esigenze delle
aziende e fornire soluzioni e strumenti che facilitino la raccolta, l’analisi, la
condivisione e la presentazione delle informazioni.
In questo contesto, la diffusione di tecnologie innovative sta rivoluzionando la tradizionale interazione tra uomo e macchina e nuovi interessanti
scenari si presenteranno nei prossimi anni. L’obiettivo della nostra ricerca è
quello di valutare in contesti diversi quale può essere un modo efficace di presentare all’utente le informazioni rilevanti di cui ha bisogno, per determinare
eventuali minacce o criticità aziendali.
1.2
Obiettivi della tesi
Obiettivo di questo lavoro è riuscire a proporre una soluzione che permetta
di analizzare le performance dell’azienda con una bassa latenza e di prendere decisioni in modo tempestivo, il tutto introducendo costi o infrastrutture
contenute e coerenti con le dimensioni dell’impresa, ma garantendo la scalabilità della soluzione nel futuro. I dati generati dal sistema devono essere il
più possibile coerenti con lo stato dell’impresa e facilmente accessibili in ogni
1.2. Obiettivi della tesi
3
momento e in ogni luogo.
Fondamentale per il raggiungimento di questo obiettivo è sfruttare in base al contesto le più recenti e innovative tecnologie. Infatti, nel corso del
lavoro abbiamo dedicato particolare attenzione a capire quali fossero le esigenze delle persone che avrebbero utilizzato il nostro sistema in tre diversi
contesti: quando l’utente è seduto in ufficio davanti al proprio PC, quando è
in mobilità e quando è in riunione con i propri colleghi o con i partner aziendali. Per ognuno di questi contesti abbiamo scelto tra le più interessanti
tecnologie disponibili, quella più adatta a soddisfare le esigenze dell’utente. Nel complesso, l’obiettivo del lavoro è quello di favorire l’inserimento,
l’aggiornamento e la visualizzazione delle informazioni tramite un sistema
multipiattaforma e multicanale.
Lo studio preliminare è iniziato con l’analisi dell’organizzazione interna
di due aziende particolarmente attente al tema di questa tesi, Microsoft Corporation(oltre 300 sedi nel mondo) e CEFRIEL, e ci ha permesso di astrarre
un primo modello di organizzazione interna di riferimento. Le interviste con
alcuni responsabili delle due società hanno fatto emergere le esigenze e i problemi rilevanti per le aziende, in particolare in ambito di organizzazione e
gestione delle informazioni e, inoltre, ci ha permesso di validare il nostro
modello di riferimento con le loro esperienze dirette con partner e clienti.
Partendo dallo studio fatto, abbiamo realizzato un’architettura software
e dei tools che aiutassero le aziende a risolvere alcuni dei problemi che ci
sono stati segnalati e infine abbiamo sviluppato un prototipo che potesse validare il nostro lavoro. L’azienda che ha accettato di essere il nostro caso di
studio e sperimentare il nostro prototipo è il CEFRIEL, società di eccellenza
per l’innovazione, la ricerca e la formazione nel settore dell’Information &
Communication Technology, che svolge un’attività lavorativa basata su pro-
4
Capitolo 1. Introduzione
getti e che necessita di avere dati il più possibile aggiornati sullo stato di
avanzamento dei lavori, per rispettare i vincoli di tempo e di costo.
Il prototipo realizzato conferma la buona flessibilità dell’architettura e
l’effettiva efficacia della nostra proposta. Lo studio attento della struttura
organizzativa permette anche di replicare la nostra soluzione in altre aziende.
Inoltre, le scelte progettuali adottate permettono una buona modularizzazione del prototipo, per questo motivo le future implementazioni potranno
riusare facilmente le caratteristiche già introdotte da noi.
1.3
Struttura della tesi
Questo lavoro di laurea è strutturato come segue:
• Nel capitolo 2 si introduce la Just in Time Organization e l’importanza
di questo tipo di organizzazione nelle imprese moderne. Vengono inoltre
analizzate alcune tra le più recenti e innovative tecnologie di interazione
tra uomo e macchina per la presentazione delle informazioni.
• Nel capitolo 3 vengono analizzate le problematiche che un’impresa deve
affrontare per avvicinarsi alla Just in Time Organization in termini di
tipologia di informazioni e aree di impatto e vengono descritte quali
sono le esigenze che la tecnologia deve soddisfare.
• Nel capitolo 4 si illustrano le scelte effettuate con le motivazioni che
hanno portato a sviluppare questa architettura software.
• Nel capitolo 5 si analizza come l’architettura descritta nella sezione precedente è stata calata nel contesto d’uso reale del CEFRIEL. Si descrivono alcuni aspetti interessanti dell’implementazione e il suo impiego
in alcuni scenari significativi.
1.3. Struttura della tesi
5
• Nel capitolo 6 sono ricapitolati i risultati ottenuti, analizzandone i
principali vantaggi e proponendo possibili sviluppi futuri.
6
Capitolo 1. Introduzione
Capitolo 2
Stato dell’arte
”In short, the just-in-time inventory system focus is having
the right material, at the right time, at the right place,
and in the exact amount, without the safety net of inventory.”
Ryan Grabosky
In questo capitolo sarà analizzato lo stato dell’arte dei due ambiti di ricerca
principali di questa tesi: la gestione efficiente di una azienda e le nuove tecnologie di interazione tra uomo e macchina. Si cercherà anche di evidenziare
come questi due aspetti possono essere legati
2.1
La filosofia Just-In-Time
La filosofia industriale JIT, spesso abbreviata Just in Time (JIT), nasce
ai primi del 1900 negli stabilimenti della Ford Motor Company negli USA
per ottimizzare la produzione e la consegna di automobili, permettendo di
ridurre la durata del ciclo di produzione da ventuno a soli quattro giorni.
Purtroppo, questo ”Just-In-Time” di tipo manifatturiero lasciò ben presto il
7
8
Capitolo 2. Stato dell’arte
posto a magazzini molto grandi e lunghi tempi di ciclo dettati dalle economie
di scala della produzione di massa. Adottato intorno al 1950 in Giappone,
a metà degli anni ’70 il JIT divenne elemento fondamentale e di successo
del Toyota Production System, tant’è che molte aziende continuano a fare
riferimento al JIT come il sistema Toyota. La notevole attenzione rivolta a
identificare e a correggere potenziali problemi che potessero generare forme
di rifiuti, portò ad aumentare la produttività e la resa.Come risultato, Toyota
è riuscita a ridurre il tempo necessario per produrre una vettura da quindici
giorni a un giorno.Tra la fine degli anni ’80 e i primi anni ’90, la filosofia
ispirata al JIT fu divulgata e applicata anche in occidente e inglobata nel
concetto di Lean Production[30][27].
La filosofia industriale JIT è un insieme di principi e pratiche orientati
al raggiungimento di un elevatissimo livello di efficienza[1] e qualità, basati
sull’idea che le imprese dovrebbero ridurre al massimo le scorte, immagazzinando solo il necessario per la produzione o la distribuzione immediata:
qualsiasi scorta di materiale, semilavorato o prodotto finito è uno spreco,
uno spreco di risorse economiche, finanziarie e un vincolo all’innovazione
continua. Più il processo è corto nella somma dei processi di progettazione
e di produzione e più l’industria con i suoi prodotti e servizi è vincente.
In pratica, si tratta di coordinare i tempi di effettiva necessità dei materiali sulla linea produttiva con la loro acquisizione e disponibilità nel segmento
del ciclo produttivo e nel momento in cui debbono essere utilizzati, ma ciò
significa che un produttore dovrebbe ricevere materie prime o parti dai suoi
fornitori poche ore prima che siano utilizzate e che il prodotto finito dovrebbe essere spedito ai clienti appena dopo la realizzazione, senza dover tenere
stock delle materie prime o prodotti finiti. Quindi, sono necessarie un certo numero di condizioni supplementari per l’efficace attuazione del JIT, tra
2.1. La filosofia Just-In-Time
9
queste sono incluse lotti di piccole dimensioni, tempi brevi di setup dei macchinari, controlli di qualità efficienti ed efficaci, e forse più di tutti, progettare
l’intero processo di produzione per ridurre al minimo i backup e ottimizzare
l’efficienza del lavoro umano e macchina. Il just in time abbina elementi
quali affidabilità, riduzione delle scorte e del lead time, ad un aumento della
qualità e del servizio al cliente[18]. In tal modo si riducono enormemente i
costi di immagazzinaggio, gestione, carico e scarico di magazzino.
2.1.1
JIT Organizations: un’azienda moderna
La globalizzazione e la tecnologia stanno spazzando via i modelli del mercato
e dell’industria che, storicamente, hanno definito la natura della concorrenza.
Anche se il ritmo del cambiamento continua ad accelerare, le fondamentali
trasformazioni in atto nell’economia mondiale sono appena all’inizio[9]. Le
variabili che possono influenzare profondamente il successo e il fallimento
sono troppo numerose per essere contate e ciò rende impossibile prevedere
con certezza in quali mercati una società sarà collocata o come essa sarà
strutturata, anche solo fra qualche anno. Il risultato è un ambiente economico
che è ricco di opportunità, ma anche segnato da un aumento sostanziale del
rischio.
In questo mercato sempre più complesso e dinamico, per un’impresa è
importante monitorare in tempi rapidi l’andamento delle proprie prestazioni perché offre la possibilità di rimanere al passo con i tempi e reagire in
modo rapido ai cambiamenti. Ciò richiede che le imprese si dotino di modelli decisionali e operativi che le rendano capaci di cogliere e interpretare
correttamente tutti i segnali e le informazioni sull’andamento del mercato e
dell’impresa stessa, in tempi molto più rapidi rispetto al passato. In particolare, la variabile tempo gioca un ruolo di primaria importanza: le imprese
10
Capitolo 2. Stato dell’arte
devono essere in grado di rispondere con estrema rapidità agli stimoli esterni,
prevedendo e anticipando potenziali criticità e minacce, e valorizzando tempestivamente tutte le opportunità che si presentano loro[8]. In quest’ottica,
diventano fondamentali due aspetti della raccolta e analisi delle informazioni: la conoscenza approfondita delle dinamiche del mercato e il monitoraggio
proattivo e continuo delle performance dell’impresa stessa. Nel primo, l’analisi è incentrata su fattori esterni all’impresa, mentre nel secondo è focalizzata
sul funzionamento dell’impresa in tutte le sue parti e ogni aspetto deve essere
analizzato in modo organico e possibilmente in real-time, cosı̀ da permettere
una veloce e tempestiva individuazione delle opportune strategie correttive
e preventive.
Un’analogia tratta da [6] può aiutare a capire l’importanza della conoscenza in periodi di grande incertezza come quello che stiamo vivendo. Prendiamo
due corridori, uno è più veloce rispetto all’altro e ci si può aspettare che vinca
sempre su una pista piana, non importa quante volte la gara è ripetuta. Ma
cosa succede se la gara si svolge durante la notte su un percorso disseminato
di rocce e alberi caduti? Supponiamo anche che il corridore più lento abbia
percorso la pista sia di giorno che di notte, mentre il più veloce non si è
preoccupato di vedere il percorso in anticipo. Il corridore con la conoscenza
superiore sarebbe probabilmente il vincitore anche se l’altro fosse molto più
veloce. Inoltre, se il premio in denaro dovesse aumentare, aumenterebbe pure
il valore della conoscenza.
Per raggiungere il livello di efficienza e di conoscenza di cui l’azienda
ha bisogno, si può reinterpretare il paradigma Just-In-Time, ormai diffuso
in abito manifatturiero, per calarlo nel contesto dei processi di produzione e
analisi dei dati di qualsiasi impresa. L’obiettivo che l’azienda deve perseguire
per essere una Just-In-Time Organization è quello di realizzare un’organiz-
2.1. La filosofia Just-In-Time
11
zazione agile e flessibile. La struttura interna deve essere basata su processi
che permettano di raccogliere, analizzare e organizzare in modo organico e
coerente dati provenienti da varie fonti, sia interne che esterne all’azienda,
al fine di monitorare in real-time le proprie performance e dare indicazioni
sulle azioni strategiche da intraprendere.
Se una definizione di Just-In-Time in abito manufatturienro può essere:
The right material, at the right time, at the right place, and
in the exact amount
in questo nuovo contesto può quindi essere cosı̀ riletta:
The right information, at the right time, at the right place,
and in the exact amount.
La tecnologie IT a tutti i livelli è la chiave per la creazione dell’infrastruttura abilitante alla JIT Organization, ma deve tenere conto delle principali
criticità del campo in considerazione e cercare di fornire uno strumento che
risponda a quattro requisiti di qualità delle informazioni fondamentali: Timeliness, Accuracy, Focus e Efficiency. Infatti, per prendere decisioni efficaci,
è indispensabile basarsi su informazioni allineate con l’attuale stato dell’organizzazione e quindi ottenute tramite strumenti che riducano al minimo
i tempi di latenza. Non solo il fattore tempo è importante, ottenere dati
accurati e completi è importante per ”non sbagliare rotta”, quindi l’architettura IT deve cercare di prevenire l’introduzione di dati errati e evidenziare
possibili errori. Inoltre, vista la grande quantità di informazioni che possono
essere raccolte è indispensabile avere un meccanismo di aggregazione dei dati
e identificare degli indicatori di sintesi significativi. Infine, la raccolta e l’analisi dei dati non deve introdurre un effort eccessivo rispetto alle dimensioni
12
Capitolo 2. Stato dell’arte
e alle esigenze dell’impresa, al fine di non ostacolare le funzioni primarie di
business.
Visti questi requisiti, è indispensabile per l’azienda che voglia seguire la
filosofia Just-In-Time partire da un’architettura informativa che comprenda
cinque aspetti fondamentali. Il primo livello è costituito dalle sorgenti dati
che memorizzino e gestiscono i dati, che devono essere affidabili e garantire l’accessibilità ai dati in qualsiasi istante. Visto che le sorgenti dati sono
spesso incoerenti tra loro, è indispensabile un secondo livello logico, solitamente definito Extract, Transform, Load (ETL), che elabori e riconcili tra
loro i dati. I dati riconciliati, devono essere aggregati per ricostruire una
base informativa integra e capace di tenere tutta la serie storica dei dati, su
cui fare analisi e interrogazioni complesse e questi compiti sono solitamente
affidati a un livello di Datawarehouse e uno di Business Analysis. Infine, è
indispensabile non trascurare il livello di Presentation perché è ciò che fa la
differenza tra un discreto sistema e un ottimo sistema, inoltre, come sarà
evidenziato meglio in 2.2, negli ultimi anni è cambiato notevolmente il modo
di fruire le informazioni e si sono aperti interessanti scenari che non possono
essere trascurati.
2.1.2
Informazioni nella JIT Organizations
La vera sfida che le aziende dovranno affrontare nei prossimi anni, non sarà
solo diventare imprese JIT, ma diventare capaci di collaborare e condividere
informazioni Just-In-Time, sia all’interno che all’esterno dell’azienda.
Negli ultimi venti anni si è vista una progressiva integrazione dei sistemi
informativi aziendali con quelle dei fornitori e dei clienti, spesso per migliorare
la gestione dei magazzini e ottimizzare la gestione della produzione. Perché
2.1. La filosofia Just-In-Time
13
non rendere disponibile ai partner dell’azienda anche informazioni sullo stato
di avanzamento dei progetti condivisi?
Tutte le più moderne aziende hanno sistemi, più o meno efficaci, di reportistica avanzata integrata con sistemi di datawarehouse che forniscono grafici
sui bilanci, sullo stato di avanzamento dei progetti e su molti altri KPI. Una
buona parte di queste informazioni è spesso condivisa manualmente con i vari
partner aziendali, e questo oltre sottrarre tempo per attività più rilevanti per
l’azienda non consente di avere mai a disposizione il dato più aggiornato. Le
imprese che vorranno veramente innovare e rinnovarsi dovranno nei prossimi
anni incrementare la condivisione in tempo reale di informazioni coi i propri
partner, perché questo permette di avere non solo una visione accurata, completa e istantanea dello stato interno dell’azienda, ma anche dell’ecosistema
extra-aziendale che la circonda.
Un problema spesso evidente, ma trascurato in molte aziende, è quello
legato alla condivisione delle informazioni a tutti i livelli aziendali. Infatti, se
i top-manager riescono solitamente ad avere una buona visibilità dello stato
dell’azienda, scendendo nella piramide aziendale si perde la possibilità di
avere una visione, anche parziale, dello stato dell’azienda a livello operativo.
Capita cosı̀ che i dipendenti non abbiano alcun modo di sapere se i progetti su
cui stanno lavorando hanno dei ritardi o sono stati riscontrati dei problemi,
mentre le stesse informazioni sono accessibili a partner esterni.
Naturalmente, la condivisione di informazioni, spesso molto rilevanti o
strategiche per l’azienda, deve essere preceduta da un’attenta analisi dei dati
che si vanno a condividere e implementata tramite un architettura sviluppata
con particolare attenzione alla sicurezza.
14
Capitolo 2. Stato dell’arte
2.2
Le tecnologie di presentazione e interazione
Per una JIT Organization, un aspetto fondamentale e indispensabile per
la gestione efficace delle informazioni sono le tecnologie di visualizzazione
e interazione con i dati. Infatti, ormai tutte le aziende sono in grado di
raccogliere grandi quantità di informazioni, ma poche riescono a utilizzarle
al meglio perché utilizzano tecnologie di visualizzazione e interazione poco
intuitive che non sono in grado di far emergere i dati significativi.
Negli ultimi anni sono state messe a punto tecnologie molto innovative
per quanto riguarda l’interazione tra uomo e macchina. Negli anni ’70, agli
albori dello sviluppo della moderna Information Technology i computer erano
concepiti principalmente come raccoglitori di informazioni. Questa concezione si è ripercossa sull’impostazione data alle interfacce grafiche sviluppate
usando la metafora, tuttora è largamente in uso, del desktop: la UI si basa
su finestre, cartelle, icone e menu di gestione, ma tralascia completamente
l’utente. La recente evoluzione delle User Interface ha posto invece l’attenzione sull’utente e le sue esigenze sviluppando tecnologie altamente interattive e
intuitive[23]. Queste tecnologie sono ormai largamente diffuse e hanno ormai
raggiunto un grado di maturità tale da poterle utilizzare anche in contesti
aziendali. Inoltre, il continuo abbassamento del costo di miniaturizzazione e
produzione dei componenti sta rendendo disponibili ad un pubblico sempre
più ampio device molto sofisticati.
In questa sezione passeremo velocemente in rassegna le tecnologie più
interessanti che potrebbero, in contesti diversi, venire in contro anche ai
bisogni dell’azienda.
2.2. Le tecnologie di presentazione e interazione
2.2.1
15
Tecnologie desktop
La diffusione di notebook ad alte prestazioni a prezzi sempre più accessibili e
la nascita di nuovi dispositivi mobili, ha cambiato la tradizionale definizione
di computer desktop che si basava essenzialmente sulla forma e le dimensioni del computer. Sempre più spesso questo termine viene usato invece per
definire tutti quei device non pensati per essere usati “in movimento”. In
particolare in questo ambito si sta notando una progressiva integrazione tra i
sistemi operativi e i servizi web e di Cloud Computing, fino a poco tempo fa
fruibili esclusivamente tramite browser. Inoltre, stanno nascendo, e continueranno a svilupparsi nei prossimi anni, soluzioni multiutente pensate per far
lavorare più persone contemporaneamente sullo stesso device, introducendo
cosı̀ nuovi meccanismi di collaborazione e di interazione.
Widget
I widget sono piccole web-application che possono essere inserite all’interno
dei siti web o, da alcuni anni, direttamente sui desktop o lo smartphone
dell’utente. Ogni widget è disponibile come una ready-to-use application,
bastano pochi click per installarli sul PC, sono visivamente molto attraenti
e personalizzabili dall’utente.
Grazie alla loro immediatezza visiva, sono spesso usati per visualizzare
immagini, grafici, statistiche, sintesi, o qualsiasi tipo di informazione che è
interessante per l’utente tenere costantemente sotto controllo. I widget risultano anche molto utili per eseguire velocemente operazioni brevi, per esempio
controllare se è arrivata una nuova email, che normalmente richiederebbero
l’apertura del browser o altri programmi.
I widget possono essere realizzati come una piccola pagina e utilizzare qualsiasi tecnologia supportata dai browser come, ad esempio, Flash,
16
Capitolo 2. Stato dell’arte
Fig. 2.1: Esempi di alcuni Widget installati su un PC
JavaScript o Silverlight.
Pinned Site
Il Pinning è una nuova funzionalità di Internet Explorer 9 per Windows 7 che
consente agli sviluppatori web di creare funzionalità aggiuntive che possono
essere utilizzate dalla barra delle applicazioni di Windows 7. Tra le varie
funzionalità le più rilevanti e utili sono tre: è possibile fornire notifiche, ad
esempio nuovi l’arrivo di nuovi messaggi o la pubblicazione di nuovi articoli;
è possibile fare clic destro sull’icona per accedere a un elenco di link in varie
parti del sito; e infine, si possono avere delle anteprime del sito con dei
controlli che permettono, ad esempio, di controllare una web-radio.
Il vantaggio per gli utenti che visitano regolarmente alcune pagine Web,
è quello,grazie ai Pinned Site, di poter accedere direttamente ai loro siti
preferiti e, da loro punto di vista, i siti che implementano queste funzionalità
possono, secondo alcune stime, incrementare le loro visite fino al 50%.
2.2. Le tecnologie di presentazione e interazione
17
Fig. 2.2: Esempi di Pinned Site
Microsoft Surface
Microsoft Surface è un prodotto multi-touch(fino a 50 input simultanei) di
Microsoft che si sviluppa come una combinazione tecnologica di software e
hardware che consente a uno o più utenti, di manipolare contenuti digitali
con l’uso di gesture.Gli utenti possono interagire con la macchina toccando o
trascinando la punta delle dita o oggetti, quali pennelli, attraverso lo schermo.
Questo paradigma di interazione è anche noto come Natural User Interface
(NUI).
Anche se ancora poco diffusa, la piattaforma Microsoft Surface incentiva
le persone a lavorare e prendere decisioni insieme: grazie a interfacce pensate
per essere utilizzate a 360 gradi, Surface consente di creare esperienze che
cambiano il modo di collaborare e interagire tra le persone e, grazie anche al
riconoscimento degli oggetti, tra gli quelli del mondo reale.
18
Capitolo 2. Stato dell’arte
Fig. 2.3: Microsoft Surface
2.2.2
Tecnologie mobile
Gartner[11] stima che alla fine del 2010, 1.2 miliardi di persone siano in grado
di usufruire di smart device evoluti in grado di fornire un ambiente ideale per
la convergenza tra mobilità e web. I dispositivi mobili stanno avvicinando
sempre più a veri e propri computer, con una quantità incredibile di capacità
di elaborazione e una notevole disponibilità di banda. La qualità dell’esperienza di applicazioni di questi dispositivi, che possono sfruttare la posizione,
il movimento e il contesto di dove si trova l’utente, sta portando i clienti a
interagire con le aziende preferibilmente attraverso dispositivi mobili. Questo
ha portato ad una gara per sviluppare applicazioni mobili come strumenti
per migliorare i rapporti con i clienti e guadagnare un vantaggio competitivo
rispetto ai concorrenti le cui interfacce sono puramente basato su browser.
Infatti, da quando Apple nel 2007 lanciò ufficialmente il primo iPhone,
anche il mondo mobile è sempre più contraddistinto dalle tecnologie touchscreen. Come è stato evidenziato in [12] questo trend diventerà dominate nel
2011 con oltre il 60% dei dispositivi mobili venduti in Europa Occidentale e
in Nord America che implementerà un’interfaccia touch-screen. Le aziende
produttrici andranno presto anche oltre e spingendosi fino a sviluppare inter-
2.2. Le tecnologie di presentazione e interazione
19
facce multitouch, per garantire la miglior esperienza d’uso possibile all’utente
e il massimo in fatto di competitività. L’utilizzo di applicazioni dedicate per
i dispositivi mobili permette di sfruttare al meglio le caratteristiche (touchscreen, fotocamera, gps,..) rispetto ad applicazioni web che, al contrario,
spesso non si adattano bene alle piccole dimensioni dello schermo e non sono
in grado di garantire una User-Experience paragonabile a quella delle mobile
application.
Per quanto riguarda le piattaforme, si stanno delineando tre piattaforme
di riferimento: iOS di Apple, Android di Google e recentemente Windows
Phone di Microsoft, anche se altre potrebbero emergere nei prossimi mesi.
Per una tabella comparative dettagliata si rimanda all’appendice A.
iOS
iOS è la piattaforma sviluppata da Apple dedicata al mondo mobile, in particolare su iPod, iPhone, iPad, visto che le policy Apple non permettono di
installare iOS su altri device.
iOS fatto il suo successo tramite le applicazioni ed è stata la prima piattaforma che ha mostrato quello che una applicazione mobile ben realizzata
potrebbe fare per migliorare l’esperienza dell’utente. Come tale, l’interfaccia utente(Fig.2.4) di iOS è totalmente incentrata sulle App, la schermata
iniziale è un elenco a scorrimento di applicazioni e il messaggio che vuole
trasmettere è chiaro:C’è un App per tutto o quasi.
Il risultato è che la maggior parte degli utenti finali si ritrova con pagine
e pagine di applicazioni, ma è comunque facile muoversi intorno al telefono,
o con l’editor di layout in iTunes, riordinare le App in base alla frequenza di
utilizzo e di importanza. iOS incoraggia ad avere molte applicazioni, forte
dell’integrazione con l’Apple Store, anche facilitando la ricerca con Spotlight:
20
Capitolo 2. Stato dell’arte
Fig. 2.4: iOS4
visto che il modello di interazione richiede molto spesso lo scorrimento, e
quando si arriva ad avere nove o dieci schermate comincia a essere molto
scomodo per l’utente, scorrendo a sinistra dalla prima schermata appare la
schermata di ricerca tramite cui avviare direttamente l’applicazione voluta.
Windows Phone
Windows Phone 7 è la prima release del nuovo sistema operativo Microsoft
per il mondo mobile, è al contrario della scelta di Apple, Microsoft ha deciso
di rendere disponibile il proprio OS a vari produttori di device e di concentrarsi solo sulla parte software, imponendo però dei requisiti hardware minimi
molto elevati.
Windows Phone 7 è stato da poco lanciato e, anche se in questo momento
ha il più piccolo ecosistema di applicazione, ha l’unica UI che sta creando
2.2. Le tecnologie di presentazione e interazione
21
un certo scalpore. Infatti, Microsoft sembra aver dedicato molto tempo a
studiare il modo in cui gli utenti utilizzano le loro applicazioni. La nuova
UI(Fig.2.5) si basa sull’idea che sono le informazioni a raggiungere l’utente,
in contrapposizione alla continua navigazione all’interno delle applicazioni
in cerca di informazioni. Il design della schermata iniziale è incentrato sui
bisogni della persona e non sulle applicazioni.
Fig. 2.5: Windows Phone 7
È possibile scaricare tutte le applicazioni che si desidera, ma la schermata
iniziale di Windows Phone 7 permette di focalizzarsi solo su alcune informazioni importanti: le Live Tile permettono di mostrare all’utente informazioni
contestuali e sempre aggiornate senza l’avvio l’applicazione. Utilizzando la
funzione di hub, contenuti simili possono essere raggruppati in un unico contenitore. Ad esempio, l’hub immagini racchiude in un’unica live tile i contenuti
provenienti da più applicazioni di photo sharing.
L’idea di Microsoft è quella di enfatizzare le azioni e non le applicazioni
specifiche. Windows Phone 7 non rende decine di applicazioni immediatamente accessibili, optando invece per dare agli utenti gli strumenti per per-
22
Capitolo 2. Stato dell’arte
sonalizzare la propria esperienza sulla schermata Home con le informazione
che vogliono tenere sempre sott’occhio. Naturalmente, quando l’utente vuole
può accedere alla lista completa delle applicazioni con un semplice tocco e
scorrere l’elenco, ma questo elenco non può essere ordinato ed è una semplice lista, in questo modo l’utente si sente cosı̀ limitato da importare nella
schermata iniziale le cose importanti. La Home ha una quantità limitata di
spazi, perché più si aggiungono tile, più l’user-esperience diventa degradante
in quanto si deve scorrere sempre di più per vedere le applicazioni.
Windows Phone 7 si caratteristica anche per un interessante integrazione con i servizi e i giochi Xbox Live e per il futuro è prevista anche un
integrazione con i giochi che sfruttano Kinect.
Android
Android è la piattaforma open source dedicata al mondo tablet e dispositivi mobile sviluppata da Google. Come Microsoft, Google ha deciso di
concentrarsi sullo sviluppo lato software affidando ai vendor la realizzazione
dei dispositivi, ma contrariamente a Microsoft non ha imposto dei vincoli
hardware per i device incentivando cosı̀ la prolificazione di dispositivi dalle forme più diverse e l’utilizzo in vari contesti anche non legati al mondo
mobile(dispositivi per la cucina,...).
Android è una sorta di ibrido dei due sistemi descritti in precedenza,
e probabilmente sarà rivista completamente con la prossima major release.
Android ha una Home(Fig.2.6) come Windows Phone 7 in cui è possibile
inserire shortcut alle applicazioni e anche widget interattivi per tenere sott’occhio le informazioni, ma a seconda del telefono specifico gli utenti hanno
da tre a sette schermi. La lista completa di applicazioni, invece, ricalca la UI
di iOS. Questo sistema permette agli utenti di creare la schermata iniziale
2.2. Le tecnologie di presentazione e interazione
23
Fig. 2.6: Android 2.3
a proprio piacimento e se ben organizzate, lo scorrimento tra le schermate
dovrebbe essere ridotto a pochi tocchi.
2.2.3
Tecnologie entertainment
Nate in ambito entertainment, molte delle recenti tecnologie sono state riadattate anche a contesti aziendali, per questo motivo, è interessante analizzare brevemente quelle più innovative che hanno rivoluzionato il modo di
interagire tra uomo e macchina e hanno ridefinito l’idea stessa di videogioco.
Nintendo Wii
Nintendo Wii è la console per videogiochi prodotta da Nintendo con peculiarità molto interessanti che gli hanno permesso di essere la prima a rivoluzionare il modo di giocare con un videogames casalingo introducendo il
movimento fisico dell’utente.
24
Capitolo 2. Stato dell’arte
Fig. 2.7: Wii mote e Wii sensor bar
La sua caratteristica più distintiva è il controller senza fili, il Wiimote(Fig.2.7) crasi di Wii e Remote, che reagisce alle forze vettrici e all’orientamento rispetto allo spazio tridimensionali, attraverso il sistema di accelerometri e giroscopi presente al suo interno, e invia le informazioni alla console
tramite Bluethooth. Il controller è il maggiore distacco dagli ultimi venti anni di design di console, noto anche come free hand controller, utilizza
un approccio differente da quello tradizionale nel tentativo di risultare interessante per un pubblico più vasto. Il Wiimote ha la forma di un comune
telecomando da televisione e viene tenuto in una sola mano e, essendo simmetrico, è ugualmente utilizzabile da destri e mancini. Il controller tramite un
dispositivo ottico posto ad una delle sue estremità interagisce con la Sensor
Bar (Fig.2.7) rendendo possibile il suo utilizzo come sistema di puntamento
sullo schermo della TV.
2.2. Le tecnologie di presentazione e interazione
25
Il risultato ottenuto dalla Nintendo è senza dubbio stato rivoluzionario:
l’utente semplicemente tenendo il mano il controller e muovendolo può interagire con i giochi, il tutto con estrema naturalezza e semplicità. Questo
tipo di interazione è stato per alcuni anni esclusiva prerogativa di questa
console, ma recentemente è stato introdotto anche nella Sony PlayStation 3
e, in maniera più evoluta e ancora più rivoluzionaria, nella Microsoft Xbox
360.
Il grande successo ottenuto dalla console e il suo concept innovativo, ha
spinto anche molte comunità scientifiche a sfruttare il Wiimote in numerosi
progetti [19] [24] [25] [17] anche non legati all’ambito entertainment, come
dimostra una rapida ricerca in Internet.
Microsoft Kinect
Microsoft ha presentato a Luglio 2010 una nuova periferica per Xbox 360,
Kinect (originariamente Project Natal), un nuovo controller-free gaming device che si presenta come un modo del tutto nuovo per vivere esperienza
entertainment in salotto.
Nonostante le dimensioni ridotte, il dispositivo Kinect(Fig.2.8)è dotato
di telecamera RGB, doppio sensore di profondità a raggi infrarossi composto
da un proiettore a infrarossi e da una telecamera sensibile alla stessa banda
e della tecnologia motion-sensing che riesce a tenere traccia di 48 punti di
movimento sul corpo umano.
Con Kinect, gli utenti non hanno più bisogno di memorizzare diversi
comandi per interagire con il gioco, ma come recita lo spot:”You are the
controller”. Semplicemente posizionandosi di fronte al sensore e Kinect si
autocalibra e riconosce la voce e il tuo volto degli utenti che hanno già giocato.
26
Capitolo 2. Stato dell’arte
Fig. 2.8: Kinect
A dicembre 2010 la società Prime Sense, compagnia israeliana da tempo impegnata in ricerca e sviluppo di sistemi di controllo senza dispositivi
fisici da impugnare e responsabile della tecnologia del sistema di telecamere
di Kinect, ha rilasciato i driver open source per l’innovativa periferica Microsoft, compatibili con Windows e Linux, insieme a un middleware, NITE,
per il riconoscimento del movimento. Questi driver consentono di accedere
alle funzioni audio, video e ai sensori di profondità di Kinect e sono basati
sulle API di OpenNI (Open Natural Interactions). OpenNI permette di catturare il movimento in tempo reale, il riconoscimento di gesti delle mani e
dei comandi vocali e implementa anche un ”analizzatore di scena”, che rileva
figure in primo piano e le separa dallo sfondo. Utilizzando queste librerie,
come già accaduto per la Wii, la tecnologia di Kinect è stata utilizzata per
molti progetti di ricerca non legati al gaming o all’entertainment. Recentemente, Microsoft ha anche dichiarato che entro il 2011 la periferica Kinect
sarà integrata anche con Windows Phone 7.
Capitolo 3
Proposte per l’impresa Just in
Time
”An organizational structure consists of activities such as task allocation,
coordination and supervision, which are directed towards
the achievement of organizational aims.”
D.S. Pugh[22]
Per poter definire un’architettura software per le JIT Organization flessibile
e efficiente, in grado di adattarsi a un ampio numero di aziende, è necessario
partire da un modello organizzativo di riferimento. In questo capitolo, sarà
definito il modello che è stato estratto studiando l’organizzazione interna
di Microsoft, del Cefriel e, indirettamente, dei loro clienti. Partendo dal
modello di riferimento, saranno poi evidenziate le criticità che un impresa
deve superare per diventare una JIT Organization.
28
Capitolo 3. Proposte per l’impresa Just in Time
3.1
La struttura organizzativa di riferimento
La migliore struttura organizzativa per ogni azienda dipende da molti fattori
tra cui il lavoro che svolge, la sua dimensione in termini di dipendenti, fatturato, e la dispersione geografica delle sue strutture. Nel corso del tempo, sono
stati proposti sia modelli di Flat Organization sia di Hierarchical organization, ma negli ultimi anni le aziende di maggiore successo si sono orientate
verso modelli ibridi che garantiscono sia maggiore efficienza e efficacia sia
maggiore flessibilità.
In particolare, nelle organizzazioni in cui si lavora per lo più in modo
parallelo e concorrente su progetti complessi e ampi, si è diffuso il modello
organizzativo a Matrice(Fig. 3.1). Questo modello attua una divisione del
lavoro basata su un duplice criterio organizzativo: per funzione e per progetto
da realizzare.
Gli impiegati sono suddivisi in unità organizzative, Divisioni, in base a
criteri che variano da azienda ad azienda, ma che solitamente tendono a
raggruppare persone con competenze comuni e, se l’azienda è molto ampia, per aerea geografica. In questo modo, ogni divisione è specializzata
ad assolvere particolari funzioni aziendali ed è guidata da un Head of Division(capodivisione). Lo head of division è responsabile della gestione quotidiana della divisione attraverso la definizione dei processi, delle procedure e
delle cosiddette best practices da adottare. Il capodivisione si occupa anche
della crescita e dello sviluppo delle risorse, definendo gli obiettivi per i singoli
componenti della divisione.
In base ai progetti o prodotti da realizzare, il Project Manager di riferimento richiede risorse con competenze specifiche dai diversi dipartimenti. Il
compito del project manager sarà, in questo caso, di tipo prettamente progettuale, basato sull’organizzazione dei tempi di lavoro in relazione al numero
3.1. La struttura organizzativa di riferimento
29
Fig. 3.1: Modello di riferimento
di ore settimanali allocate per ogni membro del team. A progetto ultimato,
l’unità organizzativa appositamente formata si scioglie e i suoi membri sono
destinati a nuovi incarichi.
In questo sistema, ogni membro di una divisione può essere assegnato
ad un singolo progetto o a più progetti, tutti da portare avanti in modo
parallelo. Ogni risorsa quindi, riporterà il proprio stato di avanzamento lavori
direttamente al project manager e non al head of division. Ciò significa che
ogni membro di un team risponderà a due (o anche più) manager e sarà,
in effetti, egli stesso membro di due (o più) team. L’appartenenza a più
30
Capitolo 3. Proposte per l’impresa Just in Time
squadre, pertanto, potrebbe comportare anche un ruolo differente di volta in
volta ed una responsabilità precisa nei confronti di ogni manager.
Oltre agli head of division e ai project manager, sono spesso presenti altre
due figure che permettono all’organizzazione di incrementare ulteriormente
la propria efficienza e coprire altri aspetti chiave per il business: l’Account
Manager e il Resource Manager.
Mentre il project manager è una figura focalizzata sulla realizzazione dei
progetti, l’account manager è una persona che è responsabile della gestione delle vendite e della relazione con particolari clienti, solitamente i più
importanti. L’account manager ha il compito di lavorare con i clienti per
identificare le loro esigenze e capire come l’azienda possa rispondere al meglio a tali esigenze, in modo che il cliente non decida di cambiare partner.
A seconda delle dimensioni della società, l’account manager può gestire un
unico cliente o può avere un portfolio di clienti.
Il resource manager è una figura simile al head of division, ma con una
visibilità che va oltre la singola divisione. Avendo una visione globale delle
risorse aziendali, il resource manager si occupa di ottimizzare l’allocazione
delle persone nei diversi progetti aperti. Anche se molto utile, questa figura
non è sempre presente in azienda e può essere sostituita dando maggiori
responsabilità ai head of division.
Uno dei vantaggi di una struttura a matrice è l’utilizzo efficiente delle
risorse, specialmente di quelle con competenze più pregiate, che non possono
esser utilizzate a pieno soltanto da un progetto, ma possono essere occupate
pienamente lavorando su più progetti. Piuttosto che duplicare funzioni, come dovrebbe essere fatto in una struttura semplice, le risorse sono condivise
con elevata flessibilità, derivante dalla possibilità di gestire le risorse umane
a seconda delle necessità operative dei vari progetti. Questo fa sı̀ che le orga-
3.2. Realizzare un’impresa Just-In-Time
31
nizzazioni a matrice consentono alle divisioni funzionali di concentrarsi sulle
proprie competenze specifiche di business e permettono ai progetti di essere allestiti con specialisti provenienti da qualsiasi parte dell’organizzazione.
Inoltre, mentre i reparti funzionali promuovono lo sviluppo delle competenza
funzionali, allo stesso tempo, il lavoro in gruppi di progetto con esperti di altre divisioni favorisce la cross-fertilizzazione di idee. Infine, l’organizzazione
a matrice è anche la più flessibile quando ci sono cambiamenti di esigenze di
business o di priorità e alcune ricerche mostrano come questo tipo di organizzazione incrementi la frequenza della comunicazione interna, sia formale
che informale[16].
3.2
Realizzare un’impresa Just-In-Time
Uno tra i maggiori problemi di molte aziende è che le relazioni di riporto
sono complesse e alcune persone potrebbero riportare contemporaneamente
a un capodivisione e uno o più project manager. Inoltre, la duplice linea di
comando determina condizioni di potenziale conflittualità tra responsabili di
funzione e responsabili di progetto che rende indispensabile una forte comunicazione e cooperazione tra capi divisione e project manager per organizzare
al meglio il tempo delle risorse.
La qualità delle informazioni e la velocità con cui vengono scambiate diventano fondamentali per il funzionamento dell’organizzazione. Per riuscire
a creare un impresa JIT che rispetti i requisiti descritti nel capitolo precedente sono richiesti sia interventi di carattere tecnologico sia organizzativo
fondamentali per l’Enterprice Business Architecture (EBA). Con il termine
EBA si fa riferimento a un’architettura, allineata con le strategie aziendali,
che offre una base comune per integrare le persone, i processi e tecnologie:
32
Capitolo 3. Proposte per l’impresa Just in Time
un dominio comune a cui tutte le iniziative strategiche sono collegate[28][29].
In particolare, l’EBA deve consentire l’allineamento strategico e l’integrazione dei processi aziendali con l’architettura enterprise al fine di migliorare le
capacità di monitoraggio e l’efficienza complessiva dell’azienda.
Business process: Un’analisi attenta dei processi di business, l’insieme dei
processi finalizzati al raggiungimento degli obiettivi di business, può
evidenziare la necessità di rivedere o definire nuovi processi che tengano conto anche della produzione di dati necessari al monitoraggio
dell’andamento dell’azienda e della loro qualità. I nuovi processi devono considerare le caratteristiche peculiari di ogni divisione, facilitando la raccolta dei dati con meccanismi semplici che non incidano
negativamente sull’efficienza del processo.
Information Management: L’elevata quantità di dati e informazioni raccolti a livello di processo devono essere organizzati e gestiti definendo
mappe concettuali e modelli che definiscano le relazioni tra gli elementi
facilitandone l’usabilità e la condivisione.
People & Organization: L’aspetto che più di altri incide ed è indispensabile per realizzare un’impresa JIT è l’organizzazione e la motivazione
delle persone. Se sull’organizzazione è già stata dedicata la sezione precedente, è bene soffermarsi anche sull’importanza delle persone. Come
ci è stato confermato dalle interviste fatte, la presenza di tool e architetture sofisticate sono inutili se non si ha un forte commitment da
parte del management al tema della gestione delle informazione. Tutte
le persone dell’azienda devono essere motivate e devono capire l’importanza di un inserimento accurato, tempestivo, continuo e sicuro dei
dati. Per questo motivo, sono necessari interventi di comunicazione e
3.3. Informazioni rilevanti
33
sensibilizzazione delle persone che evidenzino, anche con esempi concreti, come la scarsità o la poca qualità dei dati incida negativamente
sulla valutazione dello stato dell’azienda.
IT Architecture: Anche se gli aspetti legati alle tecnologie IT da soli non
bastano a trasformare un’organizzazione in una organizzazione JIT,
molto spesso architetture poco flessibili o tool dalla pessima user experience sono elementi che disincentivano gli utenti dall’utilizzo e diventano scuse per la scarsa attenzione alla qualità delle informazioni,
causando gravi inefficienze e problemi nel monitoraggio aziendale.
Il nostro lavoro, si concentra in particolare su questo elemento della Enterprice Business Architecture e cerca di definire un’architettura di riferimento
per gli aspetti di integrazione e elaborazione dei dati e offrire soluzioni per
la presentazione e fruizione delle informazioni. Particolare attenzione è stata posta nel coniugare usabilità e accessibilità delle informazioni con strumenti multicanale che sfruttino al meglio le potenzialità dei device di nuova
generazione.
3.3
Informazioni rilevanti
Il requisito fondamentale per un’impresa Just-In-Time è quello di riuscire a
fornire attivamente le informazioni rilevanti per le persone nel giusto luogo
e nel giusto momento. A questo requisito fondamentale possono essere aggiunte molte altre caratteristiche che migliorano ulteriormente l’efficienza e
l’efficacia dell’impresa.
Per prima cosa, è consigliabile che i meccanismi che portano le informazioni verso l’utente seguano approcci di tipo push anziché pull, cioè cerchino
di prevenire le esigenze e fornire in anticipo le informazioni di cui la persona
34
Capitolo 3. Proposte per l’impresa Just in Time
può avere bisogno. Per capire quali informazioni potrebbero essere utili si
deve sfruttare al meglio le informazioni sul contesto in cui l’utente si trova.
Per migliorare ulteriormente la qualità delle informazioni che vengono
trasmesse in azienda, si possono sfruttare dei profili, generati automaticamente o configurati dall’utente stesso, che permettono di personalizzare i
dati trasmessi in base chi li dovrà utilizzare e al fine per cui i dati sono
richiesti.
Se il processo è stato accuratamente progettato, è possibile raccogliere
una grande quantità di dati sui processi aziendali, ma affinché questi dati si
trasformino in informazioni utili è necessario definire degli indicatori sintetici,
KPI, che siano in grado di dare una prospettiva generale sullo stato dell’azienda. Questa capacità di sintesi deve poi essere inserita negli strumenti utili
usati, che devono essere in grado di comunicare facilmente e velocemente il
significato di un determinato indicatore.
Infine, una caratteristica importante per rendere il sistema completo è
la capacità di navigare i dati al fine di ricercare dettagli aggiuntivi rispetto
all’indicatore sintetico.
La Fig. 3.2 mostra tutti gli aspetti del processo di sviluppo di un’architettura IT, e delle soluzioni specifiche, per la Just-In-Time Organization. In
particolare, si deve notare che come tutti i processi di sviluppo è un processo
ciclico che tende ad arricchire di funzionalità e a migliorare le prestazioni del
sistema ad ogni iterazione.
Un problema molto frequente che porta a realizzare soluzioni che non
rispecchiano le esigenze degli utenti è quello di considerare come punto di
partenza il dato. Infatti, in molti casi, partendo dalla struttura dei dati, non
è possibile realizzare una architettura completa e efficiente poiché in realtà il
vero focus deve essere posto sugli utenti. Considerando come punto di parten-
3.3. Informazioni rilevanti
35
za il dato, si tende a portare all’utente un numero eccessivo di informazioni
che, spesso, non contengono le informazioni che realmente servono.
Fig. 3.2: Ciclo di sviluppo del sistema
Il nostro approccio è invece fortemente incentrato sull’utente e parte proprio dall’individuazione e classificazione degli utilizzatori del sistema. Una
volta individuati gli attori in gioco, si passa a un’attenta analisi degli obiettivi di business di ognuno di loro e dei possibili usi che faranno della soluzione
finale. Dagli obiettivi di business è possibile capire quali indicatori di business siano rilevanti e per essi stabilire delle metriche adatte. Solo a questo
punto ha realmente senso domandarsi da quali sorgenti di dati partire per
creare e alimentare gli indicatori che sono stati individuati. Individuati e
modellizzati i dati, si può passare a integrare le varie sorgenti in un’unica
piattaforma e realizzare tool di analisi. I risultati dell’analisi devono, infine,
essere presentati all’utente e per riuscirci nel modo più efficace bisogna realizzare soluzioni pensate per gli specifici device che saranno utilizzati per la
visualizzazione.
36
Capitolo 3. Proposte per l’impresa Just in Time
3.3.1
Gli utenti
Come già evidenziato nel modello di riferimento, sono stati individuati cinque
attori che interagiscono principalmente nel sistema azienda(Fig. 3.3).
Fig. 3.3: Utenti del sistema
Professional: è principalmente una fonte di dati per il sistema. Inserisce
dati relativi al suo lavoro che possono essere analizzati dai manager
a cui fa riferimento. In alcuni casi, il professional può anche essere
utilizzatore delle informazioni, ma solo relative alla sua persona.
Project Manager(PM): è colui che gestisce il progetto e richiedere al head
of division le persone da allocare ai singoli progetto. Oltre alle persone,
gestisce anche le altre risorse del progetto come la formazione, l’utilizzo
il software e le trasferte. A sua volta il PM è un professional assegnato
al progetto. Il PM interagisce con il sistema principalmente per fare
operazioni di analisi, ma è anche a sua volta una sorgente di dati ad
esempio nei confronti degli account manager e dei head of division.
3.3. Informazioni rilevanti
37
Account Manager (AM): è colui che gestisce tutti i progetti relativi a un
unico cliente. Ha le stesse esigenze del project manager, ma con una
visione trasversale sul cliente.
Head of Division (HoD): è a capo di una divisione all’interno dell’azienda. Deve approvare la richiesta di risorse provenienti dal PM ed è
interessato principalmente al lato finanziario della gestione della divisione.
Resouce Manager (RM): ha un focus simile ai HoD, ma con una visione
che va oltre la singola divisione. Il suo compito principale è ottimizzare
l’allocazione delle risorse.
3.3.2
Scenari d’uso
Tipicamente è possibile distinguere tre contesti in cui i lavoratori dell’azienda
si possono trovare a interagire con le informazioni dell’organizzazione: in
ufficio davanti al proprio PC, in mobilità e in riunione con i propri colleghi
o con partner aziendali.
La situazione tipica è quella di un dipendente, che nel suo ufficio di fronte
al suo PC, ha la necessità di avere sempre a disposizione i dati riguardanti
il suo ruolo nell’impresa. In questo contesto l’utente ha a disposizione tutti
gli strumenti per eseguire qualsiasi tipo di azione, ma è comunque necessario
capire quali tra questi strumenti possono rendere i suoi compiti più facili e
veloci.
Spesso un dipendente si trova a compiere spostamenti per il suo lavoro, ma
ha la necessità di poter ugualmente visualizzare le informazione come se fosse
in azienda. I dispositivi mobili, che oggi sono paragonabili ad comune PC
per la gamma di servizi offerti, permettono di colmare questa esigenza. Due
38
Capitolo 3. Proposte per l’impresa Just in Time
aspetti sono però critici e devono essere affrontati in questo contesto. Il primo
aspetto riguarda è la criticità delle informazioni e quindi l’accesso sicuro e
controllato al servizio, il secondo invece riguarda lo studio dell’interfaccia
utente e quindi l’interazione con l’applicazione che deve risultare piacevole,
semplice, veloce e deve tener conto delle dimensioni dello schermo.
Il terzo contesto che vogliamo considerare è quello dei meeting aziendali e
dei contesti collaborativi, dove si ha l”esigenza di esporre e presentare risultati, offerte tecnologiche e dettagli di progetto. In questo contesto, l’aspetto
più significativo è la facilità con cui i partecipanti possono interagire con le
informazioni e collaborare tra loro. Tipicamente in questo contesto si ha
disposizione schermi di dimensioni elevate e sale appositamente attrezzate.
3.3.3
Il modello di riferimento
Dopo aver analizzato i bisogni degli utenti nelle diverse situazioni in cui si
potrebbero trovare, si aprono diversi orizzonti per lo sviluppo. La Fig. 3.4
vuole descrivere sinteticamente i diversi aspetti che diverse soluzioni potrebbero coprire. Lo schema mostra come si possono coprire prospettive differenti
partendo dai bisogni dell’utente e progressivamente allargarsi a nuovi ambiti.
Si individuano cinque aspetti principali: Context, Device, Tool, Aggregation,
Time.
L’utente, che resta il perno della nostra analisi, può trovarsi a lavorare
principalmente in due contesti: da solo o con altre persone. Il primo caso
è quello più semplice e comune e la maggioranza dei software in commercio
sono pensati per questo contesto. In realtà, in azienda è molto comune
lavorare con altre persone, basti solo pensare a quanti meeting vengono fatti
in una settimana. Le soluzioni che indirizzano verso questo contesto devono
specificatamente tenere conto dell’interazione tra le persone.
3.3. Informazioni rilevanti
39
Fig. 3.4: Modello di riferimento
Allargando ulteriormente l’analisi, si deve naturalmente tenere conto dei
device che saranno utilizzati, sia dal punto di vista hardware sia da quello
software. Dal punto di vista hardware, alcuni fattori essenziali sono il tipo
di interazione che il device permette (mouse, touch, multitouch, gesture,... )
e le dimensioni degli schermi su cui saranno visualizzate le informazioni. Dal
punto di vista software, la scelta di un sistema operativo o di un linguaggio
di sviluppo può incidere fortemente sulla velocità di sviluppo, ma anche sulla
capacità di integrare e riutilizzare i componenti già presenti.
Sui diversi device si possono sviluppare tool diversi (portali, widget, strumenti di reportistica,...) ognuno dei quali finalizzati a obiettivi diversi e
conseguentemente progettati per soddisfare requisiti diversi.
Le soluzioni sviluppate possono avere modalità di visualizzazione dei dati che vanno dalla più sintetica metafora, sole se l’azienda va bene fulmini e
pioggia in caso di problemi, al datasheet con funzioni di aggregazione e esplo-
40
Capitolo 3. Proposte per l’impresa Just in Time
sione per visualizzare i dati completi di una tabella di un report. Tra questi
due estremi sono presenti un’infinità di stili e modelli di visualizzazione intermedi che molto utili, a seconda del contesto, per visualizzare informazioni
di carattere differente.
Infine, un alto aspetto da prendere in considerazione prima di realizzare
la soluzione software è il fattore tempo. Questo fattore è particolarmente
importante perché può diventare un aspetto dannoso per il sistema e un requisito vincolante e discriminante per tutta l’architettura. Ad esempio, è
inutile che il sistema sia progettato per realizzare analisi realtime quando le
informazioni generate vengono utilizzate per prendere decisioni settimanali. Al contrario, soluzioni utilizzate per generare informazioni per prendere
decisioni in realtime, si pensi ad esempio ai broker di borsa, non possono
permettersi ritardi nell’elaborazione dei dati e devono essere dimensionate
per garantire il massimo della disponibilità con il minor tempo possibile.
Il modello di analisi qui proposto, sarà ripreso nel capitolo6 per valutare
quali di questi aspetti le soluzioni proposte riescono a coprire e quali aspetti
potrebbero essere sviluppati in futuro.
Capitolo 4
Architettura del Sistema
”Un giorno le macchine riusciranno a risolvere tutti i problemi,
ma mai nessuna di esse potrà porne uno.”
Albert Einstein
Questo capitolo presenta l’architettura software generale che proponiamo.
In particolare, si cerca di evidenziare, dettagliando puntualmente i diversi
layer software, come l’architettura proposta risponda alle esigenze di impresa
just-in-time che sono emerse nei capitoli precedenti.
4.1
Presentazione dell’architettura
L’architettura che proponiamo si basa un componente di back-end, che si
occupa di estrarre le informazioni dai sistemi interni all’azienda, aggregarle
e tenerle aggiornate e pronte all’uso, e da una componente di front-end per
la visualizzazione.
Questa architettura non necessita di modifiche alle risorse già presenti in
aziendale, ma si integra con esse in particolare nel livello di integrazione e
42
Capitolo 4. Architettura del Sistema
Fig. 4.1: Componenti dell’architettura
aggregazione dei dati e in quello di presentazione. I vari sistemi di CRM,
ERP, mail service dell’azienda vengono utilizzati come fonte dal quale ricavare le informazioni e, nel caso in cui l’azienda fosse dotata di datawarehouse
e strumenti di reportistica già collaudati, il sistema prevederà anche l’accesso
diretto a queste informazioni.
La Fig. 4.1 mostra il macro-schema dell’architettura, dal reperimento
delle informazioni fino alla presentazione e visualizzazione di questi. Dietro
4.2. Modello three tier
43
a tutto ciò c’è l’esigenza di riconoscere dei dati eterogenei tra di loro che a
seconda del genere devono essere gestiti in modo differente.
4.2
Modello three tier
La nostra architettura software adottata segue il tipico modello a tre livelli[2]
(Fig. 4.2), in particolare, i layer di accesso ai dati e di logica sono collocati
server-side e il layer di presentazione è spostato interamente client-side.
Fig. 4.2: Architettura a tre livelli
Le due parti comunicano tramite web-service[13] e questo permette di
separare completamente lo sviluppo della grafica da quello della logica. La
scelta di questo tipo di architettura è dovuto ai seguenti motivi:
• Maggiore garanzia di sicurezza per ciò che riguarda i dati aziendali.
Infatti, la suddivisione tra business layer e data layer permette l’accesso
44
Capitolo 4. Architettura del Sistema
ai database solo a coloro che hanno le autorizzazioni necessarie per il
sistema.
• Valore aggiunto per la gestione del codice e della sua evoluzione nel
tempo. L’aggiunta di nuovi moduli e la manutenzione di quelli attualmente presenti risulta più immediata e semplice perché ogni componente è nettamente separata dagli altri. Inoltre, in caso di errori è facile
trovare il problema e intervenire sul modulo individuato.
• La separazione tra la logica e il database funzionale significa un miglior
bilanciamento del carico.
• L’architettura è di tipo aperto, cioè non si lega in modo particolare
ad un tipo di client, garantendo la flessibilità necessaria per andare a
sostituire un client con uno di diversa natura senza modificare in nessun
modo la logica.
4.2.1
Data Access Layer (DAL)
Entrando nel dettaglio dell’architettura, il primo livello da analizzare è il
Data Access Layer(DAL).
L’applicazione dovrebbe potere accedere a ogni singola informazione aziendale in formato elettronico, dai dati dei clienti presenti sul CRM, alle mail
che vengono scambiate tra i dipendenti. Il layer in analisi ha il compito di
gestire le connessioni con le varie fonti dati tramite dei componenti detti
Connector suddivisi per tipologia di fonte (Mail Service, CRM, ERP, Report
Manager,... ) e poi sotto-classati in base sistema usato (Exchange, Gmail,
...). Questo permette di poter gestire un’ampia gamma di possibili fonti dati
e utilizzare la nostra soluzione indipendentemente dai software già disponibili
in azienda. Il layer dei dati si occupa anche di uniformare i dati provenienti
4.2. Modello three tier
45
dalle diverse fonti per renderli omogenei e ottimizzarne l’utilizzo nelle fasi
successive.
Oltre ai connettori, DAL si occupa anche di uniformare i dati provenienti
dalle diverse sorgenti per renderli omogenei e ottimizzarne l’utilizzo nelle fasi
successive generando un modello dei dati contenuti nelle diverse fonti. Questo
favorisce un rapido passaggio dei dati tra la parte di logica del sistema e le
sorgenti informative, il tutto in modo trasparente alla tecnologia usata per
implementare.
4.2.2
Layer della logica
Il secondo livello dell’architettura è costituito dal Business Logic Layer(BLL)
che implementa tutta la logica del sistema. Il BBL è costituito da tre componenti fondamentali: SecurityManager, InfromationManager, AlertManager.
L’InfromationManager gestisce il recupero delle informazioni e offre metodi per l’inserimento di dati. InfromationManager gestisce anche il recupero
di dati già elaborati e provenienti da uno strumento di reportistica esterno o
da un datawarehouse.
AllertManager è il componente che permette di creare e smistare ai diversi
utenti avvisi riguardanti informazioni di suo interesse.
Il SecurityManager implementa le funzionalità di autenticazione degli
utenti e di gestione delle sessioni di lavoro interfacciandosi con il repository degli utenti. Le caratteristiche di sicurezza che questo componente deve
garantire sono dettagliate in 4.3.
L’analisi dei dati riveste un ruolo sempre più determinate e anche le aziende, che fino a pochi anni fa si concentravano per lo più sulla raccolta dei dati,
stanno spostando gran parte dei loro investimenti sullo sviluppo o l’acquisto
di tool di analisi e di previsione. BLL si fa anche carico dell’analisi delle
46
Capitolo 4. Architettura del Sistema
informazioni provenienti dalle diverse fonti. Le informazioni, nelle loro varie
declinazioni(report, contact, task,...), vengono analizzate da ProjectsAnalyzer per rilevare il livello di importanza e l’utente interessato. Per ogni
categoria di utilizzatore è disponibile un struttura che descrive le gerarchie
di interessi in base alle quali devono essere classificate le informazioni. In
base ai risultati delle analisi, il sistema genera automaticamente degli avvisi che vengono recapitati all’utente. Un esempio di analisi interessante per
i manager può essere la valutazione e previsione dei costi di un progetto e
la segnalazione di eventuali sformanti di budget. Questa analisi a priori ha
il compito di ridurre i tempi di risposta durante l’utilizzo dell’applicazione
client.
Web Services
La scelta di utilizzare web service come interfaccia tra front-end e backend del sistema permette di avere una soluzione molto flessibile e facilmente
estensibile.
Sfruttando il protocollo HTTP e incapsulando i messaggi secondo il protocollo SOAP, siamo in grado di fornire a un ogni utente aziendale collegato a
internet le informazioni selezionate in qualunque luogo si trovi. Inoltre il web
service, essendo basato su tecnologie protocolli standard, permette di accedere al sistema indipendentemente dalla tecnologia utilizzata lato client. Gli
sviluppi futuri del front-end sono quindi del tutto svincolati dalla tecnologia
di back-end.
Un ulteriore vantaggio è la possibilità di collegare tra loro più servizi riutilizzando le funzionalità già implementate. Per esempio, tramite web service
l’azienda può decidere di integrare il nostro sistema con quello contabile per
verificare i giorni lavorati dai dipendenti e segnalare irregolarità.
4.2. Modello three tier
4.2.3
47
Presentation and Interation Layer(PIL)
L’ultimo livello, il Presentation and Interation Layer(PIL) (Fig. 4.3) ha il
compito di implementare i front-end che gestiscono l’interazione dell’utente
con il sistema. Per scelta progettuale abbiamo deciso di ridurre al minimo
la logica contenuta lasciando solamente quella necessaria alla gestione della
grafica.
Le user interface devono essere quanto più possibile smart e user-friendly
per permettere un inserimento rapido dei dati e una consultazione efficace
delle informazioni. Per perseguire questi obiettivi sono stati sviluppati client
di visualizzazione diversi pensati per specifici contesti e device.
Infatti, per raggiungere gli obietti posti è indispensabile sviluppare client
dedicati al tipo di device utilizzato per riuscire a sfruttare a pieno le potenzialità di questi strumenti, garantendo la maggiore semplicità d’uso per
l’utente. Questa scelta implica lo sviluppo e il mantenimento di client molto
diversi tra loro, ma questo aspetto non è comunque critico.
Un primo fattore da considerare è il mercato: negli ultimi anni l’apparizione di device sempre più evoluti, semplici e interattivi ha spinto a ripensare
il normale concetto di fruizione di un servizio, in particolar modo dell’utilizzo del web. Fino a qualche anno fa, il principale meccanismo per rendere
disponibile la fruizione di un servizio era la realizzazione siti web e applicazioni utilizzabili tramite browser perché garantiscono un buon livello di
inter-operabilità e l’indipendenza dal sistema che l’utente utilizza. Oggi si
sta osservando, sopratutto in ambito mobile, un’inversione di rotta che porta
a preferire la realizzazione di App dedicate e specifiche per particolari famiglie di device. Seguendo questa tendenza, anche molti dei principali siti
web mondiali hanno deciso di sviluppare applicazioni dedicate per garantire
all’utente di fruire da device mobile gli stessi, e in alcuni casi maggiori, con-
48
Capitolo 4. Architettura del Sistema
tenuti presenti sul web. Questa tendenza ha portato alcune riviste a titolare
addirittura che: ‘The Web Is Dead. Long Live the Internet’[3].
Il secondo fattore importante da tenere presente è che concentrando tutta
la logica dell’applicazione nella parte di back-end, si può mantenere e sviluppare agevolmente il codice che gestisce le operazioni core della piattaforma,
senza modificare minimamente i client. Inoltre, mantenere la logica indipendente dal livello presentazione permette di avere un sistema fortemente
multi-canale e multi-device, indipendente dalla tecnologie di visualizzazione.
Fig. 4.3: Architettura del Presentation Layer
Per ognuno dei tre contesti evidenziati in 3.3.2, è necessario pensare e
sviluppare un front-end dedicato per essere in grado di fornire ai lavoratori
della JIT Organizzation un efficace meccanismo di interazione con le informazioni in qualsiasi situazione si trovino ad operare. Le tecnologie descritte
nel 2 possono essere utili a questo scopo.
4.3. Aspetti di sicurezza
4.2.4
49
Considerazioni
L’architettura cosı̀ presentata è molto agile e flessibile, in particolare possiamo vedere come sia semplice agganciarsi ad altre fonti di dati sia interne che
esterni all’azienda. Per garantire ottime prestazione, scalabilità e affidabilità
il back-end potrebbe essere sviluppato sfruttando un servizio di Cloud Computing. Utilizzando semplici thin-client per i vari device sarà possibile accedere ai dati dai dispositivi fissi e portatili più disparati, dagli smartphones,
ai dispositivi desktop, passando per diplay touch-sceen e maxischermi.
4.3
Aspetti di sicurezza
Visto l’uso in contesti aziendali, l’architettura deve necessariamente contenere un modulo per la gestione della sicurezza che rispetti determinate
caratteristiche.
In ogni sistema la sicurezza è sempre uno dei punti critici, poiché spesso
viene mal progettata e ritenuta di secondo piano rispetto all’obiettivo effettivo per cui il sistema è pensato: tale problema è poco rilevante solo per piccole
applicazioni non destinate alla interazione tra sistemi eterogenei complessi o
all’ambito aziendale. Al crescere della complessità e dell’importanza del sistema informatico, il problema della sicurezza deve essere ben strutturato
e deve garantire quello che viene spesso definito paradigma Confidentiality,
Integrity and Availability (CIA)[5]. A questi tre elementi del paradigma se
ne aggiunge un quarto indispensabile nei contesti aziendali: l’Autenticazione.
Confidenzialità: Con confidenzialità si intende la protezione dei dati e
delle informazioni scambiati tra un mittente e uno o più destinatari, impedendo a terzi di venirne in possesso o di essere capaci dei comprenderne il
50
Capitolo 4. Architettura del Sistema
significato. Risulta però difficile impedire che le informazioni e i dati vengano
in possesso di persone estranee alla comunicazione, perché ciò comporterebbe
l’utilizzo di un canale di trasmissione sicuro che però nella maggior parte dei
casi non è utilizzabile perché non disponibile o troppo costoso. Si preferisce
quindi non basare la sicurezza sul mezzo trasmissivo, spesso intrinsecamente
insicuro (basti pensare a internet o reti wifi), ma sul livello logico: in un sistema che garantisce la confidenzialità, una terza parte che entri in possesso
delle informazioni scambiate tra mittente e destinatario, non è in grado di
ricavarne alcun contenuto informativo intelligibile.
Integrità: Con integrità si intende la protezione dei dati e delle informazioni nei confronti delle modifiche del contenuto, accidentali oppure effettuate
da una terza parte, essendo compreso nell’alterazione anche il caso limite
della generazione ex novo di dati ed informazioni. Insito nel concetto di integrità vi è quindi la possibilità di verificare con assoluta certezza se un dato
o una informazione sono rimasti inalterati nel loro contenuto durante la loro
trasmissione.
Disponibilità: Con disponibilità si intende il fatto che in ogni momento
le persone autorizzate possono ricevere e inviare le informazioni di cui hanno
bisogno in un tempo ‘ragionevole’, definito in fase di specifica. Questa caratteristica, tipica della progettazione di impianti informatici, risulta molto
interessante anche lato software quando si deve gestire l’interazione sicura
tra ‘gruppi’ di utenti: ciò comporta spesso scambio di informazioni per garantire la sicurezza e l’integrità dei dati inviati nel gruppo e perciò eventuali
modifiche al piano di sicurezza devono essere comunicate a tutti gli utenti in
modo tempestivo per non generare conflitti.
4.3. Aspetti di sicurezza
51
Autenticazione: Una più approfondita analisi merita il requisito di autenticazione, che si lega trasversalmente con il paradigma CIA. Con tale termine,
derivante dalla parola greca authentes (autore), si è soliti definire un processo che permette di verificare la presunta identità di un interlocutore di una
comunicazione o del creatore di un documento. Definire in modo univoco l’identità di un utente, o di un’altro sistema, e riconoscerlo è fondamentale per
poter progettare e gestire correttamente una efficiente politica autorizzazioni
ad un servizio o ad una risorsa e una politica di ‘fiducia’ verso le risorse messe
a disposizione da altri: si deve essere certi che l’interlocutore con il quale si
stanno scambiando delle informazioni sia veramente chi dice di essere e non
un impostore.
In letteratura si è soliti raggruppare i metodi di autenticazione in tre
paradigmi: One-way(il più diffuso), uno solo dei due interlocutori si identifica
verso l’altro, che si presume avere una identità valida; Two way, entrambi
gli interlocutori di devono identificare reciprocamente; Trusted third-party, si
utilizza una terza parte ritenuta ‘affidabile’ da entrambi gli interlocutori che
autentichi entrambi.
Un’altra classificazione che caratterizza ulteriormente i tipi di autenticazione possibili è la seguente: il soggetto che si deve autenticare possiede
qualcosa (smat card, certificati digitali,...); il soggetto che si deve autenticare
conosce qualcosa (password, PIN,...); il soggetto che si deve autenticare ha
una determinata caratteristica o comportamento (iride, voce, impronta,...).
Attualmente nel mondo dei sistemi informatici i meccanismi più utilizzati
per l’autenticazione sono l’uso di password alfanumeriche, ma recentemente
si stanno affermando nell’ambito delle trasmissioni sicure l’uso dei certificati
digitali e dei sistemi integrati di autenticazione come la Integrated Windows
Authentication di Microsoft. Tutte queste soluzioni sono state considerate
52
Capitolo 4. Architettura del Sistema
e utilizzate nel caso di studio. Fin da ora è bene però chiarire che una
buona gestione dell’autenticazione degli agenti che interagiscono nel sistema
è fondamentale per permettere dei servizi differenziati in base ai privilegi che
ogni agente possiede.
Capitolo 5
Caso di Studio: CEFRIEL
”Se puoi immaginarlo, puoi anche realizzarlo”
Walt Disney
In questo capitolo si vuole mostrare come l’architettura precedentemente
descritta è stata calata in un contesto reale, evidenziando sia le caratteristiche
sviluppare lato back-end sia quelle lato front-end, con particolare attenzione
per i client realizzati.
5.1
Descrizione del caso di studio
Il sistema mostrato nel capitolo precedente è stato applicato e integrato in un
caso reale, in particolare l’azienda con la quale abbiamo lavorato è CEFRIEL.
Grazie a questa collaborazione siamo riusciti a comprendere al meglio i problemi e le esigenze di un’azienda moderna. Inoltre, lavorando su un sistema
reale abbiamo affrontato il problema di integrare una nuova tecnologia in
un ambiente già stabile e consolidato. La nostra soluzione, Graphical En-
54
Capitolo 5. Caso di Studio: CEFRIEL
terprise Data Integrator (GEDI) ha l’obiettivo di rispondere alle esigenze
precedentemente descritte nel contesto della gestione dei progetti.
5.1.1
Il CEFRIEL
CEFRIEL opera dal 1988 come centro di eccellenza per l’innovazione, la ricerca e la formazione nel settore dell’Information & Communication Technology.
Suo obiettivo primario è rafforzare i legami tra università e imprese attraverso un approccio multidisciplinare che, partendo dalle esigenze dell’impresa,
integra i risultati della ricerca, le migliori tecnologie presenti sul mercato,
gli standard emergenti e la realtà dei processi industriali, per innovare o
realizzare nuovi prodotti e servizi.
CEFRIEL è oggi una società consortile i cui soci sono il Politecnico di
Milano, l’Università degli Studi di Milano, l’Università degli Studi di MilanoBicocca, l’Università degli Studi dell’Insubria, la Regione Lombardia e 15
aziende multinazionali operanti nel settore ICT e dell’editoria multimediale. CEFRIEL è parte attiva dell’ICT Institute, la recente istituzione del
Politecnico di Milano nata per coordinare e promuovere le iniziative dell’Ateneo per la formazione, ricerca e innovazione nel settore delle tecnologie
dell’informazione e della comunicazione.
Visto il contesto altamente tecnologico in cui opera, CEFRIEL è già dotato di un sistema informativo in cui integrare la nostra soluzione. Altra
caratteristica che fa del CEFRIEL un candidato ideale è che il suo business
principale si sviluppa grazie a progetti, che quindi devono essere gestiti nella
maniera più efficiente possibile. Infine, la presenza sia del mondo industriale
che di quello accademico, fa di CEFRIEL un possibile catalizzatore per la
diffusione di soluzioni che possono migliorare l’efficienza organizzativa delle
aziende italiane.
5.1. Descrizione del caso di studio
5.1.2
55
Il modello organizzativo
L’attività lavorativa in CEFRIEL è incentrata sui progetti. Ogni dipendente
aziendale ha il compito di fare evolvere un progetto il più velocemente possibile secondo le esigenze del cliente, l’organizzazione dell’azienda perciò si
sviluppa nel rispetto di questo obiettivo.
Cefriel è suddiviso in quattro divisioni: Digital Interaction & Visual Experience (DI), Digital Enterprise & Information Systems (DE), Digital Platforms & Pervasive ICT (DP) e Digital Knowledge & Education (DK). Questa
divisione rafforza il livello qualitativo dei progetti e rende più efficaci i tempi
di esecuzione, aspetto fondamentale per una società come questa.
I principali ruoli ricoperti in Cefriel sono quattro: Head of Division, Account Manager, Project Manager e Professional. I capi di divisione sono i
responsabili delle singole divisioni e quindi di tutte le risorse che ne fanno
parte. I project manager, invece, sono i responsabili dei progetti e si occupano sia della gestione delle persone che degli aspetti amministrativi come
le fatture, il Stato Avanzamento Lavori (SAL) e il Work in Progress (WIP).
Trasversalmente alle divisioni i project manager possono richiedere risorse
esperte in determinati ambiti per allocarli su uno dei progetti di cui sono
responsabili. Gli account manager sono quelle risorse, che alla pari del project manager, sono responsabili di progetto, ma con riferimento diretto a
un particolare cliente. L’account manager è di solito il collegamento tra il
cliente è l’insieme di progetti che sono sviluppati per esso. Infine, la figura del professional racchiude tutte le singole risorse che vengono allocate su
ogni progetto. Naturalmente anche i capi divisione, i project manager e gli
account manager sono a loro volta professional.
Come appare evidente, l’organizzazione aziendale in CEFRIEL rientra
perfettamente nel modello generale descritto nel capitolo 3, fatta eccezione
56
Capitolo 5. Caso di Studio: CEFRIEL
per la figura di resource manager che viene sostituita in termini di responsabilità dalle altre figure presenti.
5.1.3
Il sistema di controllo e gestione progetti
Come è già stato più volte sottolineato, in ogni azienda è fondamentale monitorare lo stato di avanzamento dei lavori in atto e per fare ciò è indispensabile
partire dai dati inseriti dai lavoratori. In particolare nelle aziende incentrate
sullo sviluppo di progetti, ha un ruolo determinante l’inserimento dei consuntivi, cioè quante ore ogni professional ha lavorato sui progetti a cui è
assegnato.
In CEFRIEL, a dimostrazione della particolare attenzione per il tema
trattato, era già presente un sistema per il controllo e la gestione dei progetti
sviluppato ad hoc alcuni anni fa dallo stesso CEFRIEL. Il sistema si è evoluto
col tempo cercando di migliorare costantemente sia dal punto di vista delle
funzionalità che da quello della semplicità di utilizzo.
Come in ogni azienda, i professionisti sono tenuti a consuntivare entro
fine mese le ore lavorate, ma facilitare le operazioni di inserimento e modifica incentiva i dipendenti a tenere sempre aggiornate le informazioni. In
quest’ottica di miglioramento continuo, la nostra soluzione vuole proporre
nuovi meccanismi di inserimento e modifica dei dati da affiancare a quelli già
presenti.
I capi divisione, projet manager e account manager devono analizzare
e aggiornare settimanalmente lo stato di avanzamento dei progetti. Con
la soluzione proposta vogliamo offrire ai manager aziendali la possibilità di
avere ancora più informazioni per aiutarli a prendere decisioni consapevoli
e tempestive. Il sistema vuole essere un valido strumento di supporto che
5.1. Descrizione del caso di studio
57
cerca di individuare eventuali problemi o ritardi nelle attività dei progetti e
gli evidenzia alle persone di competenza.
5.1.4
Contesto tecnologico
CEFRIEL attualmente utilizza SQL SERVER come DBMS per la gestione
del database. Le basi di dati considerate ai fini del nostro scopo sono mostrate
in Fig. 5.1:
Fig. 5.1: Schema dell’architettura attuale in CEFRIEL
• CGP DB:database contenente i dati attuali e i dettagli della gestione
dei progetti.
• CGP REPORT: base di dati contenente i report (effettuati periodicamente nell’arco della giornata) dei dati provenienti da CGP DB.
• CGP DW: è il datawarehouse dell’azienda. Questo database contiene
lo storico e il sintetico delle informazioni provenienti da CGP DB. Inoltre integra i dati con le voci contenute negli ERP e i dati provenienti
dai processi aziendali. Questo database viene riempito una volta al
giorno in orari notturni.
58
Capitolo 5. Caso di Studio: CEFRIEL
Inoltre CEFRIEL è dotato di un’altro server sul quale è situata la Web
Application che attualmente viene usata per il controllo di gestione. La
Web Application è ospitata su un Web Server IIS. Sulla stessa macchina è
presente anche una applicazione per generare cruscotti aziendali utilizzata
per visualizzare i report provenienti dal datawarehouse.
5.2
Esigenze aziendali
Dalle interviste fatte e dall’analisi dell’organizzazione aziendale abbiamo evidenziato i principali casi d’uso per le tipologie di utente presenti in CEFRIEL.
Per ogni tipologia di utente è presente anche una una tabella che indica
il livello di importanza di una determinata azione nei tre ambiti analizzati
in 3.3.2. La tabella è frutto di un sondaggio fatto all’interno dell’azienda e
indica quindi le priorità dal punto di vista dell’utilizzatore finale.
5.2.1
Casi d’uso: Professional
Lo use case (Fig. 5.2) mostra le principali esigenze di un professional dell’azienda. Ogni utente, deve per prima cosa loggarsi al sistema e solo dopo
essere stato riconosciuto può accedere alle informazioni aziendali. Un professional assegnato a uno o più progetto deve eseguire determinate attività
suddivise in task e periodicamente deve consuntivare, cioè riportare nel sistema le ore impiegate per eseguire i compiti assegnategli. Complessivamente le
ore effettivamente lavorate devono essere maggiori o uguali a quelle indicate dal contratto del professional e quindi deve poter verificare facilmente di
aver inserito i dati in modo completo. Dalle nostre analisi è emerso che un
bisogno molto comune per le aziende è quello di avere un meccanismo rapido
e mirato per segnalare problemi ai loro dipendenti. Per questo motivo, tra le
5.2. Esigenze aziendali
59
esigenze che è necessario soddisfare per un professional c’è anche la possibilità di ricevere gli avvisi generati automaticamente o inviati da uno dei suoi
referenti.
Fig. 5.2: Use Case Professional
Naturalmente le esigenze evidenziate assumono una rilevanza diverse a
seconda dei contesti in cui un professional si trova. Per il professional gli scenari più comuni sono due: seduto davanti a un PC e l’ambito mobile. Mentre
in ambito desktop hanno rilevanza tutte le esigenze evidenziate, in ambito
mobile gli aspetti di visualizzazione delle informazioni sono più rilevanti degli
aspetti di inserimento. Tipicamente, le persone quando si trovano a utilizzare
device mobili per accedere al sistema sono interessati a visualizzare lo stato
di dei propri consuntivi o delle attività da compiere e controllare se ci sono
avvisi urgenti che gli riguardano.
60
Capitolo 5. Caso di Studio: CEFRIEL
La tabella (Tabella 5.1) riassume schematicamente la rilevanza delle di-
verse attività in abito mobile e desktop.
Attività
Mobile
Desktop
Inserimento consuntivi
Bassa
Alta
Visualizzazione consuntivi
Media
Alta
Visualizzazione task
Media
Alta
Visualizzazione alert
Alta
Alta
Tabella 5.1: Tabella dei contesti per il Professional
5.2.2
Casi d’uso: Project Manager
Lo use case (Fig. 5.3) mostra le principali esigenze caratteristiche di un project manager dell’azienda, naturalmente essendo anche un professional eredita tutte le attività evidenziate precedentemente. Il project manager si
differenzia dal professional per le funzioni di management, quindi necessita
di informazioni più elaborate generate aggregando da dati semplici che permettano una visione dello stato di avanzamento dei progetti. I primi due
dati da tenere in considerazione sono l’andamento del SAL, cioè i costi del
progetto, e del WIP, cioè di quanto valore è già stato sviluppato rispetto al
valore complessivo del progetto. L’altro aspetto di interesse per il project
manager è l’andamento dei consuntivi perché permette di vedere se i dati
di WIP e SAL sono realmente allineati con lo stato attuale del progetto.
Per esempio, un SAL molto basso può dipendere dal fatto che uno o più
dipendenti non hanno ancora inserito i propri consuntivi e quindi il costo
delle ore uomo lavorate non è ancora stato aggiunto. Infine, diversamente
dal professional, il project manager deve avere la possibilità di inviare delle
5.2. Esigenze aziendali
61
segnalazioni alle persone che lavorano nei progetti di sua competenza, per
esempio, per sollecitare l’inserimento dei dati.
Fig. 5.3: Use Case Project Manager
Come per il professional, anche per il project manager la priorità di un’azione varia a seconda del contesto in cui l’utente si trova(Tabella 5.2). In
questo caso tutti e tre i contesti individuati sono significativi, in particolare nel contesto mobile e meeting sono rilevanti gli aspetti di visualizzazione
dello stato dei progetti. Per quanto riguarda la possibilità di inviare avvisi
agli utenti resta comunque rilevante nel contesto mobile, ma non in quello
meeting.
62
Capitolo 5. Caso di Studio: CEFRIEL
Attività
Mobile
Desktop
Meeting
Invio di alert
Media
Alta
Bassa
Visualizzazione WIP
Alta
Alta
Alta
Visualizzazione SAL
Alta
Alta
Alta
Visualizzazione stato consuntivi
Alta
Alta
Bassa
Tabella 5.2: Tabella dei contesti per il Project Manager
5.2.3
Casi d’uso: Account Manager
Le attività che può svolgere l’account manager sono simili a quelle del project manager, infatti, i due utenti sono differenziati principalmente dal tipo
di progetti al quale fanno riferimento: gli account manager hanno visibilità su tutti i progetti collegati al cliente a cui sono assegnati. Le esigenze
dell’account manager risultano quindi del tutto analoghe a quelle del projet
manager in tutti e tre i contesti che abbiamo evidenziato.
5.2.4
Casi d’uso: Head of Division
Lo use case (Fig. 5.4) mostra le principali esigenze dei HoD delle diverse divisioni. Rispetto a un project manager, il HoD si focalizza principalmente sullo
stato di allocazione delle proprie risorse e sulla quantità di ore consuntivate. Naturalmente, in quanto manager anche il capodivisione ha la possibilità
di inviare messaggi a tutte le risorse della propria divisione per segnalare
riallocazioni o evidenziare il ritardo nell’inserimento dei consuntivi.
Anche per il HoD sono significativi tutti e tre i contesti evidenziati(Tabella
5.3) e, come per il project manager, nel contesto di un meeting o in ambito mobile prevale l’esigenza di visualizzare i dati dello stato della propria
divisione.
5.3. Architettura di back-end
63
Fig. 5.4: Use Case Head of Division
Attività
Mobile
Desktop
Meeting
Invio di alert
Media
Alta
Bassa
Visualizzazione ore allocate
Alta
Alta
Alta
Visualizzazione ore consuntivate
Alta
Alta
Alta
Tabella 5.3: Tabella dei contesti per il Head of Division
5.3
Architettura di back-end
Iniziamo ora a descrivere nel dettaglio la soluzione sviluppata per il caso
specifico di CEFRIEL. Il back-end segue il modello descritto nel capitolo
precedente e si compone da due livelli: il livello di accesso ai dati (DAL)
e livello di logica(BLL), che a sua volta contiene una parte dedicata alla
gestione del web service e una dedicata all’analisi dei dati (Fig. 5.5).
Visto che l’infrastruttura di dominio del CEFRIEL è basata su piattaforma Windows, abbiamo deciso di implementare tutta la parte di back-end
64
Capitolo 5. Caso di Studio: CEFRIEL
Fig. 5.5: Architettura del sistema nel dettaglio
utilizzando il framework .NET, con linguaggio di programmazione C#, che
assicura un eccellente integrazione con i sistemi preesistenti. Inoltre, l’utilizzo di questo framework ha permesso di adottare una serie di accorgimenti
che garantiscono un’ottima flessibilità ed espandibilità del sistema.
5.3.1
Layer di accesso ai dati
L’attuale sistema Controllo Gestione Progetti (CGP) è basato su un database
chiamato CGP DB che contiene tutti i dati dei progetti attualmente attivi,
ma anche lo storico del lavoro effettuato all’interno dell’azienda. A questo
database ne è stato affiancato uno di supporto,GEDI ALERT, che abbiamo
creato per favorire la gestione degli avvisi. Abbiamo scelto di non integrare,
almeno per ora, i due database sia per policy aziendali sia per garantire
indipendente libertà di sviluppo dei due sistemi.
5.3. Architettura di back-end
65
Fig. 5.6: Schema ER di GEDI ALERT
GEDI ALERT è schematicamente molto semplice in quanto deve contenere soltanto l’elenco degli avvisi che circolano nel sistema e la loro priorità.
In particolare GEDI ALERT contiene due tabelle (Fig. 5.6): Alert e Tipo.
Per una descrizione dettagliata delle tabelle si rimanda all’Appendice B.
DAL si occupa di gestire il collegamento ai database e fornisce una serie
di metodi per facilitare le query sui dati. Dal class diagram(Fig. 5.7) si può
capire l’organizzazione interna di DAL: il layer è composto dalla classe statica
GediDataLayerConnector e dai package Alert e CGP.
L’elemento principale del package Alert è la classe AlertDBManager, i
cui metodi sono esposti tramite interfaccia IAlertDBManager, che facilita
l’inserimento e il recupero dei dati dal database GEDI Alert.
Il package CGP è strutturato analogamente al package ALERT e contiene
le classi per l’accesso e la gestione di CGP DB, ma poiché le azioni che si
possono voler eseguire su questo database sono più complesse e più ampie
abbiamo deciso di creare tre classi ognuna delle quali dedicata alla gestione
di particolari aspetti. La classe BusinessDBManager fornisce i metodi per
ottenere alcune informazioni generali, come i giorni di chiusura aziendale, e i
metodi per eseguire l’inserimento e l’estrazione di un determinato consuntivo. Oltre a questi metodi, la classe fornisce anche quelli per ottenere le classi
dedicate alla gestione di particolari aspetti di CGP DB. La classe Projec-
66
Capitolo 5. Caso di Studio: CEFRIEL
Fig. 5.7: Class Diagram DAL
tsManager è specializzata nelle operazioni per la gestione delle informazioni
di CGP relative ai progetti, come SAL e WIP e l’elenco dei consuntivi in un
arco di tempo. La classe ResourceManager permette di accedere alle informazioni riguardanti le risorse, come il numero di ore di lavoro presenti nel
suo contratto o il ruolo aziendale ricoperto. I metodi delle tre classi sono
esposti tramite le rispettive interfacce IProjectsManager, IResourceManager
e IBusinessDBManager (Fig. 5.8).
5.3. Architettura di back-end
67
Fig. 5.8: Class Diagram Package CGP
Entrambi i package contengono a loro volta un package, rispettivamente
AlertDataContext e CGPDataContext, con le classi dedicate a mappare il
modello dei dati contenuto dei database.
Le classi che implementano le interfacce non sono direttamente accessibili e instanziabili dall’esterno, ma è necessario passare attraverso la classe
statica GediDataLayerConnector. Questo approccio segue il classico Factory
Pattern[10] che permette di modificare facilmente le relazioni tra le classi
concrete o crearne di nuove senza pregiudicare l’utilizzatore che, poiché non
ha visibilità della struttura implementativa, non avrà nessuna ricaduta sulle
modifiche effettuate. Questa struttura risulta molto utile per esempio se si
68
Capitolo 5. Caso di Studio: CEFRIEL
volesse modificare il database utilizzato o se si volesse collegare nuove basi
di dati al sistema, garantendo cosı̀ massima flessibilità e manutenibilità.
Fig. 5.9: Esempio Sequence Diagram per chiamata a DAL
Il Sequence diagram in Fig. 5.9 mostra come avviene una comune chiamata a DAL, in questo caso si vuole estrarre la lista dei professional assegnati a
un determinato progetto. La prima volta che il client vuole accedere alla base di dati chiede alla classe GediDataLayerConnector di generare il manager
per il BusinessDB. Una volta generato IBusinessDBManager può richiedere la classe per la gestione dei progetti, IProjectManager, e infine chiamare
il metodo per ottenere la lista dei professional assegnati al progetto. Le
classi sono generate solamente la prima volta che il client accede a DAL e
memorizzate per le successive operazioni.
LINQ
Uno dei vantaggi derivanti dall’utilizzo del framework .NET è la possibilità
di sfruttare a pieno la tecnologia LINQ[4].
5.3. Architettura di back-end
69
La maggior parte dei programmi scritti oggi manipola in un modo o nell’altro dati, e spesso questi dati vengono memorizzati in database relazionali.
Eppure c’è un divario enorme tra moderni linguaggi di programmazione e
database nel modo modo in cui rappresentano e manipolano le informazioni.
Per esempio, i linguaggi di programmazione per accedere alle informazioni
dei database devono utilizzare le API di basso livello offerte da DBMS che
richiedono query espresse come stringhe di testo. Queste query sono porzioni
significative della logica del programma, eppure sono opache al linguaggio,
incapaci di beneficiare compile-time verification e design-time features, come il completamento automatico del codice. Dopo due decenni, l’industria
ha raggiunto un punto stabile nell’evoluzione delle tecnologie di programmazione orientati agli oggetti (OO) e i programmatori danno per scontato
caratteristiche come classi, oggetti e metodi. Guardando la generazione attuale e quella successiva, è diventato quindi evidente che la prossima grande
sfida nella tecnologia di programmazione è quello di ridurre la complessità
di accesso e l’integrazione di informazioni che non sono nativamente definita
usando la tecnologia OO. Le due più comuni fonti di informazioni non-OO
sono i database relazionali e XML.
Piuttosto che aggiungere funzionalità relazionali o specifiche per XML
ai linguaggi di programmazione, il progetto LINQ utilizza un approccio più
generale che implica l’aggiunta di funzionalità di query generiche che si applicano a tutte le fonti di informazione, non solo relazionale o dati XML.
Questa funzione viene chiamata .NET Language Integrated Query(LINQ).
Un query-language integrato permette di beneficiare di metadati ricchi, analisi della sintassi in fase di compilazione, tipizzazione statica e completamento
automatico che in precedenza erano disponibili solo per codice imperativo.
Offre inoltre un unico meccanismo di query dichiarativo da applicare a tut-
70
Capitolo 5. Caso di Studio: CEFRIEL
te le informazioni in memoria, non solo informazioni provenienti da fonti
esterne. LINQ utilizza una sintassi simile a SQL, ma, oltre ai vantaggi già
evidenziati, permette di avere il mapping automatico delle risorse in oggetti
che rende possibile eseguire interrogazioni complesse in modo molto semplice.
Tutte queste caratteristiche, combinate alla completa integrazione con
il DBMS SQL Server, ci hanno portato a scegliere LINQ come tecnologia
da utilizzare nel nostro sistema. CEFRIEL usa nell’applicazione Web di
CGP query scritte in linguaggio SQL classico, uno degli obiettivi secondari di
questo lavoro è stato quello di valutare e testare LINQ come nuova tecnologia
che possa in futuro sostituire il vecchio livello di accesso ai dati.
Per completare la breve descrizione delle caratteristiche che ci hanno spinto a utilizzare LINQ, evidenziamo quali sono gli altri vantaggi particolarmente significativi e utili nel conteso CEFRIEL:
• Transaction: ogni interrogazione LINQ viene eseguita automaticamente in un contesto transazionale, ma che può essere implementato anche
manualmente.
• Standard query: Linq offre una metodologia standard per eseguire query, questo può valere per tabelle relazionali, ma anche per altre fonti di
dati.
• Compile-time verification: Controllo degli errori di sintassi in fase di
compilazione e tipizzazione dei dati.
• Mapping: Mappatura semplice e intuitiva delle Stored Procedure già
sviluppate.
5.3. Architettura di back-end
5.3.2
71
Layer logico
Il secondo livello che andiamo ad analizzare nel dettaglio è quello della logica
applicativa. Trovandosi nel mezzo tra Presentation Layer e Data Layer, il
compito di BLL è quello di fornire ai client un mezzo semplice per accedere
a dati che normalmente richiederebbero interrogazioni complesse.
Un’alto ruolo che svolge la logica è quello di mantenere la sessione attiva
per ogni singolo utente che effettua la chiamata. Nel momento in cui avviene l’autenticazione la logica viene inizializzata, e per tutta la durata della
sessione rimane attiva mantenendo le informazioni riguardo l’utente che sta
accedendo al sistema.
Anche l’analisi dei dati ricade nel livello di business logic, ma causa la sua
complessità e l’esigenza di mantenerla indipendente dal resto del sistema, è
stato deciso di realizzare un componente separato che potesse essere gestito
e sviluppato in modo autonomo.
Il BLL è costituito da tre componenti principali che permettono di fornire
servizi verso l’esterno: SecurityManager, ProjectStateManager, AlertManager (Fig. 5.10).
Il SecurityManager è sviluppato tramite due classi che implementano la
funzionalità di autenticazione degli utenti, Access Validator, e quella di identificazione del ruolo aziendale dell’utente, User Identificator. Tramite Access
Validator, l’utente che tenta di utilizzare il sistema senza ricoprire un ruolo
all’interno dell’azienda viene automaticamente rifiutato e non può eseguire alcun tipo di operazione, al contrario, se l’utente ha un account valido
all’interno del dominio aziendale, User Identificator identifica la posizione
ricoperta e abilita le funzionalità configurate per quel ruolo. La scelta di
dividere le funzionalità tra queste due classi permette di gestire facilmente
l’integrazione con i sistemi aziendali, ad esempio l’active directory di dominio,
72
Capitolo 5. Caso di Studio: CEFRIEL
Fig. 5.10: Business Logic Layer nel dettaglio
e gestire metodi di autenticazione devesi.
ProjectStateManager si occupa di implementare i metodi per la gestione
dei dati inseriti e facilitarne il recupero da parte del front-end.
L’AlertManager è il componente dedicato alla gestione degli avvisi che
permette agli utenti di inserire nuove segnalazioni e recuperare quelle già
presenti nel sistema.
Infine, BLL comprende due package dedicati rispettivamente alla gestione
del web service e all’analisi dei dati.
La Fig. 5.11 mostra un sempio di esecuzione di una chiamata a un metodo
attraverso web service. Non appena dal client arriva la chiamata al metodo,
la classe che implementa il web service, controlla tramite l’access validator se
5.3. Architettura di back-end
73
Fig. 5.11: Esempio Sequence Diagram per chiamata a BLL
l’utente ha le autorizzazioni necessarie all’esecuzione del metodo. Se l’utente
non dispone delle autorizzazioni la connessione viene chiusa e l’esecuzione
abortita. Nel caso contrario, l’esecuzione prosegue con la chiamata al relativo metodo della logica. La logica verifica se l’utente ha già eseguito altre
operazioni e, se è ancora presente una sessione valida, recupera le informazioni dell’utente. Se invece non è presente una sessione valida ne crea una.
Nell’esempio, dopo una serie di interazioni con DAL, la logica ottiene tutti
gli alert della risorsa e li converte nel DataContract AlertContract. La lista
degli AlertContract cosı̀ ottenuti viene ripassata alla classe che implementa
il web service, la quale gestisce la serializzazione e lo scambio asincrono dei
dati con il client.
74
Capitolo 5. Caso di Studio: CEFRIEL
DataContract
Un DataContract è un accordo formale tra un servizio e un client che descrive
astrattamente i dati da scambiare. Per comunicare, non è necessario che il
client e il servizio condividano gli stessi tipi, ma solo gli stessi contratti
dei dati. Un contratto definisce con precisione, per ogni parametro o tipo
restituito, i dati serializzati (trasformati in XML) che verranno scambiati.
Nella nostra applicazione questi contratti sono definiti a livello di BLL
per poter essere condivisi tra tutti i web service e fornite alle classi che
implementano le interfacce di servizio informazioni strutturate, pronte per
essere trasmesse ai client. Sono stati definiti i seguenti contratti:
Fig. 5.12: Class diagram del package DataContract
5.3. Architettura di back-end
75
AlertContract definisce i dati che rappresentano un singolo alert.
ConsuntiviContract rappresenta la struttura di un oggetto consuntivo.
AllocazioneContract rappresenta le informazioni di una singola allocazione e contiene la lista dei ConsuntiviContract relativi ai consuntivi
inseriti per l’allocazione di riferimento.
TaskContract rappresenta le informazioni relative ai task e contiene la lista
dei AllocazioneContract relativi alle allocazioni associate al task.
AttivitaContract è il contratto che racchiude le informazioni un’attività
di progetto. Contiene al suo interno la lista dei TaskContract relativi
ai task associati alla attività.
ProgettoContract racchiude la definizione di tutte le informazioni rilevanti
di un progetto, tra cui la lista AttivitaContract relativi alle attività
presenti per il progetto.
RisorsaContract è il contratto che definisce quali informazioni di una risorsa vengono passate tra server e client. Contiene la lista dei ConsuntiviContract riferiti ai consuntivi inseriti.
SALContract contiene i parametri rilevanti per lo Stato Avanzamento Lavori.
WIPContract contiene i parametri rilevanti per il valore di Work In Progress.
SerialGraphicalContract è la struttura più generale in grado di contenere
delle serie di dati da potere visualizzare come grafico nel client.
76
Capitolo 5. Caso di Studio: CEFRIEL
I dati contenuti i questi contratti sono nel formato standard XML, e le
chiamate al servizio sono chiamate HTTP. Questi due standard permettono
l’eventuale fruizione di questi servizi anche da tecnologie non necessariamente
Microsoft.
5.3.3
Analisi dei dati
Il componente che abbiamo realizzato per l’analisi dei dati fa logicamente
parte del business logic layer, ma in considerazione della sua funzionalità
abbiamo deciso di svilupparlo in modo autonomo dal resto della logica. Il
componente di analisi deve periodicamente analizzare l’intero business db
e generare avvisi relativi all’attuale situazione dei progetti o delle risorse
coinvolte nell’azienda.
Visto che l’operazione di analisi può in alcuni casi essere particolarmente
onerosa dal punto di vista prestazionale, sopratutto per il DBMS, il processo del tool di analisi è separato dal resto del sistema. Questo permette
all’amministratore di decidere quando far partire l’analisi, con che frequenza
e eventualmente di interromperla lasciando inalterato il resto del sistema.
Inoltre, lasciando separato il tool di analisi è possibile sostituirlo o integrarlo
con altri sistemi, ad esempio, con un datawarehouse.
In particolar modo, il nostro analizzatore si concentra sul controllo di
quelli che possono essere eventi particolarmente dannosi per l’efficacia dell’azienda. I vincoli che vengono analizzati, e che eventualmente generano degli
avvisi per le persone di dovere, sono i seguenti:
Regole di validazione allocazione risorsa
• Ore inserite dal professional nel mese precedente. Per ogni giorno il
totale delle ore deve essere maggiore o uguale alle ore di contratto della
5.3. Architettura di back-end
77
risorsa. Se il totale è minore di quello richiesto viene inviato alla risorsa
e ai suoi manager un alert di alta priorità, dove si segnala il ritardo nella
consuntivazione.
• Ore inserite dal professional nella settimana precedente. Vincolo analogo al precedente, ma su intervallo settimanale. Questo avviso è meno rilevante di quello precedente dal punto di vista di contabilità, ma
permette all’utente di controllare se è in linea con i consuntivi della
settimana prima e ai manager di sapere quanto sono aggiornati i dati
a loro disposizione.
Regole di validazione stato progetto
• Data di fine lavori. Se la data di terminazione del progetto è precedente
a quella dell’avvio del processo di analisi, e il progetto non risulta chiuso
viene generato un avviso urgente per il project manager responsabile
del progetto.
• Chiusura di progetto. Il sistema notifica il progetto chiuso, che non
risulta o terminato o rifiutato.
• Stato di progetto. Se il progetto risulta non ‘essere in linea” con le
policy aziendale, viene sollevato un alert che ne segnala il motivo.
• Data ultimo SAL. Se il project manager, responsabile della gestione
del SAL di un progetto, non aggiorna la voce dopo un certo numero di
giorni (configurabile dall’amministratore), il sistema lo notifica.
• Data fattura emessa. Analizzando la data dell’ultima fattura di progetto emessa possono essere generati due avvisi. Il primo, più importante,
viene generato se è già trascorsa la data in cui doveva essere emessa una
78
Capitolo 5. Caso di Studio: CEFRIEL
fattura. Il secondo, meno critico, permette di segnalare che è si sta avvicinando il giorno in cui il responsabile dovrebbe emettere la fattura.
Il numero di giorni entro il quale segnalare questo alert è configurabile
dall’amministratore del sistema.
Analizziamo ora la struttura interna del package Analysis.
Fig. 5.13: Class diagram del package Analysis
Il processo che si occupa di effettuare l’analisi è separato dal resto del
sistema. La classe AnalisiThread si occupa delle operazioni preliminari che
però sono essenziali per l’analisi del sistema, come la connessione con il data
access layer. Finite le operazioni iniziali, AnalisiThread inizia a scandire
prima tutte le risorse e poi i progetti per eseguire l’analisi.
Le analisi sono eseguite tramite le classi AnalisiRisorsa e AnalisiProgetto
che ereditano e re-implementano dalla classe astratta Analisi il metodo esegui. Questa struttura rende molto semplice l’implementazione di una nuova
5.3. Architettura di back-end
79
classe di analisi, ad esempio che si appoggi a un datawarehouse, o specializzare ulteriormente le due classi di analisi già implementate, ad esempio
per inserire nuovi tipi di analisi sui dati delle risorse. Molto semplicemente,
è sufficiente estendere la super classe Analisi e re-implementare il metodo
esegui.
5.3.4
Comunicazione
Negli ultimi anni, il passaggio all’architettura orientata al servizio(SOA) ha
cambiato lo sviluppo del software. Sia fatto tramite SOAP o in qualche altro
modo, le applicazioni che interagiscono attraverso i servizi sono diventate la
norma. Come già evidenziato, anche noi abbiamo deciso di utilizzare per la
pubblicazione dei dati verso il front-end un web service.
Fig. 5.14: Architettura del web service nel dettaglio
La Fig. 5.14 mostra nello specifico cosa comprende il package Web Service
80
Capitolo 5. Caso di Studio: CEFRIEL
contenuto in BLL. I metodi esposti dal servizio sono raggruppati in due interfacce, IProject e IAlert, che riuniscono rispettivamente le chiamate riferite
allo stato dei progetti e le chiamate dedicate alla gestione degli alert. L’utilizzo delle interfacce permette lato client un uso più ordinato delle chiamate
al web service.
Le interfacce esposte sono implementate in due diversi modi tramite le
classi IWAService e HTTPSService. IWAService è l’implementazione web
service che sfrutta le caratteristiche dellaIntegrated Windows Authentication
per gestire l’acceso al sistema. Questa implementazione è molto utile in
contesti dove la piattaforma di riferimento è Windows. HTTPSService è
invece l’implementazione che sfrutta HTTPS come protocollo di trasmissione
e l’Access Validator presente in BLL per gestire gli accessi. HTTPSService è
utile per poter utilizzare il sistema da sistemi operativi diversi da Windows
e device che non supportano le Windows Credential. Maggiori dettagli sugli
aspetti di sicurezza saranno forniti nell’ultima sezione di questo capitolo.
In fase di deploy i due web service possono essere contemporaneamente
attivati su indirizzi o porte diverse, oppure si può scegliere di pubblicare
solamente uno dei due.
La scelta di realizzare due soluzione diverse vuole permettere di lasciare
grande libertà per gli sviluppi futuri, sia sul piano di integrazione con gli altri
sistemi sia dal punto di vista dello sviluppo di nuovi client.
Windows Communication Foundation
Nello sviluppo software con framework .NET, la creazione di web service è
facilitata dall’utilizzo di Windows Communication Foundation (WCF).
WCF è un sottosistema applicativo che risolve tutta una una serie di
problemi comuni nella comunicazione tra applicazioni fornendo supporto sia
5.3. Architettura di back-end
81
per protocolli standard come SOAP, ma anche altri tra i più comuni e diffusi
protocolli come JSON. Tra le altre cose, emergono tre aspetti fondamentali:
perfetta integrazione con le altre tecnologie di comunicazione preesistenti nel
Framework .NET, interoperabilità con applicazioni basate su altre tecnologie
e supporto esplicito per lo sviluppo orientato ai servizi.
Fig. 5.15: Esempio di utilizzo WCF
In particolare il secondo aspetto ha un ruolo rilevante in contesti aziendali,
dove le imprese si dotano spesso di sistemi e applicazioni che sono state
acquistate da una vasta gamma di fornitori che sfruttano le tecnologie più
disparate. Le applicazioni basate su WCF sono in grado di lavorare con altri
software in esecuzione in una grande varietà di contesti(Fig. 5.15):
• Applicazioni basate su altre tecnologie, come Java EE application server, che supportano i servizi Web standard. Queste applicazioni pos-
82
Capitolo 5. Caso di Studio: CEFRIEL
sono essere in esecuzione su macchine Windows o su computer che
eseguono altri sistemi operativi.
• Applicazioni WCF in esecuzione in un processo diverso sulla stessa
macchina Windows
• Applicazioni WCF in esecuzione su un altro computer Windows
Ogni servizio WCF è caratterizzato da tre componenti principali (Fig.
5.16): una classe di servizio che implementa uno o più metodi; un processo
host in cui il servizio viene eseguito; uno o più endpoint che consentono ai
client di accedere al servizio.
Fig. 5.16: Struttura di un servizio WCF
Nel nostro caso, come evidenziato nel capitolo precedente, abbiamo deciso
di sviluppare due diversi tipi di service class, IWAService e HTTPSService,
che si differenziano a seconda del contesto d’uso: la prima sarà per utilizzo
esclusivo all’interno della rete aziendale, mentre la seconda è indirizzata a
coloro che utilizzeranno l’applicazione dall’esterno dell’azienda, per esempio
da dispositivi mobili. Le due classi si occupano di gestire i diversi aspetti di
sicurezza, mentre per tutte le altre operazioni fanno comune riferimento alle
classi per la gestione della logica interne a BLL. Naturalmente, alle due classi
5.3. Architettura di back-end
83
sono stati associati anche due diversi endpoint con diverse caratteristiche di
sicurezza.
Per quanto quanto riguarda l’hosting dell’applicazione abbiamo deciso
di non utilizzare un semplice processo, ma ci siamo affidati a Internet Information Service (IIS) 7.0 per garantire maggiori performance, sicurezza e
affidabilità.
5.3.5
Sicurezza del sistema
L’aspetto della sicurezza del sistema è stato affrontato con attenzione. Il
framework WCF offre una vasta gamma di soluzioni adottabili in questo
ambito [14] che non modificano in alcun modo la struttura delle’architettura,
ma intervengono sul livello di interfaccia tra servizio e client.
Per quello che riguarda l’autenticazione, una dei requisiti essenziali era
quello di rendere il sistema sicuro, ma allo stesso tempo il più immediato
possibile da fruire. Per questo motivo, abbiamo sfruttato il più possibile
gli strumenti di autenticazione offerti da IIS come la Integrated Windows
Authentication per sistemi operativi Windows. Per il dispositivo mobile,
si è voluto lasciare ampia libertà di evoluzione verso sistemi non basati su
piattaforma Microsoft e si è predisposto un sistema di riconoscimento delle
credenziali basato sulla classica Form Authentication.
In entrambi i casi il modulo che si occupa della gestione degli accessi
controlla la validità delle credenziali e restituisce una conferma di avvenuta
autenticazione. Tali informazioni sono ricercate e recuperate nell’Active Directory, il quale contiene l’elenco degli account registrati nel dominio. Nel
caso di IWA è stato possibile sfruttare a pieno il modulo per il controllo già
presente in IIS, mentre per la FA abbiamo implementato un componente ad
hoc.
84
Capitolo 5. Caso di Studio: CEFRIEL
Integrated Windows Authentication
Integrated Windows Authentication è il sistema di autenticazioni preferito per utenti che si trovano all’interno dello stesso dominio Windows. Le
informazioni su l’utente che sta utilizzando il client sono fornite al sistema
attraverso uno scambio crittografato di informazioni che coinvolgono il client,
il web service e un terzo server fidato.
Il vantaggio di questo tipo di autenticazione è che l’utente non deve inserire altre credenziali oltre a quelle che ha già inserito per accendere il device.
Inoltre, la IWA non invia le password dell’utente o altre informazioni sensibili al server, ma si limita a comunicare l’username della persona che vuole
accedere al sistema.
In Fig.5.17 è raffigurato lo scambio di messaggi secondo il protocollo
Kerberos che abbiamo utilizzato nella nostra soluzione.
Quando il client accede al servizio manda la richiesta al Domain Controller, il quale è composto da un Authentication Service e da Ticket Granting
Service collegati direttamente all’Active Directory. Il Domain Controller gli
fornisce un service session-key e un service ticket necessari per contattare il
Service Server. Il client manda il messaggio di autenticazione (time stamp)
criptato utilizzando una service session-key e service ticket al Service Server.
A questo punto, usando la service session-key, il Service Server decripta il
messaggio di autenticazione (time stamp) e lo valuta. Se questo messaggio
passa il test, il server cifra il timestamp usando la service session-key e ripassa il messaggio al client. Il client decifra il messaggio e se il messaggio
è lo stesso di quello originale il servizio è valido e il client procede con la
connessione. Il protocollo Kerberos non solo permette di utilizzare la Windows Authentication, ma controlla la mutua autenticazione di client e server
prima dello scambio di messaggi.
5.3. Architettura di back-end
85
Fig. 5.17: Integrate Windows Authentication (Kerberos v5)
Se a livello di autenticazione il protocollo precedentemente descritto è
altamente prestazionale, non vale lo stesso per quanto riguarda i requisiti
cardine del modello CIA in quanto non fornisce nessuna delle tre caratteristiche richieste. In realtà, questa mancanza dei requisiti CIA non è un
problema, in quanto l’ambiente entreprise nel quale è collocata l’architettura
è ritenuto sufficientemente sicuro per garantire i requisiti di Confidenzialità,
Integrità e Disponibilità. L’uso di questo meccanismo di autenticazione per
interagire dall’esterno dell’azienda è invece fortemente sconsigliato, a meno
che non venga prima instaurata una VPN.
86
Capitolo 5. Caso di Studio: CEFRIEL
Form Authentication
La Form Authentication è il classico sistema di autenticazione che prevede
l’inserimento del nome utente e della password utilizzando delle caselle di
testo e che è spesso utilizzato nelle pagine web perché garantisce sicurezza
e allo stesso tempo semplicità per l’utente. Naturalmente, poiché questo
sistema viene prevalentemente usato dall’esterno dell’azienda, non possiamo
fare affidamento sulla sicurezza dell’ambiente enterprise come nel caso della
autenticazione integrata di Windows. Per risolver il problema dell’insicurezza
del canale la prassi più comune, e che anche noi abbiamo deciso di adottare, è
la cifratura del messaggio. In particolare si è utilizzato il protocollo HTTPS,
cioè HTTP over Secure Socket Layer, con autenticazione server.
Fig. 5.18: Scambio di messaggi utilizzando HTTPS
Questo protocollo richiede un certificato X509 valido per il server verificabile dal client (Vedi Fig. 5.18) per garantire le policy di sicurezza minime
per rispettare vincoli del modello CIA. Non avendo a disposizione un certificato rilasciato da una certification authority riconosciuta, abbiamo utilizzato
un certificato Self-Signed dal server. L’uso di questo tipo di certificato non
inficia le caratteristiche del protocollo, a condizione che il certificato venga
5.4. I client
87
distribuito prima al client tramite un meccanismo crittografico o in ambiente sicuro come quello enterprise. E’ comunque consigliabile l’utilizzo di un
certificato firmato da una certification authority.
In questo contesto il meccanismo di autenticazione è differente dal precedente. Inizialmente si ha la negoziazione fra le parti dell’algoritmo da utilizzare e successivamente lo scambio della chiave da utilizzare per la cifratura
dei messaggi. Dopo questa fase iniziale, client e server iniziano a comunicare
tramite messaggi cifrati con chiave simmetrica e autenticati. Tutte le volte
che il client fa una richiesta al server per invocare un servizio deve include le
proprie credenziali. Il server decifra il messaggio, controlla che le credenziali
siano valide e in caso affermativo permette di accedere al servizio. In questo
caso il controllo della validità delle credenziali è affidato all’Access Validator
(vedi Fig. 5.5), che verifica se l’utente che ha richiesto l’accesso al servizio
è registrato come utente di dominio nell’Active Directory e che la password
inviata è corretta.
Il vantaggio di questa soluzione è che può essere usata da qualsiasi device
con qualsiasi sistema operativo, ma paga un maggiore effort nella fase iniziale
e un overhead durante tutta la fase di scambio di messaggi.
5.4
I client
Avere le informazioni non sempre è rilevante, bisogna anche riuscire a rappresentarle in modo efficace e soprattutto in modo intuitivo per l’utilizzatore[20].
Il livello presentazione è a diretto contatto con la user experience dell’utente,
quindi tutte le scelte adottate sono state attentamente studiate e testate.
Per scelta progettuale abbiamo ridotto il più possibile la logica contenuta
nei client, semplificando lo sviluppo di soluzioni per dispositivi diversi. Tra le
88
Capitolo 5. Caso di Studio: CEFRIEL
alternative esaminate abbiamo deciso di sviluppare nell’ambito desktop un
Windows Gadget, nell’ambito mobile un’applicazione per Windows Phone
7 e un proof of concept di un’applicazione in contesto meeting che utilizza
Kinect.
Per realizzare un’interfaccia utente in grado di soddisfare al meglio i requisiti dei propri utenti, serve è una piattaforma che renda facile costruire
interfacce usando semplici modelli di progettazione. Per questo abbiamo deciso di utilizzare come linguaggio di sviluppo nuovamente il framework .NET
e in particolare Silverlight 4.0, che fa parte di Windows Presentation Foundation (WPF) . Gli aspetti che ci hanno spinto a scegliere questa tecnologia
sono principalmente tre:
• Possibilità di realizzare interfacce altamente interattive e complesse,
ma allo stesso tempo intuitive.
• Possibilità di adottare in modo efficiente il pattern di sviluppo ModelView-View-Model (MVVM), che garantisce il massimo del riutilizzo del
codice.
• Disponibilità della tecnologia tutti e tre i contesti di interesse.
5.4.1
Pattern MVVM
Da quando si è cominciato a creare interfacce utente software, ci sono stati
vari pattern di progettazione per contribuire a rendere più facile lo sviluppo.
Ad esempio, il Model-View-Presenter (MVP), variante del pattern per
eccellenza per molti anni Model-View-Controller, ha goduto di popolarità su
diverse piattaforme di programmazione. Quello che si vede sullo schermo è la
View, i dati da visualizzare sono il Model e il Presenter collega le due parti:
5.4. I client
89
la View sfrutta il Presenter per estrarre i dati del modello, reagire all’input
dell’utente e altre attività simili.
Partendo da questo modello è stato poi proposto il Presentation Model
(PM) pattern[15], simile a MVP, ma che presenta in più una astrazione
della View, chiamata appunto PresentationModel, e in cui ogni View diventa
semplicemente un rendering di questa astrazione.
Ultima evoluzione di questa sequenza di modelli è il Model-View-ViewModel
(MVVM) pattern[26], specializzazione del più generale modello PM, per il framework .NET. Come dice il nome stesso, MVVM si basa su tre componenti
essenziali: il Model, la View e il ViewModel.
Fig. 5.19: Pattern MVVM
La View definisce la struttura e l’aspetto di ciò che l’utente vede sullo
schermo. Idealmente, il code-behind di una vista contiene solo il costruttore,
ma in alcuni casi, può contenere codice di logica di interfaccia che implementa
un comportamento visivo che è difficile o inefficiente esprimere in eXtensible
Application Markup Language (XAML), come le animazioni complesse, o
quando il codice ha bisogno di manipolare direttamente gli elementi visivi
presenti nella View. Naturalmente la View deve essere personalizzata in base
al device e al contesto in cui l’utente utilizzerà l’applicazione.
Il ViewModel incapsula la logica di presentazione e dati per la View. A
differenza del Presenter in MVP, un ViewModel non ha bisogno di un riferi-
90
Capitolo 5. Caso di Studio: CEFRIEL
mento a una View, ma è la View che si lega a una proprietà del ViewModel
che espone i dati contenuti nel Model o altri dati specifici per la View. Le
associazioni tra i due componenti sono molto semplici da costruire perché
basta impostare il ViewModel come DataContext della View a cui si vuole
associare. Se i valori delle proprietà del ViewModel cambiano, i nuovi valori sono propagati automaticamente alla View tramite il Data Binding(Fig.
5.19). Quando l’utente fa clic su un pulsante nella vista, il comando associato implementato nel ViewModel esegue l’azione richiesta. Il ViewModel
ha quindi il compito di coordinare l’interazione della View con tutte le classi
del Model, nel nostro caso, instanzia un una classe proxy che mappa i metodi offerti dal web service e si occupa di gestire le chiamate asincrone. Il
ViewModel, e non la View, esegue tutte le modifiche da apportate ai dati del
modello. Le classi della View non hanno idea che esistano le classi del Model,
mentre il ViewModel e il Model non sono a conoscenza dell’esistenza della
View e questo disaccoppia in modo ottimale lo sviluppo delle varie parti.
Infine, Model incapsula la logica business e dati e nel nostro caso è
collocato completamente lato back-end (Fig. 5.20).
L’aspetto più importante di WPF che rende facile utilizzare MVVM è
l’infrastruttura di data binding che permette con una semplice associazione,
e implementazione dell’interfaccia INotifyPropertyChanged, di rimuovere la
necessità in ViewModel di scrivere il codice per l’aggiornamento della View.
Il sistema supporta anche meccanismi per la convalida dei dati di input e
fornisce un metodo standard di trasmissione degli errori di convalida alla
View.
MVVM è un modello molto popolare anche perché le classi ViewModel
sono facili da testare. In un certo senso, View e Unit Test sono solo due tipi
di consumatori del ViewModel. La possibilità di generare facilmente casi di
5.4. I client
91
Fig. 5.20: Pattern MVVM nell’architettura
test aiuta nel corso del tempo a ridurre il costo di mantenimento.
Nel nostro caso specifico(Fig. 5.21), adoperando MVVM siamo riusciti nei
tre contesti di riferimento a riutilizzare, con piccolissime modifiche, la parte
di ViewModel riscrivendo solamente il codice relativo alla View per sfruttare
al meglio le caratteristiche del device che stavamo utilizzando.
92
Capitolo 5. Caso di Studio: CEFRIEL
Fig. 5.21: Class diagram delle classi che implementano il MVVM
5.4.2
Front-end desktop
I gadgets Desktop sono piccole applicazioni specializzate che sono generalmente sviluppate per eseguire un singolo task. Il vantaggio di queste applicazione è la possibilità di averle sempre sott’occhio e a portata di click sul
desktop, garantendo cosı̀ l’immediatezza che stavamo cercando.
Il gadget Windows è composto principalmente da tre viste: la Home
principale che anche la parte sempre visibile quando il gadget è attivo, la
pagina Settings dove si possono configurare le impostazioni del gadget e la
pagina Flyout che, a richiesta, estende l’area del gadget per permette di
visualizzare maggiori dettagli.
La Fig. 5.22 mostra come si presenta l’interfaccia del gadget al primo avvio. Dopo un rapido login automatico, del tutto invisibile all’utente, la home
mostra nella parte alta i ruoli che la persona ricopre all’interno di CEFRIEL.
In ogni pagina della home vengono mostrati l’elenco dei messaggi, raggruppa-
5.4. I client
Fig. 5.22: Gedi Gadget
93
Fig. 5.23: Gedi Gadget in due istanze
ti per tipologia, che l’utente a deciso di voler visualizzare nel proprio gadget.
Per quanto riguarda lo stile del gadget, ci siamo ispirati allo stile della nuova
UI Metro presente sui nuovi WindowsPhone 7[7].
Uno dei vantaggi dell’uso dei gadget è la possibilità di creare istanze
differenti per il singolo oggetto. Per l’utente che ricopre due (o più) ruoli
all’interno dell’azienda è possibile creare un’istanza del gadget per ogni ruolo
ricoperto e avere una visione completa e immediata di tutte le sue aree di
competenza(vedi Fig. 5.23). Se l’utente lo ritiene utile, ogni gadget può essere
ancorato stabilmente in primo piano e ne può essere regolata l’opacità.
Il gadget è stato sviluppato principalmente utilizzando Silverlight v.4 e
in questo modo, come visto nella sezione MVVM, siamo riusciti a creare un
ottimo disaccoppiamento tra interfaccia grafica e logica e a massimizzare il
riuso e la manutenibilità del codice.
La home si caratterizza per lo stile basato sui Tile, in cui ogni rettangolo rappresenta una tipologia di avviso che può interessare l’utente. I tile
contengono un’icona che rimanda alla tipologia di avviso, il nome del tipo di
94
Capitolo 5. Caso di Studio: CEFRIEL
avviso e il numero di alert di quella categoria. La lista e l’aspetto dei singoli tile è completamente personalizzabile tramite i settings. Quando l’utente
vuole inserire dei dati o leggere degli avvisi può semplicemente cliccare sul
tile corrisponde. Per tutti i ruoli aziendali la struttura iniziale a tile è la
stessa, ma naturalmente contiene tipi diversi di informazioni.
Le pagine di flyout vengono mostrate alla selezione di un tile e raccolgono
tutti i dettagli e le azioni che è possibile eseguire nel sistema. Le pagine sono
state sviluppate rispettando le esigenze evidenziate dai casi d’uso descritti
5.2 e sfruttando al meglio i feedback degli utenti che hanno provato il sistema.
Fig. 5.24: Inserimento e consuntivazione Professional
Dal flayout dedicato ai professional (Fig. 5.24) è possibile controllare i
progetti, le attività, i task e allocazioni su cui l’utente è allocato e può visualizzare, inserire e modificare le ore consuntivate. Nella parte bassa, è
rappresentato il grafico delle ore consuntivate nell’ultimo mese per il progetto selezionato o per tutti i progetti su cui il professional è allocato. Ogni
utente ha anche la possibilità, cliccando sull’icona gialla di attenzione in al-
5.4. I client
95
to a sinistra, di visualizzare un elenco di avvisi che lo riguardano e che gli
ricordano scadenze o che sono stati inviati da uno dei suoi manager per segnalare una variazione nel progetto. Dopo aver letto l’avviso, l’utente può
segnare l’alert come read, ma se non ha aggiornato o corretto la causa che lo
ha generato l’analizzatore si accorge che il problema persiste e riaggiorna la
segnalazione che riappare all’utente. Sarebbe buona norma che l’utente dopo avere esaminato l’alert modifichi i suoi valori facendo in modo che questo
evento non venga più generato.
Fig. 5.25: Visualizzazione dettagli progetti per PM
Per i project manager e gli account manger, nella visione dei dettagli (Fig.
5.25) si offre la possibilità di monitorare i KPI e alcuni grafici interessanti per
ogni singolo progetto attivo. Gli indici di più rilevanti che abbiamo deciso
di inserire sono: la data dell’utlimo ultimo consuntivo relativo al progetto
in analisi, il valore del SAL attuale, il valore del WIP nel mese corrente e
quello del mese precedente. Nella lista di progetti sulla sinistra è presente
anche un’indicatore che permette a colpo d’occhio di identificare i progetti
96
Capitolo 5. Caso di Studio: CEFRIEL
che presentano particolari problemi. L’indicatore può essere di colore rosso,
nel caso il progetto presenta criticità rilevanti, arancione se presenta problemi che allo stato attuale non sono critici (anche se deve essere monitorato) e
verde se risulta essere in linea con le policy aziendali. Infine, nella parte inferiore è stata lasciata una sezione per rappresentare i grafici dell’andamento
temporale di alcuni fattori critici. Le serie che possono essere visualizzate
sono:
• Ore consuntivate nell’ultimo mese. Permette di monitorare lo stato di
avanzamento del progetto, valutando il numero di ore spese giorno per
giorno.
• Avanzamento del SAL nell’ ultimo mese. E’ un grafico incrementale che
offre la possibilità di vigilare a livello economico lo stato del progetto.
L’area è espandibile quindi, se ce ne fosse l’esigenza, si potrebbero inserire
facilmente altri grafici.
Vediamo infine le funzionalità offerte dal gadget desktop per i capi divisione (Fig. 5.25). Questo utente è responsabile delle risorse per la propria
divisione, quindi deve conoscere lo stato di tutti gli utenti. Le informazioni
sono visualizzate sono:
• Informazioni generali riguardo la risorsa nel sistema.
• La data dell’ultimo consuntivo e la quantità di ore inserite per poter
monitorare l’attività della risorsa.
• Il numero di progetti nel quale la risorsa è allocata. In questo modo
è possibile evitare di allocare la risorsa in troppi progetti contemporaneamente.
5.4. I client
97
Fig. 5.26: Pagina di dettaglio per i capi divisione
Il capodivisione ha, come avviene per i progetti per project manager, un’indicatore che permette di visualizzare istantaneamente come è lo stato della
risorsa.
Fig. 5.27: Pagina di invio di avvisi
98
Capitolo 5. Caso di Studio: CEFRIEL
Per tutti i manager il gadget offre una funzionalità aggiuntiva rispetto
ai professional. Nel flayout, accanto all’icona degli avvisi, c’è un’altra icona
cliccando sulla quale i manager possono inviare avvisi a tutte le risorse assegnate a un progetto di loro competenza o che appartengono alla divisione
che gestiscono (Fig. 5.25). Gli avvisi possono essere utilizzati per richiamare
l’attenzione di una risorsa al rispetto di determinate policy o come mezzo
per notificare attività di progetto.
5.4.3
Front-end mobile
Per quanto riguarda il conteso mobile, abbiamo preso come piattaforma di
riferimento Windows Phone 7.
Seppure sia la piattaforma più giovane tra le tre presentate nel capitolo2
e al momento non supporti alcune funzionalità già presenti nelle piattaforme
concorrenti, Windows Phone 7 è una piattaforma molto promettente. I recenti accordi economici siglati da Microsoft con grandi case case di telefonia
mobile, ultima delle quali Nokia, fanno presumere una diffusione su larga
scala nel breve periodo. Inoltre, la mancanza di un unico vendor hardware,
ma allo stesso tempo una serie di requisiti tecnici indispensabili, produrranno
una forte concorrenza che permetterà da un lato l’abbassamento dei prezzi
e dall’altro la produzione di device diversificati per fascia di clientela, che
accelereranno ulteriormente la diffusione della piattaforma.
Le prospettive di diffusione non sono comunque state il fattore principale
di scelta. Le caratteristiche che ci hanno maggiormente convinto sono state
l’ottima integrazione con le tecnologie del framework .Net, in particolare
Silverlight, e sopratutto la nuova Metro User Interface. Inoltre, la giovane
età della piattaforma fa si che ci siano ancora molti ambiti inesplorati che
possono dare risultati eccezionali.
5.4. I client
99
Metro UI ha uno stile molto minimalista ispirato alla segnaletica delle
grandi metropolitane di Washington, NewYork e Tokio che però guida rapidamente le persone nella direzione giusta fino alle informazioni che vogliono
avere. Metro UI è progettato per essere al tempo stesso moderno, veloce e
elegante, ponendosi in forte contrasto con l’interfaccia a icone presente in
Android e iOS non cercando di riprodurre gli effetti dei materiali reali sullo schermo, ma sfruttando al meglio quanto offerto dai pixel. Il risultato è
sicuramente il miglior design tra le piattaforme in circolazione e, come accennato precedentemente, abbiamo deciso di ispirarci a essa per realizzare lo
stile delle nostre nostre user interfacce.
La funzionalità primaria nel contesto mobile non è l’inserimento dei dati,
ma bensı̀ la consultazione. Per questo motivo abbiamo deciso di privilegiare
gli aspetti di usabilità dell’interfaccia nella lettura dello stato dei progetti e
degli avvisi, limitando invece la parte di inserimento solamente all’invio.
Uno dei nuovi controlli introdotti dalla Metro UI è il Panorama, che permette di visualizzare orizzontalmente informazioni e immagini che superano
i limiti fisici della dimensione dello schermo. Abbiamo adottato questo tipo di controllo per la pagina iniziale della applicazione per permettere agli
utenti che hanno più ruoli in azienda di visualizzare con poche gesture tutte
le informazioni riguardanti le proprie attività. La homepage (Fig. 5.28) può
essere vista come un lungo muro su cui sono appese le tile degli avvisi che
interessano all’utente.
Cliccando sulle tile si apre la pagina(Fig. 5.28) con l’elenco completo
degli alert e l’utente può vedere il dettaglio di ogni singolo avviso. Sempre
per quanto riguarda gli alert, se l’utente è un manager può passare alla
visualizzazione di invio e digitare avvisi da mandare ad altri utenti collegati
alle sue attività.
100
Capitolo 5. Caso di Studio: CEFRIEL
Fig. 5.28: Home GEDI Windows phone 7
5.4.4
Front-end gestuale
L’ambiente meeting e collaborativo si presta a particolarmente bene a interazioni di tipo gestuale. Guardando ai progetti diffusi in rete in questo
ambito, ci sono già state numerose sperimentazioni di utilizzo della periferica WiiMote come contoller per presentazioni o come strumento di interazione
a distanza.
Per quanto ci riguarda, abbiamo cercato di andare oltre queste sperimentazioni e realizzare proof-of concept di un’applicazione a interfaccia puramente gestuale, cioè senza alcun tipo di controller, sfruttando Kinect. La parte
di front-end in questo caso sarà completamente differente da quelle viste in
precedenza in quanto è pensata per i manager che devono mostrare report,
grafici e dettagli riguardo l’andamento delle attività ai propri clienti o nei
meeting aziendali. Inoltre, la possibilità dell’applicazione di interfacciarsi di-
5.4. I client
101
rettamente con l’architettura di back-end permette anche la visualizzazione
di dati in tempo-reale.
Questo front-end non ha la pretesa di essere completo e affidabile come gli
altri perché le librerie ufficiali per utilizzare Kinect da pc saranno rilasciate
solamente nei prossimi mesi. Offre però un assaggio anticipato di quello
che sarà il futuro dell’interazione uomo-macchina dei prossimi anni. L’essere
privato di controller e interagire liberamente con un’applicazione in grado
di riconoscere la persona che ha davanti, crea un’atmosfera quasi magica
che ha l’effetto di ridurre notevolmente le barriere culturali all’utilizzo della
tecnologia imposte dalle attuali interfacce grafiche.
Sviluppo software con Kinect
Tramite alcuni accorgimenti è possibile collegare Kinect a un normale pc,
ma purtroppo ancora non sono state rilasciate pubblicamente da Microsoft
le librerie di sviluppo e i driver per il device. L’interesse per questa nuova
tecnologia ha però spinto le comunity opensource a sviluppare driver e librerie
software per non dover aspettare il rilascio di quelle ufficiali.
Dopo aver analizzato i vari progetti che sono partiti, abbiamo cercato
di capire con dei test quale fosse il più valido, completo e affidabile. Alla
fine abbiamo deciso di utilizzare le librerie Open Natural Interface (OpenNI)
con i driver rilasciati da PrimeSense, società sviluppatrice e produttrice delle
telecamere di profondità presenti in Kinect.
OpenNI è un framework molto ampio che offre interfacce di programmazione software per scrivere applicazioni basate sulla natural interaction.
Questo framework non esclusivamente dedicato a Kinect, anche se al momento è il principale device utilizzato. Il framework fornisce sia API di basso
102
Capitolo 5. Caso di Studio: CEFRIEL
livello per l’accesso diretto ai dati RAW del device, sia API di più alto livello
che forniscono funzionalità più avanzate come il riconoscimento del volto.
Sul piano dei sistemi operativi sono supportate le piattaforme Windows,
Mac e Linux e per la programmazione si può utilizzare C/C++ o un wrapper
C#.
La nostra soluzione
La nostra soluzione è stata realizzata su piattaforma Windows 7 e, per semplificare lo sviluppo, abbiamo deciso di mappare i movimenti della mando
dell’utente con quelli del mouse. Per riuscire a ottenere questa mappatura
abbiamo utilizzato le librerie di riconoscimento della mano messe a disposizione dal framework. Questa soluzione comporta dei ritardi nella propagazione
del movimento, ma accettabili per lo scopo dimostrativo di questa soluzione.
Analogamente agli altri front-end, l’interfaccia grafica è stata realizzata
in Silverlight e anche in questo caso è stato possibile riutilizzare gran parte
del codice già sviluppato.
Dopo la schermata iniziale (Fig. 5.29), l’utente muovendo la mano a destra
e a sinistra può scorrere i progetti per cui sono disponibili delle slide o dei
grafici (Fig. 5.30).
Trovato il progetto di suo interesse, spostando la mano verso il basso
l’utente può iniziare a sfogliare le informazioni disponibili(Fig. 5.31), sempre
muovendo la mano a destra e a sinistra. Se l’utente vuole cambiare progetto
può tornare alla schermata precedente semplicemente muovendo verso l’alto
la mano. Se invece ci sono delle informazioni particolarmente importanti, è
possibile aggiungere le slide di interesse alle note trascinandole verso il basso
e, a fine meeting, stamparle.
5.4. I client
103
Fig. 5.29: Pagina Iniziale GEDI kinect
Fig. 5.30: Selezione dei progetti
Fig. 5.31: Selezione del report
Oltre al semplice movimento piano della mano, abbiamo deciso di mappare anche un movimento veloce in direzione del Kinect, come se si volesse
104
Capitolo 5. Caso di Studio: CEFRIEL
afferrare un oggetto sullo schermo, con un evento di pressione del tasto sinistro del mouse. Questo ci ha permesso di inserire anche una gesture per
ingrandire a tutto schermo la slide corrente della presentazione.
Per iniziare a tracciare il movimento della mano è necessario fare una
gesture di avvio muovendo velocemente la mano a destra e a sinistra, come a
voler salutare il device. Se in sala ci sono, come è plausibile per un meeting,
più persone possono interagire con il client entro una distanza di quattro
metri.
Capitolo 6
Direzioni future di ricerca e
conclusioni
”La mente che si apre ad una nuova idea non torna mai alla dimensione
precedente.”
Albert Einstein
In questo capitolo a conclusione della trattazione del lavoro svolto ci focalizziamo sui risultati ottenuti e le prospettive di sviluppo futuro per la soluzione
realizzata nel caso di studio.
6.1
Piloting
La fase conclusiva del lavoro ha visto l’avvio di un piloting per testare le
soluzioni proposte e raccogliere feedback da parte degli utenti.
In Fig. 6.1 sono riportate nell’arco dell’anno 2010, con frequenza giornaliera, il numero di operazioni di inserimento dei consuntivi degli utenti.
Le policy aziendali prevedono che ogni dipendente inserisca entro le prime
settimane del mese i consuntivi delle ore lavorate in quello precedente. Le
106
Capitolo 6. Direzioni future di ricerca e conclusioni
Fig. 6.1: Grafico dei giorni di inserimento dei consuntivi distribuito in un anno
Fig. 6.2 e Fig. 6.3 evidenziano la presenza di picchi in inserimento nelle
prime settimane seguite da diminuzione in quelle successive. Tra le esigenze
percepite dall’azienda c’è quella di cercare di uniformare lungo tutto il mese
l’inserimento dei dati.
Fig. 6.2: Grafico dei giorni di inserimento dei consuntivi distribuito su sei mesi
Con la nostra soluzione vogliamo ridurre i picchi in corrispondenza delle
scadenze e cercare di distribuire in modo uniforme, o almeno con frequenza
settimanale, l’inserimento dei dati in modo da avere un quadro più allineato
con il reale stato dell’azienda. Le interfacce sviluppate e il sistema di analisi
e notifica, garantiscono un meccanismo semplice di inserimento dei dati che
incentiva le operazioni.
I primi focus group con professional, project manager e head of division
ha dato degli ottimi feedback sul lato delle funzionalità, ma per poter vedere
6.2. Conclusioni
107
Fig. 6.3: Totale consuntivi inseriti raggruppati per giorno del mese
gli effetti complessivi dobbiamo attendere l’utilizzo intensivo e prolungato
della nostra soluzione in tutta l’azienda.
6.2
Conclusioni
Tra i obiettivi principali delle moderne aziende c’è quello della gestione e
dell’utilizzo dei dati in modo efficace. L’obiettivo che ci eravamo posti è
stato quello è riuscire a proporre una soluzione in grado di analizzare le
performance dell’azienda con una bassa latenza e di prendere decisioni in
modo tempestivo.
La soluzione che abbiamo realizzato si basa su l’utilizzo delle più recenti tecnologie di presentazione e interazione con i dati e su un’architettura
flessibile e modulare.
Le caratteristiche dell’architettura sviluppata garantiscono l’integrazione
con i sistemi aziendali preesistenti e permettono un’analisi delle performance
in modo tempestivo introducendo costi o infrastrutture contenute. La buona
modularizzazione garantisce ampia scalabilità e espandibilità, oltre a favorire
108
Capitolo 6. Direzioni future di ricerca e conclusioni
gli aspetti di manutenibilità e riuso delle caratteristiche già introdotte da noi.
Nel complesso, il sistema risulta fortemente multi-piattaforma e multi-canale.
Il prototipo realizzato conferma la flessibilità dell’architettura e l’effettiva
efficacia della nostra proposta. Inoltre, lo studio preliminare condotto ci ha
permesso di astrarre modello di organizzazione interna di riferimento che
permette di replicare la nostra soluzione in altre aziende rispetto a quella del
caso di studio.
Nel corso del lavoro abbiamo dedicato particolare attenzione a capire le
esigenze delle persone in diversi contesti e per ognuno abbiamo scelto la
tecnologia più adatta a soddisfare le esigenze evidenziate. Vediamo ora per
ognuno dei front-end sviluppati le caratteristiche che siamo riusciti a coprire
in riferimento al modelle descritto in 3.3.3.
Front-end desktop
Fig. 6.4: Modello di riferimento - Caratteristiche coperte dal front-end desktop
Il front-end desktop è dedicato ad un uso personale e copre molte delle
caratteristiche del modello. Tramite metafore e colori si ha un impatto visivo
6.2. Conclusioni
109
immediato sullo stato dell’azienda, ma grazie alle funzionalità avanzate è
possibile visualizzare chart e aggregare o espandere i dettagli. Le informazioni
visualizzate sono on demand e descrivono lo stato attuale e lo storico di
determinati dati.
Front-end mobile
Fig. 6.5: Modello di riferimento - Caratteristiche coperte dal front-end mobile
L’utilizzo di device mobili implica un ulteriore attenzione per la quantità
di dati scambiati. Per questo motivo si è preferito ridurre la profondità di
dettaglio e mostrare metafore e dati aggregati.
Front-end gestuale
Il prof-of-concept del front-end gestuale si concentra sugli aspetti collaborativi e di visualizzazione dei dati sotto forma di grafici e indicatori aggregati.
Resta comunque possibile integrare nelle presentazioni dati provenienti on
demand dal back-end.
110
Capitolo 6. Direzioni future di ricerca e conclusioni
Fig. 6.6: Modello di riferimento - Caratteristiche coperte dal front-end gestuale
6.3
Sviluppi futuri
La soluzione realizzata e i risultati ottenuti con questo lavoro aprono la strada
a molteplici sviluppi futuri sia lato back-end che lato front-end.
6.3.1
Sviluppi futuri per il back-end
Lato back-end gli sviluppi più interessanti si concentrano su quattro aspetti:
introduzione di nuove sorgenti di dati, l’incremento delle capacità di analisi del sistema, integrazione con altri sistemi aziendali, ampliamento dei
protocolli disponibili.
L’architettura flessibile e modulare della soluzione permette di aggiungere molto facilmente nuove sorgenti di informazioni. Sviluppando nuovi
componenti per DAL dedicati alla connessione e alla gestione delle nuove
sorgenti, sarebbe possibile integrare il sistema con l’ERP aziendale o accede
alle informazioni contenute nel datawarehouse. Questi dati, per ragioni di
riservatezza delle informazioni, non sono stati potuti essere utilizzati in que-
6.3. Sviluppi futuri
111
sto lavoro di tesi, ma arricchirebbero notevolmente le capacità del sistema
facendolo diventare uno strumento ancora più potente e completo.
Arricchendo la quantità di dati, si potrebbe anche ampliare i tipi di analisi
effettuate dal Analyzer. Per ampliare le analisi da effettuare sulle dimensioni
già considerate è sufficiente estendere le classi già sviluppate per l’analisi dei
progetti e delle risorse. Se invece si volesse effettuare analisi su una nuova
dimensione, ad esempio i clienti, basterebbe introdurre una nuova classe di
analisi specifica per la dimensione che estende la super classe astratta di analisi. Vista la disponibilità di un datawarehouse, si può anche pensare di realizzare un componente che sfrutti i dati e le capacità di questo strumento per
realizzare analisi ancora più sofisticate o di riutilizzare quelle già impostate.
Nell’Analyzer potrebbero anche essere introdotte funzionalità che partendo
dai dati raccolti formulino previsioni future sull’andamento dell’impresa.
Il terzo interessante sviluppo futuro riguarda l’integrazione della nostra
soluzione con gli altri sistemi presenti. Per esempio, l’attuale sistema web
di inserimento dei dai potrebbe essere modificato per sfruttare anch’esso le
nuove funzionalità introdotte oppure il sistema di contabilità può essere integrato con il sistema per inviare notifiche importanti ai manager o agli altri
dipendenti.
Infine, l’ultimo aspetto che potrebbe essere ampliato riguarda i web service, in particolare i protocolli di comunicazione utilizzati. Negli ultimi anni
si sono sviluppati protocolli per lo scambio di informazioni più efficienti del
protocollo SOAP, come ad esempio JSON. L’utilizzo di WCF e l’architettura
sviluppata, garantiscono la possibilità di ampliare i protocolli supportati semplicemente definendo un nuovo EndPoint dedicato e riutilizzare interamente
la logica già presente.
112
6.3.2
Capitolo 6. Direzioni future di ricerca e conclusioni
Sviluppi futuri per il front-end
Per quanto riguarda il front-end è possibile fare evolvere in futuro il sistema
in due direzioni.
La prima direzione di sviluppo è quella di ampliare le soluzioni attuali
in modo da coprire altri aspetti tra quelli descritti in 3.3.3. Le frecce e i
cerchi tratteggiati in Fig. 6.4, Fig. 6.5 e Fig. 6.6 indicano per ognuno dei
front-end le caratteristiche che potrebbero essere inserite. In particolare,
sarebbe interessante cercare di introdurre funzionalità dedicate alla visualizzazione delle previsioni fatte sui dati o introdurre nuovi meccanismi realtime
di esplorazione in profondità delle informazioni. Sempre nel contesto evolutivo delle attuali client, il front-end gestuale, attualmente sviluppato al solo
scopo dimostrativo, apre interessanti prospettive di utilizzo reale. Ad esempio, sarebbe interessante integrare le funzionalità proposte con i principali
strumenti di presentazione diffusi in azienda o in gadget per TV.
Il secondo aspetto interessante su cui continuare a lavorare riguarda invece la possibilità di sviluppare sistemi complementari a quelli che noi abbiamo
proposto. Essendo l’architettura pensata per essere il più possibile multicanale, si possono facilmente sviluppare nuovi client con front-end dedicati ad
aspetti non coperti. Per esempio sarebbe interessante sviluppare client dedicati all’utilizzo su tablet o device touch di grandi dimensioni, eventualmente
con la possibilità di far collaborare più utenti tra loro. Infine, si potrebbe cercare di portare gli attuali front-end su nuove piattaforme software (Android,
Mac OS, ...) o nuovi tipi di device.
Bibliografia
[1] Fred A. Jacobs Adam S. Maiga. Jit performance effects : A research
note. Advances in Accounting, incorporating Advances in International
Accounting, pages 183–189, 2009.
[2] Giuseppe Menga Amund Aarsten, Davide Brugali. Patterns for threetier client/server applications.
[3] Chris Anderson and Michael Wolff. The web is dead. long live the
internet. Wired, 9 2010.
[4] Apress, editor. PRO Linq - Language Inteegrated Query in C. Adam
Freeman and Joseph C. Rattz, Jr., 2010.
[5] Yusuf Bhaiji.
Network Security Technologies and Solutions (CCIE
Professional Development Series). Cisco Press.
[6] Lowell Bryan. Just-in-time strategy for a turbulent world. McKinsey
Quarterly, pages 17–27, 6 2004.
[7] Microsoft Corp. Ui design and interaction guide for windows phone 7
v.2.0, 7 2010.
[8] Silvia Fragola e Alfonso Fuggetta Fabiano Cattaneo. L’impresa Just in
Time. CEFRIEL, Maggio 2010.
113
114
BIBLIOGRAFIA
[9] Jane Fraser, Lowell L. Bryan, Wilhelm Rall, and Bryan Lowell L. Race for the World: Strategies to Build a Great Global Firm. Harvard
Business Press, 9 1999.
[10] Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley Professional, 1 edition, 11 1994.
[11] Gartner Research. Analysts Examine Latest Industry Trends During
Gartner Symposium/ITxpo, Orlando, FL, USA, 10 2010.
[12] Gartner Research. Future Wireless Trends to Be Discussed at Gartner
Wireless, Networking & Communications Summit, San Diego, CA, USA,
4 2010.
[13] Harumi Kuno Vijay Machiraju Gustavo Alonso, Fabio Casati. Web services: concepts, architectures and application. Springer - Verlag Berlin
Heidelberg, 2004.
[14] Jason Taylor Prashant Bansode Steve Gregersen Madhu Sundararajan
Rob Boucher J.D. Meier, Carlos Farre. Improving Web Services Sercurity - Scenarios and Implementation Guidance or WCF. Microsoft
Corporation, 2008.
[15] Boodhoo Jean-Paul. Model-view-presenter. MSDN Magazine, 8 2006.
[16] William F. Joyce. Matrix organization: A social experiment. The
Academy of Management Journal, 29(3), 1986.
[17] Jenny Filler Karen Huhn Judith E Deutsch, Megan Borbely and Phyllis
Guarrera-Bowlby. Use of a low-cost, commercially available gaming con-
BIBLIOGRAFIA
115
sole (wii) for rehabilitation of an adolescent with cerebral palsy. Physical
Therapy, 88, 2008.
[18] R. Anthony Inman Kenneth W. Green Jr. Does implementation of a jitwith-customers strategy change an organization’s structure? Industrial
Management & Data Systems, 106:1077–1094, 2006.
[19] J.C. Lee. Hacking the nintendo wii remote. Pervasive Computing, IEEE,
7(3):39 –45, 2008.
[20] Philip I.S. Lei and Angus K.Y. Wong. The multiple-touch user interface
revolution. IT Professional, 11:42–49, 2009.
[21] Jim Lee Paul H. Meredith, John H.Ristroph. Implementing jit: the
dimension of culture, management and human resource. 1991.
[22] D.S. Pugh. Organization Theory: Selected Readings. Penguin Books
Ltd., reprint edition, 1990.
[23] Jef Raskin. The humane interface: new directions for designing interactive systems. ACM Press/Addison-Wesley Publishing Co., New York,
NY, USA, 2000.
[24] Thomas Schlömer, Benjamin Poppinga, Niels Henze, and Susanne Boll.
Gesture recognition with a wii controller. In Proceedings of the 2nd
international conference on Tangible and embedded interaction, TEI ’08,
pages 11–14, New York, NY, USA, 2008. ACM.
[25] Torben Schou and Henry J. Gardner. A wii remote, a game engine,
five sensor bars and a virtual reality theatre. In Proceedings of the 19th
Australasian conference on Computer-Human Interaction: Entertaining
116
BIBLIOGRAFIA
User Interfaces, OZCHI ’07, pages 231–234, New York, NY, USA, 2007.
ACM.
[26] Josh Smith. Model-view-viewmodel (mvvm) pattern. MSDN Magazine,
2 2009.
[27] Jan van den Ende. Computers and industrial organization: Early sources
of ’just in time’ production in the dutch steel industry. IEEE Annals of
the History of Computing, 17:22–32, 1995.
[28] Ralph Whittle.
Understanding the enterprise business architecture.
BPMInstitute, 9 2005.
[29] Ralph Whittle and Conrad B. Myrick. Enterprise Business Architecture:
The Formal Link between Strategy and Results. CRC Press, 1 edition, 8
2004.
[30] James P. Womack. The Machine That Changed the World : Based on
the Massachusetts Institute of Technology 5-Million-Dollar 5-Year Study
on the Future of the Automobile. Scribner, 10 1990.
Appendice A
Tabella comparativa tra
piattaforme mobile
Mobile OS
Kernel
OS X Mobile
Linux Kernerl
Windows CE 6
GSM
GSM + CDMS
GSM + CDMA
Display
3.5 inch
variabile
variabile
Touch Screen
Capacitivo
Capacitivo
Capacitivo
Multitouch
Sı̀
Sı̀
Sı̀
Copertura di
rete
Sı̀ + Push NotiMultitasking
Inserito
entro
2011
Push
+
Sı̀
fication Service
Notification
Service
118
Appendice A. Tabella comparativa tra piattaforme mobile
Copia/ IncolSı̀
Sı̀
Sı̀
Tastiera
Solo virtuale
variabile
variabile
App Store
App Store
Android Market
la
Windows
Marketplace
Music Store
iTunes
3rd Party Store
Zune Store
Sı̀
Sı̀
Sı̀
App Store
3rd Party Store
Xbox Live
Sı̀ con App
Sı̀ con App
Sı̀
Sı̀ con App
Google Docs
Piattaforma
Advertsing
Game
Social
Network
Office
ProOffice 2010 mo-
duttivity
bilel
Suite
Browser
Mobile Safari
Chrome
IE8(Update
a
IE9
il
entro
2011)
Inserito entro il
Flash
No
Sı̀
2011
Silverlight
No
No
Sı̀
Java
No
Sı̀
No
Googlr
Bing
Gmail App
Outlook Mobile
Spotlight per la
Default
ricerca interna,
Search
Google
per
il
web
Email
Mail App
119
Sı̀, tile personaHome Screen
No
Sı̀
lizzabili
OS Update
Sı̀
Sı̀
Sı̀
Sı̀
Sı̀
Sı̀
No
Sı̀
No
Mobile Me
Google App
My Phone 2.0
300.000+
70.000+
20.000+
Firmware Update
Interfaccia
Personalizzabile
Cloud-Sync
Service
Applicazioni
Disponibili
120
Appendice A. Tabella comparativa tra piattaforme mobile
Appendice B
Database Gedi Alert
Struttura nel dettaglio del database GEDI ALERT. Le due tabelle che lo
compongono sono Alert e Tipo.
Tabella Alert
E’ la tabella che contiene tutti gli avvisi; sia quelli generati dal sistema che
quelli inviati tra utenti. La tabella qui di seguito mostra nel dettaglio l’elenco
dei campi, le loro tipologie e a cosa si riferiscono.
Tabella Tipo
Questa tabella racchiude tutte le le informazioni riguardo le tipologie di avvisi
che possono essere generati.
122
Appendice B. Database Gedi Alert
Nome campo
Tipo
Descrizione
ID
Intero
Identificativo univoco dell’avviso
Nome
Varchar Nome dell’avviso. Deve descrivere in forma
sintetica ma precisa cosa rappresenta l’avviso
Descrizione
Varchar Descrizione dell’avviso.
E’ un’ampliamento
del nome, viene utilizzato per elencare tutti
i dettagli necessari a comprendere meglio la
natura di tale notizia.
Id Risorsa
Intero
Riferimento alla risorsa destinataria dell’avviso. Questo campo può assumere il valore nullo
nel caso l’evento sia generato dal sistema e sia
riferito ad un progetto anziché ad una risorsa.1
Id Progetto
Intero
Riferimento al progetto sul quale è stato
generato l’avviso.1
Data Creazione
Date
Data di creazione dell’avviso.
Time
Id Tipo
Intero
Riferimento alla tabella tipo.
Permette di
specificare la tipologia di Alert.
Creato Da
Intero
Identificativo della risorsa che ha creato l’alert. Siccome anche il sistema può generare alert, questo campo può assumere valori
negativi.
Already Read
Boolean Specifica se l’avviso è stato letto dal momento
della creazione.
Tabella B.2: Campi della tabella Alert
123
Nome campo
Tipo
Descrizione
ID
Intero
Identificativo univoco del tipo di avviso
Primo Livello
Intero
Nome dell’avviso. Deve descrivere in forma
sintetica ma precisa cosa rappresenta l’avviso
Descrizione
Varchar Descrizione dell’avviso.
E’ un’ampliamento
del nome, viene utilizzato per elencare tutti
i dettagli necessari a comprendere meglio la
natura di tale notizia.
Tabella B.4: Campi della tabella Tipo
124
Appendice B. Database Gedi Alert
Appendice C
Stati di Progetto
Qui viene descritto qual’è la distinzione tra i colori dei semafori per project
manager e account manager. Semaforo rosso
• SAL non presente o non aggiornato nell’ultimo mese
• Superamento oltre il 10% dei costi o superamento di oltre e25.000 di
costi, per progetti con costo superiore a e50.000
• Superamento di oltre e5.000 dei costi, per progetti con costo inferiore
a e50.000
• Progetto già terminato, ma con il contratto non ancora approvato dal
Cliente (il progetto è quindi ancora in uno stato precedente rispetto ad
acquisito)
• Ultimo SAL anteriore alla data di chiusura del progetto (data fine)
Semaforo giallo
• Superamento fino al 10% dei costi, fino ad un massimo di e25.000, per
progetti con costo superiore a e50.000
126
Appendice C. Stati di Progetto
• Superamento fino a e5.000 dei costi, per progetti con costo inferiore a
e50.000
Semaforo verde
• SAL aggiornato
• Progetto in linea
Nessun semaforo se lo stato del progetto non è in chiusura, acquisito o
terminato.
In caso di semaforo rosso, il PM propone e concorda con HoD, AM e DG
le azioni da effettuare, ad esempio:
• rimodulazione delle attività future
• revisione contrattuale
• revenue aggiuntive
• follow-up del progetto in cui spostare parte dei costi in eccesso
• riuso di semilavorati e deliverable del progetto in altri progetti (riducendo di conseguenza i costi di altri progetti)
In caso di semaforo giallo, le azioni precedenti sono proposte e discusse
con HoD e AM.
Fly UP