Piattaforme di sviluppo per applicazioni Web a livello - e-Lite
Transcript
Piattaforme di sviluppo per applicazioni Web a livello - e-Lite
POLITECNICO DI TORINO IV Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale, ICT Management Tesi di Laurea Specialistica Piattaforme di sviluppo per applicazioni Web a livello Enterprise: analisi comparativa e considerazioni economico-organizzative Scenari per l'avvio di una business line in Cefin Systems Relatori: Prof. Fulvio Corno Prof. Carlo Cambini Candidato: Carlo BERGOGLIO Marzo 2010 Sommario Sommario Il presente elaborato si pone l’obiettivo di illustrare lo scenario attuale e le tendenze del settore SaaS (Software-as-a-Service), proponendo la valutazione di alcune piattaforme Web in ottica tecnologica, funzionale ed economica. A tal proposito, si ringrazia l’azienda Cefin Systems Italia, che ha consentito al candidato di svolgere durante lo stage gran parte delle attività di ricerca ed analisi. Il progetto sviluppato deriva da specifiche esigenze dell’azienda, che desiderava valutare l’opportunità di creare una nuova linea di business dedicata allo sviluppo di applicazioni Web personalizzate ed erogate totalmente in modalità SaaS. L’incarico si è articolato in due diverse aree, la prima legata ad argomenti propriamente tecnologici, rivolti all’analisi, alla sperimentazione e alla scelta delle soluzioni informatiche più idonee, mentre la seconda è consistita nella redazione di un business case, con l’obiettivo di valutare la convenienza dell’investimento e le sue caratteristiche. Al momento, il background di Cefin Systems risultava focalizzato sulla fornitura di servizi per la gestione di flotte di veicoli (fleet management) attraverso supporti informatici, telematici e satellitari con il prodotto Sateltrack, già erogato in modalità SaaS. A questo si affiancavano altri servizi, quali consulenze in ambito IT, analisi di processo, analisi di fattibilità e progettazione architetturale del software, mentre lo sviluppo di codice e il debugging veniva abitualmente demandato ad una società terza (Krescendo Ltd). L’azienda risultava pertanto interessata a valutare l’appetibilità del mercato del software Web-based, offrendo applicazioni B2B (Business-to-Business) personalizzate e "chiavi in mano", erogate completamente secondo il modello SaaS, sul quale il personale disponeva già di ottime competenze. Questo significava individuare le tecnologie informatiche più idonee, le eventuali strategie di collaborazione con aziende partner (in particolare, la società Krescendo possedeva già una piattaforma di questo tipo, estremamente flessibile e ben conosciuta a livello funzionale da Cefin Systems) e la definizione delle risorse da impiegare. L’ouput finale avrebbe supportato il management aziendale nella decisione, offrendo un giudizio sulla convenienza all’investimento e le informazioni tecniche e gestionali utili alla definizione del progetto esecutivo. I Ringraziamenti Ringraziamenti Il candidato desidera ringraziare tutto il team Cefin Systems, in particolare Davide Cattai, che ha permesso l’ideazione e lo sviluppo del presente elaborato oltre che il conseguimento di un’esperienza interessante, valorizzata dalla fiducia e dall’elevata libertà di iniziativa concessa, non comune in molti stage aziendali. Ulteriori riconoscimenti sono rivolti all’azienda londinese Krescendo, in particolare al team di eXtraSheet, che ha fornito supporto ed informazioni di carattere tecnico, distinguendosi per competenza e disponibilità. Si ringrazia inoltre l’Ateneo, che è stato un riferimento importante in questi cinque anni, con particolare riguardo a tutti i colleghi di studio e ai relatori del presente elaborato, Prof. Corno e Prof. Cambini, che hanno seguito con disponibilità e professionalità il candidato. Sentiti ringraziamenti sono rivolti alla famiglia, che ha supportato il candidato durante il percorso di studi, fornendo collaborazione e suggerimenti estremamente preziosi. Il candidato dedica il presente elaborato al nonno, Carlo Navone, recentemente scomparso. II Indice Indice SOMMARIO ................................................................................................................... I RINGRAZIAMENTI ......................................................................................................... II INDICE ........................................................................................................................ III ELENCO DELLE TABELLE ........................................................................................... VII ELENCO DELLE FIGURE ............................................................................................... IX 1 2 INTRODUZIONE ...................................................................................................... 1 1.1 Contesto generale.................................................................................................. 1 1.2 Il modello SaaS (Software-as-a-Service) ............................................................... 2 1.3 Le piattaforme di sviluppo ...................................................................................... 4 1.4 Obiettivi della tesi ................................................................................................... 6 GLI OBIETTIVI DEL PROGETTO ................................................................................. 8 2.1 3 L’azienda Cefin Systems Italia ............................................................................... 8 2.1.1 Presentazione generale ................................................................................................ 8 2.1.2 Il mercato di riferimento ............................................................................................... 10 2.1.3 Sateltrack ..................................................................................................................... 10 2.1.4 SaaS e Cefin Systems ................................................................................................ 15 2.2 I contenuti ............................................................................................................ 16 2.3 L’ambito applicativo ............................................................................................. 17 2.4 La piattaforma ...................................................................................................... 18 EXTRASHEET ...................................................................................................... 19 3.1 Panoramica di Krescendo Ltd .............................................................................. 19 3.2 Introduzione ad eXtraSheet ................................................................................. 20 3.2.1 La storia ....................................................................................................................... 20 3.2.2 Le funzionalità applicative standard ............................................................................ 21 3.2.3 L’evoluzione di eXtraSheet .......................................................................................... 23 3.3 Sviluppi e tendenze.............................................................................................. 24 3.4 Architettura Software ........................................................................................... 25 3.4.1 La piattaforma J2EE .................................................................................................... 25 3.4.2 MySQL RDBMS........................................................................................................... 30 III Indice 4 3.4.3 Componenti e librerie Java .......................................................................................... 31 3.4.4 Resin Application Server ............................................................................................. 36 3.4.5 Client side Javascript................................................................................................... 37 3.5 Configurazione Hardware .................................................................................... 38 3.6 Processi di sviluppo e hosting .............................................................................. 39 LE ALTERNATIVE AD EXTRASHEET ........................................................................ 42 4.1 Commerciali ......................................................................................................... 42 4.1.1 4.2 WaveMaker ................................................................................................................. 45 4.2.2 Apache Click ................................................................................................................ 47 4.2.3 OpenXava .................................................................................................................... 47 Open source basati su tecnologie differenti ......................................................... 49 4.3.1 Xataface ...................................................................................................................... 49 4.3.2 VFront .......................................................................................................................... 50 CASI DI STUDIO .................................................................................................... 52 5.1 Applicazione standard di Data Management ........................................................ 52 5.1.1 eXtraSheet ................................................................................................................... 52 5.1.2 WaveMaker ................................................................................................................. 56 5.1.3 VFront .......................................................................................................................... 58 5.1.4 Xataface ...................................................................................................................... 64 5.2 Applicazione per questionari on-line .................................................................... 67 5.2.1 Lo sviluppo su eXtraSheet .......................................................................................... 68 5.2.2 Previsioni per le altre piattaforme ................................................................................ 70 5.3 6 Open source basati analoga tecnologia ............................................................... 45 4.2.1 4.3 5 DabbleDB .................................................................................................................... 42 Applicazione di Web Timesheet ........................................................................... 70 5.3.1 Personal Timesheet..................................................................................................... 71 5.3.2 Timesheet Controller ................................................................................................... 71 5.3.3 Considerazioni ............................................................................................................. 72 BENCHMARKING .................................................................................................. 74 6.1 Confronto dei risultati ........................................................................................... 74 6.1.1 eXtraSheet: professionale e performante ................................................................... 74 6.1.2 VFront: clone PHP di eXtraSheet ................................................................................ 75 6.1.3 WaveMaker: altamente custom e IDE Web ................................................................ 76 6.1.4 Xataface: immediato .................................................................................................... 76 6.2 Metodologia QFD ................................................................................................. 77 IV Indice 6.2.1 Requisiti utente ............................................................................................................ 78 6.2.2 Requisiti di sistema...................................................................................................... 79 6.2.3 Gerarchizzazione caratteristiche tecniche .................................................................. 80 6.2.4 Benchmarking .............................................................................................................. 83 6.3 7 8 Individuazione dei trade-off .................................................................................. 86 MERCATO E STRATEGIA ....................................................................................... 88 7.1 Definizione del mercato e della business idea...................................................... 88 7.2 I potenziali concorrenti ......................................................................................... 89 7.3 I trend del settore ................................................................................................. 90 7.4 La profittabilità: analisi di Porter ........................................................................... 92 7.4.1 Grado della competitività interna ................................................................................. 92 7.4.2 Barriere all’entrata ....................................................................................................... 93 7.4.3 Potere dei fornitori ....................................................................................................... 94 7.4.4 Potere dei clienti .......................................................................................................... 94 7.4.5 Prodotti sostituti ........................................................................................................... 95 7.4.6 Conclusioni .................................................................................................................. 95 7.5 Analisi resource based ......................................................................................... 95 7.6 Strategia di marketing e sales .............................................................................. 96 7.7 Organizzazione prevista....................................................................................... 98 VALUTAZIONI ECONOMICHE ................................................................................ 100 8.1 Scenari selezionati ............................................................................................. 100 8.1.1 Stretta partnership con Krescendo ............................................................................ 100 8.1.2 Soluzione ponderata ................................................................................................. 101 8.1.3 Scenario autonomo ................................................................................................... 102 8.2 Piani di investimento .......................................................................................... 103 8.2.1 Investimenti hardware ............................................................................................... 103 8.2.2 Investimenti software ................................................................................................. 107 8.2.3 Servizi di hosting ....................................................................................................... 108 8.2.4 Costi di avviamento ................................................................................................... 109 8.2.5 Costi del personale .................................................................................................... 110 8.2.6 Altri oneri ................................................................................................................... 110 8.2.7 Differenze tra gli scenari ............................................................................................ 111 8.3 Analisi cash flow e profittabilità .......................................................................... 111 8.3.1 9 Analisi di sensitività ................................................................................................... 118 ANALISI DEI RISCHI E MILESTONE PROGETTUALI ................................................... 121 V Indice 9.1 Fattori critici del progetto .................................................................................... 121 9.2 Valutazione dei rischi ......................................................................................... 121 9.3 Macroattività e tempistiche proposte .................................................................. 126 10 CONCLUSIONI ................................................................................................ 130 10.1 Valutazione critica dei risultati ............................................................................ 130 10.2 Sviluppi futuri ..................................................................................................... 132 BIBLIOGRAFIA.......................................................................................................... 134 VI Elenco delle tabelle Elenco delle tabelle Tabella 3.1 - Esempio di configurazione di una postazione di sviluppo ............................................. 41 Tabella 6.1 - Scala di priorità per i requisiti utente .............................................................................. 78 Tabella 6.2 - Requisiti Utente per la piattaforma Web ........................................................................ 78 Tabella 6.3 - Classificazione delle provided function o caratteristiche tecniche ................................. 80 Tabella 6.4 - Scala impiegata nella Matrice delle Relazioni ................................................................ 81 Tabella 6.5 - Caratteristiche tecniche più rilevanti ricavate dall'applicazione del QFD ....................... 83 Tabella 6.6 - Scala di valutazione per la copertura delle caratteristiche tecniche .............................. 84 Tabella 6.7 - Risultati del benchmarking tra le soluzioni individuate................................................... 86 Tabella 6.8 - Riepilogo risultati del Benchmarking .............................................................................. 87 Tabella 7.1 - Esempio di tariffe per progetto ad hoc di dimensioni ridotte .......................................... 97 Tabella 7.2 - Spese di marketing annue preventivate ......................................................................... 98 Tabella 8.1 - Configurazione hardware proposta per postazione di sviluppo ................................... 103 Tabella 8.2 - Esempio di configurazione hardware già disponibile sul mercato ............................... 104 Tabella 8.3 - Secondo esempio configurazione hardware già disponibile sul mercato .................... 105 Tabella 8.4 - Monitor LCD proposto .................................................................................................. 105 Tabella 8.5 - Configurazione del server interno suggerita da Krescendo ......................................... 106 Tabella 8.6 – Configurazione alternativa del server interno .............................................................. 107 Tabella 8.7 - Investimenti in software ................................................................................................ 108 Tabella 8.8 - Dettaglio del canone mensile di hosting per il server di produzione ............................ 109 Tabella 8.9 - Soluzione alternativa per l’hosting per il server di produzione ..................................... 109 Tabella 8.10 - Costi di avviamento stimati ........................................................................................ 110 Tabella 8.11 - Assunzioni relative al costo del personale ................................................................. 110 Tabella 8.12 - Prospetto costi-benefici - Scenario A ......................................................................... 113 Tabella 8.13 - Cash flow - Scenario A ............................................................................................... 114 Tabella 8.14 - Prospetto costi-benefici - Scenario B ......................................................................... 115 Tabella 8.15 - Cash flow - Scenario B ............................................................................................... 116 Tabella 8.16 - Prospetto costi-benefici - Scenario C ......................................................................... 117 Tabella 8.17 - Cash flow - Scenario C .............................................................................................. 118 VII Elenco delle tabelle Tabella 8.18 - Analisi di sensitività sul tasso di rendimento richiesto ............................................... 119 Tabella 8.19 - Analisi di sensitività sui ricavi previsti......................................................................... 119 Tabella 8.20 - Analisi di sensitività sul tasso di crescita dei profitti ................................................... 120 Tabella 9.1 - Criteri considerati per l'analisi dei rischi ....................................................................... 124 Tabella 9.2 - Prospetto di analisi dei rischi di progetto ..................................................................... 125 Tabella 9.3 - Schedulazione proposta delle macroattività ................................................................ 128 VIII Elenco delle figure Elenco delle figure Figura 2.1 - Cefin Romania ................................................................................................................... 8 Figura 2.2 - Le società del gruppo Cefin ............................................................................................... 9 Figura 2.3 - Le funzionalità di Sateltrack ............................................................................................. 11 Figura 2.4 - Sateltrack, alcuni screenshot dell’interfaccia Web .......................................................... 12 Figura 2.5 - Sateltrack, funzionalità di reporting disponibili sull'interfaccia Web ................................ 13 Figura 2.6 - Uno schema introduttivo sul funzionamento di Sateltrack ............................................... 14 Figura 3.1 - Schema semplificato dell'architettura di eXtraSheet ....................................................... 25 Figura 3.2 - Applicazioni multilivello in J2EE ....................................................................................... 26 Figura 3.3 - Client tier (componenti lato client) in J2EE ...................................................................... 27 Figura 3.4 - Web tier in J2EE .............................................................................................................. 28 Figura 3.5 - Business tier in J2EE ....................................................................................................... 29 Figura 3.6 - Ruolo dei J2EE container ................................................................................................ 30 Figura 3.7 - Le caratteristiche del framework uView ........................................................................... 33 Figura 3.8 - L'architettura di uView ...................................................................................................... 34 Figura 3.9 - Schema dell'infrastruttura hardware di eXtraSheet ......................................................... 39 Figura 4.1 - Interfaccia Web di Dabble DB .......................................................................................... 44 Figura 4.2 - Stima del traffico mensile negli U.S. per Dabble DB ....................................................... 44 Figura 4.3 - L'architettura di WaveMaker ............................................................................................ 46 Figura 5.1 - Pagina principale di Sateltrack Admin su eXtraSheet ..................................................... 53 Figura 5.2 - Pagina di creazione di uno sheet su eXtraSheet ............................................................. 53 Figura 5.3 - Form di data-entry su eXtraSheet .................................................................................... 54 Figura 5.4 - Elenco delle liste predefinite su eXtraSheet .................................................................... 55 Figura 5.5 - Gestione delle liste predefinite su eXtraSheet ................................................................. 55 Figura 5.6 – Gestione dei gruppi di utenti su eXtraSheet ................................................................... 55 Figura 5.7 - Creazione di una vista sul database in Wavemaker........................................................ 57 Figura 5.8 - WaveMaker Visual AJAX Studio...................................................................................... 57 Figura 5.9 - Sateltrack Admin realizzata con WaveMaker .................................................................. 58 Figura 5.10 - Configurazione delle permission sulla tabella in VFront ................................................ 60 IX Elenco delle figure Figura 5.11 - Configurazione dei campi in VFront............................................................................... 61 Figura 5.12 - Pagina principale di Sateltrack Admin (VFront) ............................................................. 62 Figura 5.13 - Form di data-entry in VFront .......................................................................................... 63 Figura 5.14 - Grid view in VFront ........................................................................................................ 64 Figura 5.15 - Visualizzazione standard dei record in Xataface ........................................................... 66 Figura 5.16 - Xataface, form di inserimento o editing ......................................................................... 67 Figura 5.17 - Questionario (parziale) realizzato su eXtraSheet per la valutazione del personale ...... 68 Figura 5.18 - Report (parziale) relativo alle valutazioni ricevute da una divisione aziendale ............. 69 Figura 5.19 - Funzionalità di Personal Timesheet .............................................................................. 71 Figura 5.20 - Funzionalità di Timesheet Controller ............................................................................. 72 Figura 6.1 - QFD: la matrice delle relazioni ......................................................................................... 82 Figura 6.2 - Rappresentazione grafica dei risultati del Benchmarking ............................................... 86 Figura 7.1 - Performance in termini di ricavi del mercato SaaS (Gartner 2009) ................................. 92 Figura 7.2 - Organizzazione proposta per la nuova divisione ............................................................. 99 Figura 8.1 - Calcolo del VAN - Scenario A ........................................................................................ 114 Figura 8.2 - Calcolo del VAN - Scenario B ........................................................................................ 116 Figura 8.3 - Calcolo del VAN - Scenario C........................................................................................ 118 Figura 8.4 - Break-even sui ricavi previsti ......................................................................................... 119 Figura 9.1 - Il processo di risk management ..................................................................................... 123 Figura 9.2 - Diagramma di GANTT risultante dalla schedulazione ................................................... 129 X Introduzione 1 Introduzione 1.1 Contesto generale Le tendenze IT sono indubbiamente orientate al Web, che ha ormai raggiunto e superato la soglia psicologica del ―2.0‖. Social network, applicazioni ibride ―mash-up‖, E-Commerce, wiki, Open Source e accesso con dispositivi mobili sono forse gli esempi più rilevanti delle attuali applicazioni, rendendo il Web sempre più interattivo e fruibile ma, al contempo, ampliandone la sua complessità. Se i casi citati risultano ben noti, non sono altrettanto evidenti, soprattutto al ―grande pubblico‖, i risvolti e le nuove evoluzioni nell’ambito dei sistemi informativi aziendali, sotto gli aspetti strategici ed operativi. L’introduzione sempre più rapida sul mercato di nuove tecnologie dell’informazione e della comunicazione (ICT) fornisce alle imprese molteplici opportunità per supportare le proprie attività di business, offrendo sostanziali benefici, quali incrementi di produttività, efficienza negli scambi informativi, riduzione dei costi e miglioramenti della qualità o dei livelli di servizio. Le tecnologie Web, che condividono l’infrastruttura ed i protocolli di comunicazione di Internet, hanno riscosso notevoli attenzioni anche nel settore business, inducendo le imprese ad investire sempre più massicciamente in sistemi informativi Web-based (anche noti come Web-based Information System, WBIS), considerati la nuova generazione di sistemi informativi. La notevole diffusione dei protocolli Web consente una riduzione dei costi di infrastruttura e di manutenzione del software che impiega queste tecnologie. Inoltre, le applicazioni che sfruttano il Web come mezzo di connessione possono essere distribuite su più apparati hardware e possono venire condivise agevolmente da molti utenti, riducendo al minimo i problemi di compatibilità. Per queste ragioni, molte organizzazioni sono in fase di conversione dei propri sistemi informativi, per ricondurli ad architetture Web o per consentirne l’integrazione con le nuove tecnologie distribuite. Le applicazioni Web si presentano attraverso un’interfaccia grafica spesso molto standard che consente agli utenti l’interazione e l’accesso a diverse fonti di dati e applicazioni. Infatti, attraverso un comune Web-broswer, l’utente può accedere a qualunque applicazione Web e le modalità di interazione (operazioni di login, utilizzo di link, compilazione di form, etc.) sono oggi altamente comuni e standardizzate. Le difficoltà di utilizzo di un sistema informativo Web-based sono quindi estremamente ridotte rispetto ad uno tradizionale, poiché risulta maggiormente user-friendly per l’utente che è immediatamente in grado di interagire con esso: si elimina così la fase di apprendimento basilare e l’utente può focalizzarsi direttamente sulle funzionalità specifiche dell’applicazione. Un ulteriore aspetto che caratterizza il settore business è il probabile incremento del volume di dati: un’analisi della società di ricerca Gartner afferma che crescerà di circa il 650% nei prossimi cinque anni e avrà costi elevati se non gestita con tecnologie adeguate, ad esempio con la stratificazione in 1 Introduzione più livelli (tiering) dello storage, che comporta l’archiviazione intelligente dei dati in base alla rilevanza e alla frequenza di consultazione. In questo scenario, è prevista una crescita della complessità delle applicazioni Web e, al contempo, la necessità di realizzare soluzioni in tempi ridotti, secondo il paradigma ―la tecnologia a servizio del business‖. La conseguenza più verosimile risulterà la centralizzazione e spesso l’esternalizzazione dello sviluppo, ricorrendo a soluzioni SaaS o, più in generale, di Cloud computing: immediate, distribuite, accessibili, affidabili, all-inclusive. 1.2 Il modello SaaS (Software-as-a-Service) Le tradizionali divisioni IT aziendali sono attualmente in fase regressiva: fenomeni quali la complessità, la manutenzione e la sicurezza del software, inducono molte aziende ad esternalizzare i servizi informatici e tecnologici, ricorrendo alle numerose soluzioni offerte da aziende specializzate. Tra queste, viene spesso richiesta la completa gestione del sistema informativo aziendale, dallo sviluppo alla manutenzione, rendendolo usufruibile dal cliente tramite la rete Internet. Si provvederà di seguito a delineare pregi e difetti di tale soluzione, che probabilmente troverà sempre maggiore diffusione nella fornitura di servizi informatici. Il modello SaaS (Software-as-a-Service), in passato più noto con l’acronimo ASP (Application Service Provider), è attualmente l’approccio predominante e sta riscontrando una vasta diffusione nella fornitura di soluzioni informatiche in qualunque ambito. Infatti, la riduzione progressiva dei costi di connessione a banda larga e i notevoli risparmi in infrastruttura hardware, spingono molti clienti business ad adottare soluzioni ASP. SaaS è una tecnologia che permette di accedere a soluzioni software attraverso Internet ed utilizzare gli applicativi a fronte del pagamento di un canone. Il software offerto usando il modello SaaS è spesso chiamato software "on demand" o software come servizio. L’esigenza di un sistema SaaS ha avuto origine con l'aumento dei costi di software specifici che hanno fortemente superato le capacità di spesa di attività medio-piccole. Al contempo, la sempre maggior complessità del software ha determinato una crescita dei costi di distribuzione agli utenti finali. Attraverso il modello SaaS, le complessità e i costi di tali software possono essere ridotti sensibilmente. Inoltre i problemi di aggiornamento dei software non coinvolgono più l'utente finale ma sono effettuati a cura del fornitore. Quest’ultimo garantisce un servizio sempre disponibile e spesso un supporto tecnico del tipo 24 x 7 e sicurezza fisica e informatica. Le caratteristiche principali associate al sistema SaaS sono: 1) il fornitore possiede completamente gli applicativi software e ne garantisce il funzionamento; 2) il fornitore possiede, mantiene e assicura il funzionamento dei componenti hardware e dei server su cui sono installati gli applicativi; 2 Introduzione 3) il fornitore rende disponibili le funzionalità del software ai clienti attraverso la rete Internet e un comune browser o eventualmente installando applicativi molto leggeri sui client (―thin client‖); 4) la fatturazione avviene in base all’effettivo utilizzo dell’applicativo oppure secondo canoni mensili o annuali. I vantaggi principali che ne conseguono sono: nessun problema di compatibilità del software client-side poiché la fruibilità tramite Web browser non richiede alcun software da installare; i costi del software sono distribuiti su tutti i clienti (in caso di applicazioni standard); i fornitori possono maturare più esperienza ed efficienza rispetto ad uno staff IT aziendale; il software è mantenuto aggiornato, sempre disponibile e gestito da esperti per ottenere le migliori performance; migliore affidabilità, disponibilità e scalabilità rispetto a sistemi informativi interni; maggiore sicurezza fisica ed informatica (back-up periodici dei dati, dispositivi antincendio, sistemi antintrusione, ecc.); livelli di servizio prefissati sulla base dei SLA (Service Level Agreement) contrattati tra cliente e fornitore del servizio; costi IT interni ridotti e facilmente prevedibili per il cliente (spesso sono canoni mensili fissi), con possibilità di re-impiegare personale e capitale per focalizzarsi su attività "core" dell'azienda; il cliente ha la possibilità di utilizzare il software da un numero illimitato di postazioni senza costi aggiuntivi; assistenza qualificata e garantita in modo continuativo. Alcuni svantaggi relativi sono: Il cliente deve generalmente accettare l'applicazione "così com'è" perché il fornitore ASP non può realizzare soluzioni personalizzate per soddisfare le esigenze clienti specifici. Il cliente che necessita una funzione aggiuntiva non ha alcuna garanzia che essa venga effettivamente implementata dal fornitore. Normalmente vengono sviluppate solo funzionalità richieste da un elevato numero di clienti e facilmente standardizzabili. L'integrazione con le altre applicazioni Legacy del cliente può risultare problematica. 3 Introduzione 1.3 Le piattaforme di sviluppo Le piattaforme più diffuse in ambito di applicazioni Web, senza entrare per ora nei dettagli, possono essere definite come l’insieme delle tecnologie, prevalentemente software, che permettono di sviluppare il software ed erogarlo tramite il canale Web. In generale, una piattaforma comprende diversi moduli software e più linguaggi di programmazione, poiché le odierne applicazioni Web prevedono la dinamicità (capacità di elaborazione) sia del client, sia del server. Questa soluzione permette di migliorare l’interazione tra utente e sistema, consente un accesso adeguato ai dati ed alle applicazioni ed è indispensabile per lo sviluppo di applicazioni aziendali basate sugli standard Internet. Le tecnologie di programmazione lato client sono altamente standardizzate, dovute alla necessità di avere la massima compatibilità sui client che sono potenzialmente molto numerosi e dispongono unicamente di un browser Web per usufruire dell’applicazione. Per la presentazione vengono impiegati i linguaggi di markup HTML/XHTML e il linguaggio di scripting Javascript per l’elaborazione lato client, a cui sono talvolta affiancati componenti più complessi, quali applet Java o MS ActiveX. Mentre le elaborazioni lato client sono spesso ridotte e con il solo scopo di aumentare le potenzialità interattive dell’applicazione, l’elaborazione lato server è solitamente molto complessa. Le principali alternative risultano essere: - CGI (Common Gateway Interface): è la soluzione meno recente e consiste in un protocollo per interfacciare un’applicazione esterna (scritta in qualunque linguaggio di programmazione) con un Web server. Al momento della richiesta dell’utente (tramite browser), il Web server attiva l’applicazione esterna passando eventuali parametri e restituisce i risultati ottenuti (che devono già essere in formato Web) al client. Questo paradigma è oggi obsoleto, poiché non prevede meccanismi di condivisione delle risorse, non esistono i concetti di sessione e transazione e non vi è separazione tra elaborazione e presentazione (formattazione ―annegata‖ nel codice). CGI risulta quindi inadatto per applicazioni con molti utenti, attivi simultaneamente che richiedono bassi tempi di risposta. - PHP (Hypertext Preprocessor): pur essendo un linguaggio di scripting lato server, può essere paragonato ad una vera piattaforma, abbinato al Web server Apache e al database MySQL. È largamente impiegato in qualunque genere di applicazioni Web, da semplici siti dinamici (in cui è pressoché uno standard de-facto) ad applicazioni Enterprise. Essendo Open Source (licenza PHP), sono disponibili innumerevoli estensioni, script e librerie che rendono questa piattaforma altamente versatile, supportata e semplice da utilizzare. - ASP e ASP.NET: tecnologie proprietarie Microsoft, disponibili con i server IIS (Internet Information Services); ASP è ormai in disuso poiché utilizza linguaggi interpretati, è scarsamente scalabile e non offre molte funzionalità richieste dalle odierne applicazioni Web. ASP.NET risulta invece più performante, è basato sul framework di Microsoft .NET, prevede la precom- 4 Introduzione pilazione delle pagine dinamiche e fornisce ambienti di sviluppo (anch’essi proprietari) completi. - Java Platform: la piattaforma Java (anche conosciuta come J2EE per la versione Enterprise e J2SE per quella Standard) presenta un’architettura complessa ma è certamente all’avanguardia per la strutturazione e lo sviluppo di applicazioni Web performanti e scalabili. Come sarà approfondito in seguito, utilizza gli oggetti Servlet, che permettono di elaborare una richiesta senza creare un nuovo processo, ma solo di un thread all’interno dell’application server. Il lato presentazione viene gestito mediante le Java Server Pages (JSP), che sono pagine HTML contenenti del codice Java che viene eseguito sulla piattaforma server. La prima volta che la pagina è richiamata viene tradotto il codice sorgente Java e la pagina viene compilata sotto forma di Servlet, memorizzata su disco e eseguita; alle successive richieste verrà immediatamente eseguita. La piattaforma Java è distribuita quasi interamente con licenza Open Source e vi sono numerosi framework e librerie disponibili con la medesima licenza. - Ruby on Rails: è un framework open source per lo sviluppo rapido di applicazioni Web che utilizza il linguaggio interpretato Ruby. Implementa le moderne tecniche di sviluppo ed è compatibile con numerosi Web server. Ha raggiunto la notorietà negli ultimi due anni grazie alla compattezza del linguaggio e alla sua configurazione minimale. A livello di piattaforma software, senza considerare i framework di livello superiore, non esiste una soluzione migliore: è necessario considerare almeno quattro criteri di valutazione: scalabilità, rapidità di sviluppo, facilità di manutenzione e disponibilità di strumenti di sviluppo. Effettuare una comparazione tecnica in questa sede risulterebbe superficiale e ci si limita a fornire alcune osservazioni di carattere pratico. Le piattaforme attualmente più diffuse sono PHP e Java, la prima tendenzialmente più rivolta a progetti di dimensioni limitate mentre la seconda è più impiegata per lo sviluppo di soluzioni più complesse e talvolta ―mission critical‖. La piattaforma Java prevede infatti un’architettura più articolata e lo sviluppo richiede spesso tempi e risorse superiori rispetto a PHP. Si stima che i tempi di sviluppo in Java trovino una riduzione del 30% impiegando PHP e arrivano al 50% con Ruby on Rails. Altre fonti indicano che circa il 90% delle applicazioni Web può essere sviluppata più agevolmente in PHP e senza determinare differenze percepibili rispetto ad uno sviluppo su J2EE. In conclusione, le tecnologie attualmente più consolidate in ambito Web risultano Java e PHP; Microsoft conserva una fetta di mercato apprezzabile anche se la piattaforma proprietaria e la limitata interoperabilità ne penalizzano la diffusione; le piattaforme più recenti, quale Ruby on Rails, risultano ancora scarsamente diffuse e, al momento, non richiamano le attenzioni del settore Enterprise. 5 Introduzione 1.4 Obiettivi della tesi La presente Tesi di Laurea si propone molteplici obiettivi che risultano tuttavia classificabili in due categorie differenti. La prima, di carattere maggiormente tecnologico, è rivolta all’individuazione delle best practice emergenti nelle moderne applicazioni Web di classe Enterpise e la ricerca delle migliori alternative attualmente disponibili. La seconda parte è invece destinata alla valutazione dell’impatto economico e organizzativo sostenuto da un’impresa che volesse avviare la fornitura di alcune delle soluzioni individuate. Nella prima parte, si vuole indagare nel dettaglio sulla disponibilità di soluzioni che permettano lo sviluppo rapido (o quasi immediato) di applicazioni Web, senza inizialmente avere la necessità di sviluppare codice ma con la possibilità di farlo in un secondo momento, qualora le funzionalità standard fossero insufficienti a coprire le esigenze. Si vuole quindi sondare quali siano le alternative in grado di realizzare applicazioni di data management tramite un front-end (possibilmente anch’esso Webbased) oppure con semplici operazioni che non richiedano competenze di programmazione avanzate, ma possano anche venire svolte da analisti funzionali o altre figure professionali che necessitino di semplici applicazioni per supportare processi aziendali. In sostanza, non si vuole condurre un’analisi sulle piattaforme software di cui al paragrafo precedente, bensì ricercare e valutare soluzioni ―out of the box‖ o framework di alto livello per una rapida realizzazione di applicazioni Web, che possano tuttavia venire agevolmente personalizzate (o integrate con moduli sviluppati completamente ad hoc) da sviluppatori più esperti con un effort contenuto. Il presente elaborato si pone l’obiettivo di rispondere alle seguenti domande: quali sono le caratteristiche e la complessità delle attuali applicazioni Web aziendali? Sono disponibili piattaforme per il problem solving, che permettano di creare applicazioni con limitato ricorso allo sviluppo di codice? Quali sono gli effort richiesti per commercializzare soluzioni realizzate con tali strumenti? Il secondo genere di obiettivi è invece quello di determinare quali siano le competenze necessarie alla creazione di una organizzazione rivolta allo sviluppo delle applicazioni Web con le migliori tecnologie individuate nella prima fase, se sia realmente possibile disporre di un team di sviluppo molto più limitato. Inoltre si vuole esplicitare quali siano le esigenze e le tendenze del mercato e determinare le caratteristiche dell’investimento, mediante la stesura di un ridotto Business Plan. Sebbene le due componenti possano apparire disgiunte, sono in realtà interdipendenti poiché molti aspetti legati alla scelta della piattaforma e delle soluzioni tecnologiche hanno risvolti gestionali ed economici, influenzando, ad esempio, le caratteristiche dell’investimento e le competenze richieste al personale; viceversa gli aspetti commerciali caratterizzano la scelta della piattaforma informatica, che sarà effettuata in base alle caratteristiche del segmento di mercato prescelto. Le finalità della presente tesi corrispondevano con l’opportunità offerta dall’azienda Cefin Systems Italia, che prevedeva lo svolgimento di un progetto per la creazione una nuova Business Line in ambito SaaS per applicazioni Web personalizzate. La soluzione che verrà maggiormente presa in esa- 6 Introduzione me sarà quella offerta dall’azienda Krescendo, poiché è stata studiata in dettaglio durante lo stage del candidato, ma verranno analizzate alcune alternative, soprattutto open source. Nel prossimo capitolo si provvederà a fornire il background dell’azienda Cefin Systems e una precisa definizione del progetto proposto. 7 Gli obiettivi del progetto 2 Gli obiettivi del progetto 2.1 L’azienda Cefin Systems Italia 2.1.1 Presentazione generale Cefin Systems Italia è una società del gruppo Cefin, che con circa 900 dipendenti, più di 100 milioni di Euro di fatturato e sedi in Italia, Svizzera, Romania, Ungheria e Bulgaria costituisce una delle più significative realtà multinazionali a capitale italiano in grado di fornire ed integrare prodotti e servizi professionali nel settore dei veicoli industriali, commerciali e della mobilità. Il gruppo Cefin è cresciuto in questi anni fino a diventare una delle realtà più significative a livello mondiale nella vendita di veicoli Iveco. Il portafoglio di offerta del gruppo Cefin si estende dalla vendita di veicoli industriali e commerciali ai servizi di assistenza post-vendita ad essi collegati fino ai servizi finanziari. Recentemente le attività del gruppo hanno trovato ulteriori sbocchi anche nel settore immobiliare e delle costruzioni con la società Cefin Real Estate. Figura 2.1 - Cefin Romania Le aziende principali che fanno parte del gruppo sono: 1) Cefin Bulgaria, Cefin Romania e ETS Ungheria (appartengono al settore del trasporto su gomma e relativi servizi: vendita del veicolo e accessori, officine, servizio di assistenza stradale, costruzione di veicoli speciali, mezzi agricoli…). 8 Gli obiettivi del progetto 2) Cefin Systems Romania e Cefin Systems Italia, le aziende ICT del gruppo. Nella sede italiana sono accentrate le central functions, cioè le attività maggiormente strategiche e decisionali. 3) Cefin Real Estate Romania e Cefin Real Estate Italia (operano nel settore della costruzione immobiliare e costituiscono circa il 50% di fatturato del gruppo). Le attività principali del gruppo sono concentrate in paesi che negli anni passati erano caratterizzati da una elevata domanda dovuta alla situazione economica di forte crescita. I recenti sviluppi economico-finanziari internazionali hanno determinato una crisi particolarmente accentuata nell’est europeo, ma il gruppo Cefin ha dimostrato solidità e ottime doti manageriali per fronteggiarla, quando invece molti concorrenti riscontravano difficoltà molto più gravi. Figura 2.2 - Le società del gruppo Cefin Attorno al nucleo costituito da Cefin Group orbitano anche una serie di aziende partner che commercializzano i prodotti e le soluzioni del gruppo, trattenendo delle percentuali sul prezzo di vendita. Cefin Systems è l’azienda di servizi di Information & Communication Technology del gruppo Cefin, che valuta gli investimenti in tecnologia per tutto il gruppo ed è specializzata nella fornitura di applicazioni Web-based di Vehicle and Fleet Management, con il prodotto Sateltrack. Le soluzioni di Cefin Systems sono focalizzate sulla telematica come valore aggiunto nei processi di business dei propri clienti e di tutti gli attori della catena del valore dei veicoli industriali, commerciali ed autovetture (dal costruttore del veicolo fino all’utilizzatore finale). 9 Gli obiettivi del progetto Cefin Systems opera direttamente in Italia ed in Romania e, attraverso una rete di partner commerciali, nei principali paesi dell’Europa Occidentale ed Orientale. Mentre la società rumena è prevalentemente rivolta alla commercializzazione, supporto e assistenza del prodotto Sateltrack, la società italiana si occupa degli aspetti strategici relativi all’evoluzione del prodotto Sateltrack, dello sviluppo di nuove soluzioni e della fornitura di servizi di consulenza ICT. 2.1.2 Il mercato di riferimento Cefin Systems concentra il suo core business nel fornire una piattaforma Web multi-funzionale, una gamma di prodotti telematici d’avanguardia, soluzioni standardizzate e progetti "ad hoc". Un portafoglio di servizi professionali per portare efficienza nel settore dei trasporti, della logistica e della mobilità veicolare. Il prodotto Sateltrack è quindi il prodotto core dell’azienda, attraverso il quale detiene una notevole clientela internazionale ed una reputazione altamente qualificata. I clienti principali sono business (anche se Sateltrack è proposto a livello consumer, nella variante Sat-Family) che hanno la necessità di controllare in maniera precisa la propria flotta di veicoli. Tra di essi, vi sono società di car-rental e car-sharing, ditte di autotrasporti, corrieri espresso e aziende che gestiscono la raccolta rifiuti con centinaia di mezzi. Oltre al prodotto Sateltrack, Cefin Systems offre una serie di servizi di consulenza principalmente in ambito ICT per aziende che non dispongono delle competenze necessarie oppure desiderano affidare in outsourcing alcune attività. Tra di esse vi è l’analisi e la re-ingegnerizzazione di processo, il software design, la stesura di specifiche funzionali e svariati servizi di project management. Infine, Cefin Systems ha recentemente attivato un accordo con la società Krescendo, a cui viene già commissionato lo sviluppo del codice per Sateltrack, per la commercializzazione del prodotto eXtraSheet, di cui si parlerà in seguito, essendo parte centrale dell’elaborato. 2.1.3 Sateltrack Sateltrack è senza dubbio il prodotto principale dell’azienda Cefin Systems. Può essere sinteticamente definito come un sistema per la gestione di flotte di veicoli (fleet management): è una piattaforma informatica basata su Internet per la raccolta, l'elaborazione, la gestione e la distribuzione di dati di percorrenza e di funzionamento relativi ai veicoli del cliente. Sateltrack è erogato in modalità SaaS (Software-as-a-Service) – meglio analizzata in seguito – per consentire al cliente una riduzione degli investimenti in infrastruttura e dei costi di esercizio e manutenzione a fronte di livelli di servizio concordati e personalizzabili. Il sistema Sateltrack permette di controllare perfettamente i mezzi in termini di posizione e di dati di percorrenza. Il principale obiettivo di un cliente di Sateltrack è quindi di monitorare lo stato e la posi10 Gli obiettivi del progetto zione della flotta, talvolta anche al fine di fronteggiare furti del mezzo o di carburante (in casi di emergenza è possibile creare un canale di comunicazione diretto con il device del veicolo e tracciarne esattamente la posizione). L’utente più avanzato adotta Sateltrack per effettuare in maniera ottimale le assegnazioni delle missioni tra i vari veicoli disponibili. Sateltrack permette di realizzare una ottimizzazione di processo nel settore dei trasporti, molti clienti lo adottano anche per le sue capacità di reporting e di controllo continuo sui veicoli della flotta. Il sistema è programmato totalmente in Java ed utilizza Open Standard e linguaggi per la programmazione Cross-Platform. L’intento è minimizzare la dipendenza dai produttori di software e hardware. Grazie ai Web Service già disponibili, la piattaforma Sateltrack è interfacciabile con i più diffusi sistemi ERP di gestione aziendale e con applicazioni informatiche di terze parti. La disponibilità di un modulo cartografico evoluto consente inoltre l’interfacciamento con i database georeferenziati dei principali fornitori globali e locali di cartografia. Tutte le componenti della piattaforma Sateltrack sono attualmente installate su un cluster di server Linux (Database, Application e Map Server) in esercizio presso Above Net, un centro di hosting professionale basato nella ―Docks Area‖ di Londra, dal quale vengono erogati servizi applicativi in modalità ASP (Application Service Providing). Figura 2.3 - Le funzionalità di Sateltrack La comunicazione con il veicolo è effettuata da un dispositivo da installarsi a bordo (device), alimentato dall’impianto elettrico del mezzo ed in grado di acquisire segnali (es. avvio del motore, apertura porte, ...); per alcuni veicoli è possibile ottenere informazioni provenienti dalla centralina: il sistema più avanzato è quello di servirsi della rete di comunicazione CAN (Controller Area Network) del vei- 11 Gli obiettivi del progetto colo, da cui si ricava una ampia varietà di dati quali i giri motore, la velocità istantanea, il consumo, il carico e molte altre grandezze. Le informazioni basilari tra cui posizione, velocità, chilometri totali e altre, riportate nel modulo di Sateltrack ―Vehicle Usage‖, sono disponibili per ogni automezzo. Per le informazioni più specifiche relative a determinati sensori, raccolte nel modulo ―Vehicle Performances‖, la disponibilità dei dati è subordinata alla dotazione del veicolo. Infatti praticamente ogni automezzo viene attualmente prodotto con inclusi alcuni sensori collegati alla propria centralina elettrica. Come già preannunciato, quest’ultima ha già predisposta un’uscita alla quale può essere interfacciato un device. Qualora non fosse possibile il collegamento con la centralina, il cliente riceverà per il veicolo in questione solamente le informazioni basilari. Inoltre, ai device più evoluti è possibile collegare fino a sette dispositivi esterni da monitorare quali, ad esempio, sensori di temperatura o prese di forza (PTO). Figura 2.4 - Sateltrack, alcuni screenshot dell’interfaccia Web 12 Gli obiettivi del progetto Figura 2.5 - Sateltrack, funzionalità di reporting disponibili sull'interfaccia Web 13 Gli obiettivi del progetto La frequenza di campionamento del device è definita durante il processo di installazione, e modificabile solo tramite un intervento dell’installatore. I dati campionati vengono memorizzati in un buffer ed inviati con una frequenza che è minore di quella di campionamento (ogni invio di dati tramite la rete di telefonia mobile è soggetto a tariffazione). Inoltre il device si avvale delle seguenti tecnologie: GSM/GPRS: il device contiene una comune SIM card di un operatore telefonico del tipo machine-tomachine, quindi non per la telefonia tradizionale ma per la trasmissione dati. GPS: il device dispone di un ricevitore GPS integrato, permettendo la localizzazione del veicolo sfruttando il sistema satellitare GPS che garantisce un errore estremamente ridotto (minore di 15 m). Il device di bordo è programmato per effettuare determinate operazioni all’accadimento di alcuni eventi, ad esempio l’invio dei dati motore ogni volta che si arresta il motore del veicolo oppure l’invio della posizione GPS ogni una determinata distanza percorsa. Uno schema semplificato del funzionamento di Sateltrack, è il seguente: Figura 2.6 - Uno schema introduttivo sul funzionamento di Sateltrack Il dispositivo invia al gateway le informazioni attraverso i canali GSM; normalmente si utilizza la tecnologia GPRS mentre gli altri canali (GSM data-call e SMS) sono usati solo in caso di indisponibilità (mancata copertura locale) del GPRS. Infatti quest’ultimo sistema garantisce dei costi di trasmissione decisamente bassi (la tariffazione è in base al traffico generato). Il gateway decodifica, analizza e trasforma le informazioni in un formato idoneo (derivato dal linguaggio XML) per inviarle alla ―coda dei messaggi‖ di Sateltrack, la message queue. Ogni comunicazione verrà quindi associata al veicolo corretto e i dati relativi inseriti nel DB. Gli utenti hanno a disposizione il sito Web www.sateltrack.com e, inserendo username e password assegnati alla stipula del contratto, accedono alle pagine Web in cui è visualizzato lo stato della flotta. Tra le tante informazioni riportate, è possibile ottenere, per ogni mezzo, informazioni dettagliate e aggiornate sulla posizione, la distanza percorsa, tempo impiegato, consumi carburante… 14 Gli obiettivi del progetto Il prodotto Sateltrack è estremamente flessibile: a seconda del cliente si offrono, pur rimanendo l’applicativo di base invariato, funzionalità specifiche e interfacce diverse. Sateltrack è considerato dall’azienda un prodotto maturo ma la sua evoluzione è seguita continuamente. Inoltre, i clienti di Sateltrack possono disporre di un helpdesk gestito dal personale di Cefin Systems. 2.1.4 SaaS e Cefin Systems Cefin Systems non gestisce internamente i server di Sateltrack (es. Application/DB server) affidandoli in Hosting ad Above Net, un Internet Data Center professionale, presso il centro nell’area Docks di Londra (UK). AboveNet possiede 23 data center localizzati in Nord America, Europa e Asia. Ogni data center è collegato direttamente all'architettura globale di AboveNet, composta da una rete dedicata in fibra ottica che si estende per il globo terrestre. Seppur l’impegno economico per l’hosting dei server presso un centro specializzato sia notevole, Cefin Systems ha adottato questa soluzione per i vantaggi e le garanzie che vengono offerte. Le principali sono le seguenti: 1) L'IDC è dotato di sistemi di protezione da intrusioni ostili con sistemi di allarme che coprono tutto l'edificio (tetto compreso) e di un sistema automatico di segnalazione delle anomalie. L'accesso ai locali dell'IDC è permesso solo al personale autorizzato ed è regolato attraverso pass elettronici che permettono accessi selettivi alle varie aree. 2) L'IDC è dotato di sistemi anti-allagamento e anti-incendio, sorveglianza armata per 24 ore al giorno, 365 giorni l'anno, impianti di stabilizzazione e di continuità dell'energia elettrica. La rete elettrica che fornisce una potenza di 1000 Kwh è protetta da un gruppo elettrogeno e da un sistema di batterie ridondato, per prevenire qualsiasi interruzione. 3) L'IDC eroga servizi di back-up con frequenza giornaliera (o maggiore), in grado di assicurare al Cliente la copia dei propri archivi di dati con disponibilità degli stessi fino a 30 giorni antecedenti, nonché servizi di ripristino (recovery) degli archivi. Ritornando ai servizi offerti da Cefin Systems, quanto detto in generale per SaaS rimane valido ma sono necessarie alcune precisazioni. Sateltrack prevede la fruibilità completa attraverso browser standard e non necessita alcuna installazione di leggeri applicativi lato client (dove viene utilizzato esclusivamente JavaScript). La compatibilità con tutti i browser non è assicurata al 100% ma, per i più diffusi (Internet Explorer, Mozilla Firefox e Netscape), il funzionamento del servizio è garantito. Viene inoltre offerta la possibilità di interfacciare applicativi specifici del cliente, ad esempio attraverso le API XML. 15 Gli obiettivi del progetto In merito alla fatturazione del servizio, sono previsti canoni periodici indipendenti dall’utilizzo, tipicamente a cadenza mensile. Infine Cefin Systems tende ad implementare anche le funzionalità specifiche richieste dal cliente (purché ragionevoli) e, in base alla previsione di re-impiego per altri clienti, gli verranno fatturate in maniera variabile le spese di implementazione. 2.2 I contenuti Al momento della presentazione del progetto, Cefin Systems evidenziava l’intenzione di avviare una nuova linea di business dedicata allo sviluppo di applicazioni Web, costituendo un team di sviluppo interno in grado di realizzare con rapidità le soluzioni specifiche richieste dal mercato. Sino ad ora, l’azienda non disponeva delle competenze per lo sviluppo di software e, come avveniva per Sateltrack, si limitava a fornire le specifiche per l’implementazione alla società inglese Krescendo Ltd, con la quale aveva instaurato una partnership consolidata. Proprio l’azienda Krescendo aveva proposto alcuni anni prima a Cefin Systems di collaborare per la commercializzazione della piattaforma eXtraSheet. Questa, pur avendo alcune affinità con Sateltrack (era sviluppata con tecnologie simili ed erogata anch’essa in modalità SaaS), risultava profondamente differente, poiché consisteva in un prodotto general purpose, altamente flessibile e indicata per realizzare applicazioni Web con rapidità e senza la necessità di sviluppare codice ad hoc. A partire dall’anno 2006, Cefin Systems aveva intrapreso l’utilizzo di eXtraSheet internamente, ad esempio per gestire in modo intelligente i dati relativi alle installazioni dei device per Sateltrack sui veicoli e le loro certificazioni. In seguito, ne intraprese la commercializzazione verso alcune aziende del gruppo, principalmente a quelle operanti in Romania, con risultati positivi, anche grazie al background del personale dell’azienda, abile nell’analisi dei processi e nella mappatura funzionale del software che li avrebbe supportati. I vantaggi di eXtraSheet sussistevano nella rapidità di sviluppo (che non richiedeva competenze avanzate) e setup dell’applicazione, la quale risultava di facile utilizzo e offriva unicità dell’informazione. Come verrà approfondito nei paragrafi seguenti, Cefin Systems riscontrava però una sistematica necessità di personalizzazione che non era più possibile soddisfare mediante la GUI di configurazione dell’applicazione, ma richiedeva talvolta lo sviluppo di limitate porzioni di codice, che l’azienda avrebbe dovuto nuovamente demandare a Krescendo. In questo scenario, il management aziendale era consapevole che, qualora fosse aumentato il numero di progetti di quel tipo basati su eXtraSheet, sarebbe risultato difficoltoso e poco conveniente continuare a gestire le modifiche e le personalizzazioni di ogni singola applicazione: mentre per Sateltrack questo processo era agevole (enhancements e bug fixing periodici riguardavano una sola applicazione, benché molto complessa e di grandi dimensioni), non sarebbe più stato possibile con tante mini-applicazioni basate su eXtraSheet ma indipendenti tra loro che talvolta richiedevano sviluppi consistenti. Si prospettavano quindi almeno due alternative differenti se si fosse deciso di proporre sul mercato il servizio di progettazione, implementazione ed erogazione di applicazioni Web personalizzate. La prima (e la più lineare) era quella di concordare con Krescendo una soluzione per poter 16 Gli obiettivi del progetto disporre della piattaforma eXtraSheet e delle competenze necessarie a svolgere direttamente gli sviluppi personalizzati. Una seconda ipotesi, apparentemente più conveniente in termini di costi, era invece abbandonare la piattaforma eXtraSheet e avvalersi di eventuali soluzioni Open Source alternative e l’acquisizione di competenze in autonomia. Una ulteriore alternativa poteva essere quella di concordare con la società Krescendo una strategia di collaborazione più profonda, ad esempio mediante la creazione di un team all’interno di Krescendo dedicato allo sviluppo per Cefin Systems, ma questa soluzione risultava più dispendiosa sia in termini economici, sia per la complessità dei flussi informativi che le due aziende avrebbero dovuto gestire. L’obiettivo finale risultava quindi piuttosto chiaro: investire in un’area profittevole nel segmento già identificato, creando un team di sviluppatori dedicato alla realizzazione di applicazioni Web ad hoc, in grado di interagire in maniera produttiva con il personale che avrebbe svolto le fasi di analisi e progettazione dell’applicativo. Il software, erogato interamente in modalità SaaS, avrebbe seguito la tendenza generale all’esternalizzazione dei servizi IT che caratterizzava sempre più il mercato del software. Per raggiungerlo, si doveva tuttavia esplicitare i costi e condizioni necessarie per realizzare ricavi. 2.3 L’ambito applicativo L’azienda era intenzionata ad avviare la fornitura di applicazioni Web personalizzate e ―chiavi in mano‖, integrando dunque il servizio di consulenza e progettazione con lo sviluppo vero e proprio. Si vogliono impiegare le migliori tecnologie al momento esistenti e abbinarle alle proprietà di affidabilità, efficienza e sicurezza proprie delle soluzioni SaaS. Definire l’ambito applicativo e le funzionalità che si desiderano (bisogni) dalla nuova piattaforma software non è completamente possibile. Infatti, Cefin Systems desidera realizzare applicazioni ad hoc mediante una piattaforma che offra elevata flessibilità per soddisfare i bisogni specifici del cliente, non definibili a priori. In prevalenza, si vuole proporre piccoli applicativi, snelli e Web-based da affiancare ai sistemi informativi di aziende medio-grandi, per soddisfare esigenze non coperte dai sistemi ERP standard. In alternativa, l’azienda si proponeva altresì lo sviluppo completo di sistemi informativi ad hoc per PMI caratterizzate da processi specifici. Almeno inizialmente, l’azienda voleva evitare la gestione di grandi volumi di dati bensì distinguersi per professionalità, rapida prototipizzazione e time-to-market molto ridotto, grazie alla piattaforma che verrà scelta. L’azienda prevede anche la fornitura di supporto tecnico e training del personale per l’uso delle applicazioni erogate. È inoltre richiesta elevata modularità: dopo lo sviluppo di una soluzione, deve essere possibile la modifica, l’adattamento e la crescita dell’applicativo nel tempo. L’erogazione dovrà essere effettuata in modalità SaaS, senza alcun investimento (in infrastruttura interna) da parte del cliente, appoggiandosi ad una società di Hosting professionale, che potrà anche essere la stessa che già ospita Sateltrack. 17 Gli obiettivi del progetto 2.4 La piattaforma La piattaforma ricercata dall’azienda è un sistema general purpose che, come eXtraSheet, permetta la realizzazione immediata di applicazioni Web e la sua fornitura al cliente in ambiente distribuito. Cefin Systems utilizza già la piattaforma eXtraSheet sia per uso interno che per alcuni clienti a cui rivende l’applicazione a nome di Krescendo Ltd. Come già anticipato, per piattaforma non si intende l’insieme delle tecnologie o dei moduli software su cui basare le applicazioni (es. J2EE oppure .NET) bensì una soluzione già sviluppata e di più alto livello. Le funzionalità di base desiderate dall’azienda risultavano la capacità di creare in breve tempo, preferibilmente mediante GUI, un front-end Web per il database (possibilmente ad elevata flessibilità), alcune funzionalità di reportistica e la gestione degli utenti con relative permission. Oltre queste funzionalità, era ovviamente necessario poter modificare rapidamente l’aspetto e aggiungere nuovi moduli sviluppati ad hoc, integrati con il database (accesso diretto mediante codice SQL oppure, come avviene con eXtraSheet, attraverso un modello ad oggetti specifico). Lo studio di fattibilità richiesto da Cefin Systems riguarda quindi la ricerca di una piattaforma disponibile sul mercato oppure open source che fosse facilmente estensibile tramite moduli realizzati ad hoc, per consentire la massima personalizzazione su aree che i prodotti commerciali non sono in grado di ricoprire. La piattaforma richiesta doveva essere priva di moduli verticali (o settoriali) ma in grado di coprire parte delle comuni funzionalità di un’applicazione Web, prevalentemente di carattere gestionale, in grado di supportare il processo dell’impresa committente. In chiave innovativa, tale paradigma avrebbe fornito un contributo importante sotto molteplici aspetti. Anzitutto, la flessibilità e il riuso abilitano uno sviluppo efficiente in tempi brevi, l’unicità dell’informazione garantisce la consistenza dei dati condivisi sui quali avrebbero operato più moduli. In definitiva, con la nuova piattaforma l’azienda prevede di raggiungere prestazioni notevoli, riguardanti sia l’efficienza nell’utilizzo delle risorse (minori tempi di sviluppo rispetto all’approccio tradizionale e prevalenza di attività di alto livello) sia l’efficacia, mediante l’offerta di soluzioni competitive sotto l’aspetto qualitativo e temporale. 18 eXtraSheet 3 eXtraSheet 3.1 Panoramica di Krescendo Ltd Krescendo è una società nata nel 2001 con sede a Londra ma a capitale italiano, e dispone di una filiale esclusivamente commerciale negli Stati Uniti, a New York (Manhattan). I dipendenti sono tutti laureati in materie informatiche o ingegneria e molti hanno un’esperienza decennale o quindicennale nel settore IT. Krescendo sviluppa sistemi di "supporto operativo" su piattaforma Web: si tratta esclusivamente di progetti "end-to-end", dove l’azienda cura le fasi di analisi dei requisiti, analisi di fattibilità, progettazione architetturale e di dettaglio, sviluppo, deployment e, nel tempo, manutenzione e supporto tecnico. Il lato più tecnico dell'hosting è demandato ad una società terza. I settori principali in cui Krescendo opera sono due: quello dei trasporti e quello delle banche d'investimento. Nel settore trasporti gestisce tre progetti pluriennali in corso: per una società finanziaria 100% IVECO-FIAT che si occupa di leasing di veicoli industriali in Europa Centrale e dell'Est, Krescendo fornisce un sistema di "front-office" (Credit Scoring, Credit Approval) e "back-office" (Contratti di finanziamento); per il gruppo Cefin operante nel settore industriale-commerciale in ambito automotive e immobiliare, basato in Europa Centrale, principalmente in Romania. Per Cefin la società Krescendo ha sviluppato e sta attualmente potenziando una piattaforma operativa per la gestione di tutti i flussi commerciali (ordini, gestione stock, fatturazione). La piattaforma, che gestisce migliaia di transazioni giornaliere, è live dal 2005 in Ungheria, ed è in corso l’implementazione in Romania (volumi circa 10 volte superiori rispetto all'Ungheria). per Cefin Systems, società che progetta, supporta e commercializza il sistema Sateltrack, un prodotto per la gestione flotte di veicoli di cui Krescendo cura esclusivamente lo sviluppo. Tale sistema richiede la gestione di basi dati ad altissimi volumi, dell'ordine di milioni di record a settimana, e relativa reportistica analitica. Nel settore investment banking l’approccio di Krescendo è basato sulla vendita del prodotto eXtraSheet e di servizi di personalizzazione e consulenza ad esso connessi. Il prodotto ed i servizi correlati non sono limitati al settore bancario e l’azienda sta concentrando le proprie energie per evolvere eXtraSheet mantenendo un focus commerciale ed utilizzare al meglio la propria rete di contatti. Con eXtraSheet, Krescendo detiene numerosi progetti in corso, i più importanti dei quali sono: infrastruttura per il "Service Management" in JP Morgan Investment Bank: gestione di tutte le chiamate relative a problemi applicativi, incident management, capacity management. È es19 eXtraSheet senzialmente il "back-bone" per la struttura di supporto IT del gruppo, che ha circa 2000 utenti in tutte le filiali del mondo; sistema di middle office/trade processing e risk management per BSN Capital, una società di trading in prodotti Money Market; gestione planning / high-level project management per i dipartimenti Technology and Operations all'interno di JPM Finance e Private Bank (due organizzazioni diverse, di circa 400 e 2000 impiegati rispettivamente). Il filo conduttore di tutte queste iniziative funzionalmente molto diverse è un approccio tecnologico/architetturale omogeneo, che permette all’azienda di trasferire facilmente risorse da un progetto all'altro. È essenziale sottolineare che l’elevato livello di produttività è direttamente correlato alla competenza e all'impegno professionale di tutte le risorse Krescendo. 3.2 Introduzione ad eXtraSheet Come già anticipato, risulta difficile definire puntualmente il prodotto eXtraSheet. È però possibile prenderlo in considerazione sotto diversi punti di vista: 1. Lato utente, si presenta (nella sua versione base) come un’applicazione Web di datastorage. L’utente, dopo aver effettuato il login su www.eXtraSheet.com, ha sostanzialmente la possibilità di creare Sheet (equiparabili a tabelle di un DB), definirne la struttura e gestirli con estrema facilità, predisponendo le maschere per effettuare il data-entry, le viste, le permission per altri utenti, … 2. Sotto l’aspetto tecnologico, eXtraSheet è un’applicazione Web realizzata interamente con tecnologia Java e secondo le più moderne best-practice di programmazione Web che prevedono anzitutto la separazione dello ―strato presentazione‖ (template based) da quello di business logic (code based). 3. eXtraSheet è infine definibile come una piattaforma in grado di supportare applicazioni Web avanzate. Infatti, oltre al codice ―core‖ di eXtraSheet, sono state sviluppate (e in parte sono in corso di sviluppo) una serie di librerie che offrono classi Java di alto livello, per di facilitare lo sviluppo di applicazioni Web integrate che estendono le funzionalità del prodotto base. Lo slogan commerciale di eXtraSheet punta in particolare sulla fruibilità e sulla rapidità di sviluppo: ―With eXtraSheet you can convert your locally-managed process into an instant, globally accessible, secure system.‖ 3.2.1 La storia eXtraSheet nasce nel 2001, sviluppato da una società con sede a Londra, come un’applicazione Web di data management, erogata totalmente in modalità SaaS, che permette di creare, gestire e 20 eXtraSheet condividere database su Internet. Nonostante fosse ancora in fase di sviluppo, Krescendo ne intuisce le potenzialità e decide di acquisire l’intero progetto. L’idea di business legata ad eXtraSheet risultava più precisamente un prodotto dotato delle seguenti caratteristiche: Time-to-Market ridottissimo: possibilità di creare un applicativo aziendale dotato di funzionalità standard in poche ore. Sviluppo/design realizzabile interamente tramite l’interfaccia Web. Facilità estrema di adattamento all’evoluzione del progetto specifico. Hosting dei dati e supporto compresi nella fornitura del prodotto, secondo il modello SaaS. Garanzia di SLA (Service Level Agreement). Download ed esportazione dei dati tramite Webquery Excel. Possibilità di reportistica personalizzata on-line. eXtraSheet risulta inoltre più veloce e meno costoso da implementare rispetto ad una soluzione sviluppata internamente ad hoc per il cliente, in quanto: è totalmente accessibile on-line e non è necessaria alcuna installazione di hardware o software; il re-work sulle soluzioni esistenti è minimo; In conclusione, il punto di forza di eXtraSheet consisteva nella capacità di fornire applicazioni Web per la condivisione e gestione dati senza sviluppare codice, offrendo al potenziale cliente un prodotto sicuro e affidabile, immediatamente disponibile, garantendo unicità dell’informazione e accessibilità globale. 3.2.2 Le funzionalità applicative standard La versione standard di eXtraSheet prevede che per ogni cliente venga creato un nuovo progetto (project) che corrisponde ad un ambiente Web dove sono disponibili tutte le funzionalità per la gestione dei dati e degli utenti con cui il cliente desidera condividere (anche solo in parte) i dati del progetto. Nei successivi sottoparagrafi si descrivono le funzionalità principali 3.2.2.1 Creazione di Sheet Uno sheet su eXtraSheet corrisponde sostanzialmente ad una tabella di un database: è necessario definire i campi desiderati, quindi procedere alla creazione dello Sheet e all’inserimento dei dati, mediante un’interfaccia user-friendly. L’utente ―amministratore‖ del progetto può creare nuovi sheet tramite due procedure alternative: Definizione manuale della struttura dei fogli (metodo più accurato) 21 eXtraSheet Inizializzazione della struttura tramite un file di testo. eXtraSheet utilizza un meccanismo intelligente di riconoscimento della tipologia di dati. Oltre alla creazione del foglio è anche possibile caricare direttamente i dati presenti nel file. La struttura degli sheet può contenere anche dati complessi ed è versatile a seconda dell’uso: Sono supportati diversi tipologie di dati (formato testo, numerico, date, URL, allegati). È possibile condurre interviste. La differenza dai normali fogli di dati è che non viene richiesta l’autenticazione; inoltre i risultati non sono forniti, di default, ai partecipanti all’intervista. Sono possibili interviste anonime che proteggono la privacy l’intervistato impedendo la visibilità dall’eventuale amministratore che ne voglia tenere traccia È possibile raggruppare le sub-entries in macroaree all’interno dello Sheet. Ad esempio, una macroarea ―progetto e dettagli‖ può contenere le sub-entries che descrivono i vari tipi di attività facenti parte del progetto e i costi associate ad esse. Entrate matriciali. Permette il data entry all’interno di una griglia, in cui alcuni campi sono già prefissati. Ad esempio se gli impiegati devono tenere traccia delle ore lavorate, i campi che possono essere fissati sono i giorni della settimana. 3.2.2.2 Reportistica e Data entry A livello di reportistica e data entry, eXtraSheet offre le seguenti funzionalità: Maschera Web per il data entry Interfaccia Web standard per dati. Possibilità di creare ed abilitare viste sui dati (scegliendo i campi da visualizzare e/o definendo relazioni di vario genere), che possono essere utilizzate sia per semplice filtraggio dei dati che per la condivisione con altri utenti. Possibilità di creare template per report personalizzati (prevalentemente realizzati dal Fornitore, data la specificità del linguaggio) Webquery link per il download dinamico su fogli di MS Excel, attraverso URL speciali contenenti parametri particolari. Questa funzionalità rende particolarmente agevole la programmazione di tool Excel che prelevano da eXtraSheet i dati necessari e li elaborano lato client. 3.2.2.3 Gestione delle liste Al fine di semplificare la gestione dei valori predefiniti (fenomeno molto comune nelle applicazioni di data management), eXtraSheet offre la funzionalità delle liste (List): Liste centralizzate che possono essere utilizzate da più fogli, per limitare i valori dei singoli campi. Questo facilita l’inserimento dei dati nei fogli da parte dell’utente e ne garantisce la correttezza. 22 eXtraSheet Relazioni gerarchiche multilivello tra le liste. Ad esempio ―Dipartimento‖ e ―Progetto‖ possono essere due liste collegate; è così possibile scegliere una volta selezionato il dipartimento la lista dei progetti che fanno parte di questo. 3.2.2.4 Accessi degli utenti eXtraSheet permette una gestione efficiente dell’accesso da parte degli altri utenti, tramite la suddivisione in gruppi. Ogni gruppo di utenti è caratterizzato dagli indirizzi e-mail degli stessi e dalle loro permission: possono avere accesso ad uno o più fogli, in modalità completa (unrestricted) oppure solo ad alcune viste (limitazione sui campi e/o sui record) ed essere autorizzati a uno o più tipo di operazione (visualizzazione, modifica, eliminazione) sui propri o su tutti i record della vista. Se i nuovi utenti non dispongono ancora delle credenziali per l’accesso ad eXtraSheet, è possibile inviare loro le e-mail di invito, contenenti un link speciale che guiderà l’utente alla creazione del suo nuovo account. Esiste inoltre la possibilità di condividere il foglio con un utente senza la creazione dell’account: tramite un link, è possibile l’accesso senza login in modalità intervista (survey). eXtraSheet è quindi la soluzione ideale quando emerge il bisogno di unire le informazioni provenienti da diverse persone che risiedono in località differenti (interne o esterne all’azienda), consolidare i risultati e condividerli con facilità. Molto spesso, le aziende che necessitano di un prodotto come eXtraSheet utilizzano uno spreadsheet, file condivisi oppure e-mail, riscontrando i classici problemi (assenza di unicità, difficoltà di sincronizzazione, …) della gestione di dati operativi o direzionali. 3.2.3 L’evoluzione di eXtraSheet Dalla sua nascita, eXtraSheet ha riscontrato un successo limitato nei primi anni, mentre dal 2007 è cresciuto notevolmente, fino a raggiungere una notevole affermazione nell’ultimo anno, tale da indurre l’azienda a spostare e assumere personale per lo sviluppo e l’innovazione di eXtraSheet. A titolo di esempio, alcuni progetti di successo su eXtraSheet risultano: Personnel evaluation solution, per supportare i review del team/clienti e per gestire i feedback provenienti dal personale. Ticket-Management/Issue tracking, per aziende con costante necessità di interazione sia all’interno dell’azienda che con fornitori e clienti (tipicamente per gestire il supporto tecnico e l’assistenza di prodotti informatici/telematici). I recenti successi hanno portato l’azienda a fornire eXtraSheet a numerosi clienti, in particolare nel settore bancario. Spesso la società offriva in abbinamento il proprio servizio di analisi e consulenza. Sempre più emergevano due fenomeni complementari: 23 eXtraSheet 1) La transizione di eXtraSheet da semplice applicazione di data management ad un potente strumento di problem solving, che permetteva all’azienda di vendere solutions e consulenza. eXtraSheet diventa l’infrastruttura per risolvere i problemi di consulenza, sfruttandone la sua flessibiltà. 2) La crescente necessità di sviluppare funzionalità ad hoc: l’efficacia di eXtraSheet nel fornire uno strumento immediato al cliente era provata, ma solitamente necessitava di integrazioni a posteriori. Tipicamente, quando l’applicazione era ormai a regime, il cliente segnalava la necessità di ridotte personalizzazioni, solitamente reportistica, per estendere le funzionalità standard (ad esempio, la generazione di report di sintesi in PDF oppure l’invio di notifiche email). L’azienda, seguendo queste linee guida molto promettenti, decise di investire nello sviluppo di un modello ad oggetti in grado di facilitare la personalizzazione e/o l’evoluzione (mediante sviluppo di codice) di un progetto su eXtraSheet. La nuova API per eXtraSheet offriva dunque una notevole attitudine a creare applicazioni Web personalizzate da integrarsi con le funzionalità di base di eXtraSheet e tali da garantire: - Facilità di accesso/modifica ai dati conservati negli sheet, senza l’accesso diretto al database. - Accesso a gruppi, utenti e permission del progetto per verificare gli utenti autorizzati ad accedere all’applicazione. 3.3 Sviluppi e tendenze Come anticipato, si prevede che il futuro sviluppo commerciale e tecnologico di eXtraSheet prosegua per il percorso intrapreso: una piattaforma per lo sviluppo di applicazioni Web in tempi ridotti, caratterizzate da elevata flessibilità, affidabilità e prestazioni, tipiche del modello SaaS. Nell’anno 2009, la società Krescendo ha ottenuto risultati economici sorprendenti dalla vendita del prodotto eXtraSheet, che viene sempre più erogato come servizio completo: dall’analisi del problema del committente, all’eventuale modifica del processo e allo sviluppo e personalizzazione della soluzione su eXtraSheet. Il mercato sembra apprezzare tale approccio, dato che negli ultimi due anni sono una nicchia molto ridotta di clienti eXtraSheet continuano a richiedere esclusivamente il prodotto ―grezzo‖ e provvedono autonomamente alla configurazione e gestione. Il management Krescendo prevede di proseguire all’estensione delle funzionalità di eXtraSheet, al perfezionamento e al costante aggiornamento con le nuove tecnologie Web. L’obiettivo è duplice: ottenere nuovi sviluppi o manutenzioni dai clienti attuali e raggiungere nuovi clienti in tutto il mondo, puntando in particolare su professionalità e tempi di realizzazione. L’approccio di eXtraSheet non sembra essere molto diffuso nel mercato del software online, dove prevale il riuso e la standardizzazione solo a livello di codice (tipicamente con librerie standard) e apparentemente meno a livello di framework applicativi, se si escludono i content management per i siti Web. 24 eXtraSheet 3.4 Architettura Software L’architettura software di eXtraSheet risulta piuttosto complessa, ma è interamente basata su tecnologie e prodotti ―open-standard‖, per garantire l’indipendenza da produttori hardware e software e disporre di una soluzione cross-platform. È basata sulla piattaforma Java, Java 2 Enterprise Edition (J2EE), che definisce anche la tipologia e le modalità di interazione con gli altri moduli software. Tra di essi, il noto database relazionale (RDBMS) open source MySQL, l’application server open source Caucho Resin ed una serie di librerie Java specifiche per applicazioni Web, alcune open source ed altre di proprietà di un’azienda partner. Figura 3.1 - Schema semplificato dell'architettura di eXtraSheet Di seguito si propone una breve presentazione dei componenti appartenenti all’infrastruttura software di eXtraSheet. 3.4.1 La piattaforma J2EE eXtraSheet è interamente basato sull’architettura Java 2 Enterprise Edition, uno standard (non un prodotto) affermato per lo sviluppo di applicazioni distribuite, utilizzando un vasto range di nuove tecnologie ed un modello di programmazione component-based che accresce la produttività delle applicazioni in diversi modi: Assicura flessibilità alle funzionalità desiderate, consentendo diverse possibilità di configurazione dell’architettura dell’applicazione. Inoltre risultano agevoli operazioni di manutenzione poiché i singoli componenti possono essere aggiornati o sostituiti indipendentemente. 25 eXtraSheet Garantisce ai componenti la disponibilità di servizi nell’ambiente di runtime, con la possibilità di essere interconnnessi con altri, fornendo opportune interfacce. Ad esempio, attraverso i deployment descriptors (file XML di configurazione) è possibile modificare i parametri dell’ambiente di runtime senza modificare il codice dei componenti. Permette maggiore efficienza organizzativa, poiché ciascun set di componenti può essere associato ad un determinato team, consentendo lo sviluppo dell’applicazione in parallelo e la focalizzazione di ogni team su competenze specifiche. J2EE utilizza una architettura distribuita multilivello (multitiered) per le applicazioni Enterprise. La logica applicativa viene infatti divisa in più componenti, in base alla loro funzione, ognuno di essi può essere installata su macchine diverse. L’architettura generale risulta composta da: 1. Client-tier components, eseguiti sul client. 2. Web-tier components, eseguiti sul server J2EE. 3. Business-tier components, eseguiti sul server J2EE. 4. Enterprise information system (EIS)-tier software, eseguiti sul server EIS. Sebbene un’applicazione J2EE può consistere in 4 livelli, normalmente sono considerate a 3 livelli, poiché sono tipicamente distribuite su tre diverse macchine: client, J2EE server e database/sistemi legacy sul server di back-end. La figura seguente mostra due applicazioni multilivello: la prima prevede un applicativo lato client mentre la seconda fornisce direttamente al client i risultati in linguaggio (X)HTML, approccio oggi predominante. Figura 3.2 - Applicazioni multilivello in J2EE 26 eXtraSheet Poiché J2EE è uno standard, si ha completa libertà nella scelta dell’hardware e dei tool da impiegare per uno specifico progetto. 3.4.1.1 Client tier Il client-tier costituisce il front-end più o meno complesso che risiede e viene eseguito sul client per usufruire dell’applicazione. Esso inoltra le richieste al server in base alle azioni dell’utente e presenta a quest’ultimo i risultati. J2EE prevede diverse tipologie di client: Web Clients, risulta la soluzione più frequentemente adottata, poiché permette di realizzare i cosiddetti thin client, che non interrogano database o eseguono algoritmi di business logic. I Web Client sono semplicemente dei browser Web che visualizzano le pagine ricevute dal server che sono generate dal Web tier. Applets, componenti aggiuntivi che possono essere inclusi nelle pagine inviate al browser utente. Consistono in piccole applicazioni che devono essere eseguite nella Java Virtual Machine installata nel browser. Application Clients, sono applicazioni che devono essere eseguite sulle macchine client. Offrono tipicamente interfacce utente più avanzate (GUI), create ad esempio tramite la libreria Swing oppure AWT e maggiori elaborazioni eseguite lato client (thick client). A differenza dei due casi precedenti, l’applicazione accede direttamente al Business tier del sistema. Da sottolineare la presenza di una serie di trade-off nella scelta della soluzione da adottare: più si lasciano funzionalità lato server, maggiore sarà la facilità di distribuzione, deploy e gestione dell’applicazione ma si rendono necessari investimenti HW e infrastrutturali da parte del fornitore ed il cliente avrà una percezione ridotta del sistema. Nella figura seguente sono riassunti gli elementi che possono appartenere al Client tier. Figura 3.3 - Client tier (componenti lato client) in J2EE Nel caso di eXtraSheet, e comunque in tutte le soluzioni sviluppate da Krescendo, viene adottata sempre la soluzione dei Web client, per garantire la fruibilità unicamente mediante browser Web. 27 eXtraSheet 3.4.1.2 Web tier I componenti del Web tier consistono in una serie di strumenti in grado di produrre contenuti dinamici, risultanti dalle elaborazioni a livello business logic, in risposta alle richieste dei client. Le tecnologie offerte da J2EE risultano essere le Servlet e le Java Server Pages (JSP). Le Servlet sono classi Java che elaborano richieste e producono risposte mentre le JSP sono file di testo che funzionano analogamente alle servlet ma sono orientate alla presentazione, cioè a produrre l’output per l’utente (tipicamente pagine XHTML create dinamicamente). Come mostrato nella figura seguente, lo strato Web può includere componenti JavaBean per gestire l’input dell’utente e inviarlo al business tier per l’elaborazione. I Java Bean sono componenti software contenenti una classe Java, che possono venire inclusi in una pagina JSP, permettendo quindi un ottimo incapsulamento del codice, peraltro riutilizzabile. Al programmatore quindi sarà pressoché invisibile la sezione di codice puro, sostituito da richiami ai metodi delle classi incluse. Figura 3.4 - Web tier in J2EE Nel caso di eXtraSheet, vengono utilizzate librerie specifiche contenenti Servlet facilmente riutilizzabili ed estensibili. Inoltre, in sostituzione delle JSP, eXtraSheet utilizza il motore di template FreeMarker (meglio analizzato in seguito) che offre una tecnologia simile a JSP ma è completamente open source e maggiormente flessibile. 3.4.1.3 Business tier Il livello Business contiene la logica applicativa ―core‖, che elabora e risolve le specifiche problematiche di un dominio di business, ad esempio operazioni di banking, analisi delle vendite, … La figura seguente mostra come gli Enterprise Bean, in esecuzione sul Business tier, gestiscono le elaborazioni richieste, scambiando dati con il livello EIS restituendo i risultati all’applicazione client. Più in dettaglio, esistono tre tipologie di Enterprise Bean: 1) Session bean, rappresenta una singola comunicazione con il client e viene eliminato al termine dell’interazione, rilasciando le risorse e i dati ad essa associati. 28 eXtraSheet 2) Entity bean, rappresenta dati persistenti, mantenendo lo stato su un database anche al di fuori del ciclo di vita della applicazione e dei processi del J2EE server. Rispetto al session bean consente accessi concorrenti da parte di più client. 3) Message-driven bean, combina caratteristiche di un session bean e di un listener Java Message Service (JMS), permettendo ad un componente business la ricezione di messaggi asincroni. Figura 3.5 - Business tier in J2EE 3.4.1.4 EIS tier È il livello più basso dell'architettura, che gestisce i dati memorizzati in modo permanente tramite varie tecnologie, ma tipicamente con strumenti RDBMS. Questi ultimi possono supportare accessi controllati attraverso le transazioni, permettendo accessi concorrenti da parte di applicazioni differenti. Poiché un’applicazione distribuita prevede l’utilizzo di ulteriori tipi di sorgenti, inclusi sistemi legacy che devono essere opportunamente adattati alle interfacce previste da J2EE. Nel caso di eXtraSheet, non ovviamente presenti sistemi legacy mentre viene impiegato il database relazionale open source MySQL. 3.4.1.5 J2EE Containers Lo sviluppo di applicazioni multi-livello e thin-client è particolarmente complesso poiché coinvolge la gestione di stati e transazioni, la condivisione di risorse e altre funzionalità di basso livello molto articolate. La piattaforma J2EE offre funzionalità per semplificare notevolmente tali aspetti, poiché la business logic viene organizzata in componenti riutilizzabili ma soprattutto vengono offerti servizi sotto forma di container per ogni tipologia di componente. I container sono interfacce tra un componente e le funzionalità offerte dalla piattaforma di livello inferiore. Prima che un componente Web oppure un Enterprise Bean possa venire eseguito, deve essere ―assemblato‖ in un modulo J2EE ed eseguito il ―deploy‖: il processo di assemblaggio riguarda la specifica delle impostazioni del container per ogni componente dell'applicazione J2EE e per l'appli29 eXtraSheet cazione stessa. Le impostazioni del container permettono di configurare le operazioni fornite dal server J2EE, quali sicurezza, gestione delle transazioni e connettività. Poiché l'architettura J2EE fornisce servizi configurabili, i componenti dell'applicazione J2EE possono assumere comportamenti differenti in base a dove viene eseguito il deploy. Il container gestisce anche servizi non configurabili, quali Enterprise bean e servlet, connessioni a database o accesso alle numerose API fornite da J2EE. Le tipologie di container fornite da J2EE, sono le seguenti: J2EE server: è la parte centrale di elaborazione di un sistema J2EE. Comprende I seguenti container: o Enterprise JavaBeans (EJB) container: gestisce l’esecuzione degli Enterprise bean dell’applicazione J2EE. o Web container: gestisce l’esecuzione delle Servlet e delle pagine JSP. Application client container: gestisce l’esecuzione dell’applicazione lato client. Applet container: gestisce l’esecuzione delle applet Java e consiste in un Web browser contenente plugin Java che risiedono sul client. Figura 3.6 - Ruolo dei J2EE container 3.4.2 MySQL RDBMS eXtraSheet impiega il motore di database relazionale (RDBMS) MySQL, un prodotto open source ormai consolidato, soprattutto nello sviluppo di applicazioni Web dinamiche, anche a livello Enterprise. MySQL è uno dei DBMS che richiede meno risorse hardware, è ampiamente supportato dalla Community e dispone di documentazione dettagliata. È considerato il leader tra i DBMS open source. 30 eXtraSheet MySQL è composto da un client con interfaccia a caratteri e da un server, entrambi disponibili per svariati ambienti software, tra cui MS Windows e Unix. MySQL supporta pienamente il linguaggio SQL (Structured Query Language) e dispone di numerose interfacce, tra cui ODBC e JDBC, per essere utilizzato nella maggior parte dei linguaggi di programmazione. Esistono numerosi strumenti di amministrazione e di sviluppo per database MySQL, anch’essi distribuiti con licenza open source. Altre caratteristiche principali di MySQL sono il supporto alle proprietà ACID (Atomicity, Consistency, Isolation, Durability), all’integrità referenziale (per la gestione delle relazioni tra tabelle differenti), alle transazioni (per il mantenimento dei dati sempre in condizioni consistenti) e la crittografia delle comunicazioni in rete tra i client ed il server. MySQL, pur non disponendo di funzionalità di warehousing o altre caratteristiche offerte da noti prodotti commerciali (quali Oracle e MS SQL Server), garantisce buona scalabilità e prestazioni notevoli, in particolare quando non è richiesto il supporto alle transazioni o all’integrità referenziale, utilizzando la tecnologia multi-thread. 3.4.3 Componenti e librerie Java 3.4.3.1 Java Development Kit (JDK) Per il funzionamento di un sistema basato su J2EE è anzitutto necessario installare sul server il pacchetto JDK (Java Development Kit), distribuito liberamente da Sun Microsystems, che comprende il Java Runtime Environment ed una serie di strumenti per lo sviluppo. La Java Runtime Environment è la parte centrale della piattaforma Java che permette l’esecuzione del codice binario Java, poiché fornisce la Java Virtual Machine (JVM) e le librerie ―core‖ (Java API) necessarie all’ambiente di produzione. Poiché la JVM è disponibile per numerose configurazioni hardware e software (ad esempio, su PC che eseguono MS Windows oppure su Server Unix), la piattaforma Java risulta estremamente flessibile e portabile (secondo il motto ―Write Once, Run Anywhere‖). Inoltre, JDK fornisce una serie di strumenti utilizzati dagli sviluppatori, tra i quali il compilatore Java, il loader, il generatore di file JAR e il debugger, che tuttavia non necessitano di essere installati in ambienti di produzione. 3.4.3.2 uView Per le funzionalità di basso livello, eXtraSheet utilizza uView, un framework Java proprietario che offre una serie di operazioni standard molto ricorrenti. uView è più propriamente una metodologia, un framework e un toolkit per lo sviluppo di applicazioni su piattaforma J2EE. Sebbene alcune funzionalità siano utili a qualsiasi tipologia di applicazione, l'utilizzo principale è rivolto allo sviluppo di applicazioni Web server-side, fruibili dai client tramite normali browser Web. Un'applicazione basata su uView è un programma Java a tutti gli effetti, che può a sua volta utilizzare altri tool e librerie. L'obiettivo principale di uView è quello di permettere allo sviluppatore di realiz31 eXtraSheet zare un'applicazione in Java robusta, sicura, performante e scalabile nel minimo tempo possibile. La struttura imposta da uView evita allo sviluppatore inutili e dispendiose scelte relative all'architettura dell'applicazione, permettendogli di concentrarsi direttamente sulle funzionalità. Rispetto ad altri framework, non limita lo sviluppatore in un ristretto set di funzionalità e non preclude l'utilizzo di altri tool. Rimanendo nelle funzionalità di alto livello, il paradigma uView permette: Sviluppo e deploy su medesima piattaforma Utilizzo di strumenti di sviluppo esistenti e preferiti Ciclo di sviluppo e testing estremamente rapido Ambiente server leggero e veloce, che può essere installato ed utilizzato interamente sulla postazione hardware dello sviluppatore Facilità di verificare il ―work in progress‖ da parte di altri sviluppatori e manager Elevato grado di separazione tra GUI e business logic Possibilità di modificare l’aspetto grafico senza dover riavviare l’applicazione, quindi senza effettuare una release completa. Tra le innumerevoli funzionalità di carattere operativo disponibili in uView vi sono il supporto alla connettività con i database, il logging delle attività e la gestione dei login, delle autenticazioni e delle sessioni. Il framework permette la separazione tra presentation layer, basato su template, e business logic, realizzata in codice Java. Analizzando più in dettaglio l’architettura di uView, i componenti di un’applicazione realizzata con uView sono i seguenti: 1. Web browser, il client dell’applicazione. Con uView le applicazioni possono generare qualunque tipologia di contenuti ma tipicamente si tratta di (X)HTML dinamico. Altre tipologie utilizzabili sono XML, WML, testo o Java applet. 2. Server sul quale uView funzionerà, sia questo un Web server con l’estensione che implementa le Java Servlet API (specifiche di Sun che consente al Web server di ottenere contenuti da un programma Java) oppure un Web server dotato di supporto nativo per le Servlet. La configurazione più comune è quella di utilizzare Apache Server (come Web Server) e Caucho Resin (come Servlet Engine). 3. Java Virtual Machine (JVM), indispensabile per elaborare le servlet ed il codice di uView. Le evoluzioni della JVM sono notevoli e sono spesso rilasciate nuove versioni da Sun. uView è compatibile con qualunque JVM da quando le Servlet API furono rilasciate. Le attuali JVM, dotate di ottimizzazioni sofisticate e compilazione nativa del codice offrono performance eccellenti se comparate con le prime implementazioni. 32 eXtraSheet Figura 3.7 - Le caratteristiche del framework uView 4. RDBMS, un database relazionale che si interfacci con uView. Sono stati testati Oracle e MySQL ma è comunque garantita la compatibilità per qualunque database dotato dei driver JDBC. In realtà la presenza di un database non è indispensabile per uView ma le funzionalità di un’applicazione senza un database sono estremamente limitate. 5. Librerie software, utilizzate da uView per il suo funzionamento. Tra queste, la maggior parte sono oggi integrate nella distribuzione della JDK. In ambiente di produzione, uView necessita dell’accesso a tali librerie, tipicamente rilasciate in formato JAR. 6. Librerie uView, tipicamente rilasciate in produzione con file .class individuali che ne facilitano la manutenzione rispetto alle librerie JAR. 7. Software dell’applicazione, come per le librerie Java, il codice dell’applicazione è compilato e convertito in file binari che vengono rilasciati sul server insieme ad alcuni file di configurazione, tra cui quello relativo all’applicazione e alla connessione con il database. 8. Risorse dell’applicazione, tipicamente template (X)HTML, file grafici (GIF, JPEG) e altri file statici. 33 eXtraSheet Figura 3.8 - L'architettura di uView I componenti sopra elencati possono essere configurati per funzionare in una ampia varietà di architetture distribuite. Alcune configurazioni possibili sono: - Un server sul quale risiedono tutti i componenti - Un Web server dotato di API Servlet, applicazione uView e JVM ed un secondo server dedicato al RDBMS - Un Web server, uno o più Servlet/uView/JVM server ed un database server - Web server multipli, Servlet/uView/JVM multipli, Database server multipli Ogni configurazione presenta pregi e difetti ma solitamente si sceglie l’architettura più semplice che possa offrire le prestazioni desiderate. Approfondire ulteriormente l’utilizzo di uView esula dalle finalità dell’elaborato, ma si sottolinea che la società Krescendo dispone della documentazione dettagliata, alla quale il candidato ha fatto riferimento nel corso delle attività di sviluppo. A tal proposito, l’utilizzo del framework uView è risultata piuttosto semplice, anche grazie alle demo fornite dall’azienda, e certamente al livello di uno sviluppatore Junior Java. 34 eXtraSheet 3.4.3.3 FreeMarker FreeMarker è un motore di template open source, perfettamente integrato con Java. È una alternativa all’utilizzo delle pagine JSP per la gestione del lato presentazione poiché presenta numerosi vantaggi. Le pagine JSP sono basate fortemente sulla sintassi Java mentre può essere necessaria una maggiore indipendenza, specialmente se lo sviluppatore Java non coincide con quello dello strato presentazione. Inoltre, JSP è parzialmente in contrasto con il paradigma MVC (Model-ViewController) che prevede la separazione della rappresentazione dei dati e metodi sui quali opera l'applicazione (Model) dalle modalità di presentazione dei risultati (View) e dai processi di interazione con l'utente o altri elementi che possono modificare gli altri due componenti (Controller). JSP prevede infatti di inserire codice Java (del componente Controller) all'interno del codice (X)HTML (componente Controller). FreeMarker si pone come una valida soluzione poiché è una tecnologia Open Source, compatibile con Java, aderente agli standard MVC e indipendente dal tipo di file da elaborare. FreeMarker consiste in una serie di librerie che, analogamente a JSP, elaborano template, sostituendo i tag speciali nel file sorgente con dati generati dinamicamente. Rispetto a JSP, è indipendente dall'architettura Servlet o da HTTP e sono in grado di processare qualunque tipo di file, quali X(HTML), XML, CSV, file di testo, ... Rispetto a JSP, FreeMarker risulta più performante poiché non necessita delle numerose librerie che JSP richiede ogni volta a runtime. 3.4.3.4 Altre librerie Le applicazioni create da Krescendo, inclusa eXtraSheet, utilizzano abitualmente una serie di librerie Java (non incluse nella piattaforma Java rilasciata da Sun) prevalentemente open source, per implementare funzionalità specifiche. Tra queste rientrano: Spring Framework, nota libreria open source che fornisce una vastissima gamma di funzionalità per lo sviluppo di applicazioni Web basate su J2EE. iText: è una libreria open source per la creazione e la modifica di documenti PDF, RTF, HTML e XML. Essendo pienamente integrata con Java, permette ad esempio di memorizzare il flusso di dati su un file oppure inviarli attraverso una servlet al browser Web dell’utente. Le potenzialità della libreria sono concentrate sulla gestione dei file PDF, che permettono anche la crittografia e la firma digitale del documento. iText è inoltre incluso in prodotti più completi tra cui JasperReports, anch’esso utilizzato negli sviluppi di Krescendo per eXtraSheet ed altri prodotti. JFreeChart: è una libreria Java, anch’essa open source, che permette di creare agevolmente grafici complessi a partire da serie di dati provenienti da qualunque sorgente. L’immediatezza dell’utilizzo e la relativa flessibilità semplificano l’arricchimento di ogni genere di reportistica con rappresentazioni grafiche professionali. 35 eXtraSheet 3.4.4 Resin Application Server La società Krescendo impiega l’application server Caucho Resin Professional per l’erogazione delle proprie applicazioni J2EE, incluso eXtraSheet. Resin è un application server che supporta tutte le tecnologie J2EE, integrando caratteristiche di Web server e offrendo funzionalità avanzate per sistemi Enterprise. Rispetto ai prodotti più blasonati come Weblogic e Websphere (i principali) oppure Jboss (open source), Resin è un application server Open source leggero e adatto per ambienti di sviluppo e, al contempo, un prodotto completo e affidabile per gli ambienti di produzione (soprattutto nella versione commerciale). Resin supporta tutte le tecnologie della piattaforma J2EE quali Servlet e JSP, EJB, JDBC, JMS (Java Message Service), e Web Service. Inoltre gestisce Virtual host , pagine PHP, CGI in genere, e supporta OpenSSL. Per i sistemi Enterprise, che richiedono caratteristiche di robustezza, affidabilità e performance elevate, la versione Resin Professional fornisce sistemi di clustering e load balancing, oltre ad un insieme di librerie JNI (Java Native Interface) per ottimizzare la gestione delle socket e l’accesso al file system. Resin supporta inoltre una serie di altre feature: JSP EL (Expression Language) un linguaggio con sintassi semplificata per l'accesso ad oggetti e per l'utilizzo delle loro proprietà a run-time dall'interno di pagine JSP; JCA (Java Connection Architecture); Amber, un’implementazione di Resin della persistenza degli EJB 3.0; i protocolli Hessian e Burlap, per la connessione con i Web-services; XTP (XML Template Pages) che permette la creazione di pagine Web tramite XML. I concetti principali relativi alla gestione di un server Resin sono i seguenti: Esiste un solo file xml di configurazione per il server, il resin.conf I file di configurazione delle Web application sono il WEB-INF/Web.xml e WEB-INF/resinWeb.xml; il primo contiene le configurazioni standard della Web application, il secondo le configurazioni specifiche di Resin. Ogni cambiamento nel file di configurazione (del server o della Web application) viene rilevato automaticamente e causa il restart del server. Il deployment di un nuova Web application viene effettuato automaticamente aggiungendo un file .war nella directory Webapps Un nuovo virtual host viene aggiunto automaticamente creando una sottodirectory nella directory host I path vengono interpretati come assoluti se iniziano con ―/‖ altrimenti relativi alla RESIN_HOME Resin permette di aggiungere una nuova Web application o un virtual host modificando appropriatamente il file resin.conf. Le direttive specifiche di Resin contenute nel resin-Web.xml possono essere inserite anche nel Web.xml, anche se questo rende questo file non standard per eventuali deploy su altri application server. 36 eXtraSheet Resin può essere usato come server stand-alone con funzioni di Web server e application server o in alternativa si può usare un Web server (ad esempio Apache o IIS) come front-end per servire contenuti statici e Resin come application server di back end per l’elaborazione di contenuti dinamici. L’integrazione con Apache e IIS viene realizzata tramite un modulo plugin, che ha il compito di selezionare le URL da passare all’application server, inoltrare le richieste e riprendere le risposte dal server Resin. 3.4.5 Client side Javascript Per usufruire di eXtraSheet, come peraltro tutte le soluzioni Krescendo, il client deve essere esclusivamente dotato di un browser Web standard e nessuna installazione aggiuntiva, trovando piena convergenza con la filosofia SaaS. Il browser Web dovrà farsi carico di interpretare il codice HTML ed eseguire l’eventuale codice JavaScript associato. Questo si rende necessario nel Web 2.0, in cui la pagina è ―reattiva‖ e implica che siano inserite logiche (es. pulsanti associati a funzioni) ed eventuali interazioni tra browser e server. Più precisamente avviene l’inserimento nelle pagine Web di istruzioni eseguite dal browser in linguaggio Javascript da eseguirsi sul client. Poiché tale linguaggio risulta altamente diffuso e standardizzato, è compatibile con tutte le piattaforme SW ed i comuni browser Web. Non sono invece previsti altri componenti lato client, quali Java applet o Adobe Flash, poco diffusi e più ―pesanti‖ in termini di dimensioni ed elaborazioni richieste. JavaScript permette inoltre di utilizzare la tecnologia AJAX, cioè la possibilità di inoltrare delle richieste asincrone al server e migliorare così il grado di interattività dell’applicazione, modificando ed aggiornando alcuni componenti senza caricare nuovamente l’intera pagina. Come per il linguaggio HTML, il codice Javascript viene ignorato dall’Application Server, che continua ad interpretare solo il codice Java e, nel caso specifico, le direttive FreeMarker inserite nel template. Il browser del client riceve quindi la pagina con codice HTML e codice Javascript, che verranno inoltrati ai rispettivi interpreti. La pagina HTML viene immediatamente tradotta in un oggetto DOM (Document Object Model), che facilita notevolmente l’accesso e la modifica dei componenti della pagina tramite Javascript, senza gestire direttamente la complessità dell’HTML. eXtraSheet utilizza JavaScript per le funzionalità sopra descritte avvalendosi di alcune librerie (o framework), tra le quali: - Prototype: è una libreria open source che offre il completo supporto ad AJAX ed alla programmazione object-oriented in JavaScript. In particolare, riguardo ad AJAX, fornisce funzionalità di alto livello per gestire le interazioni tra client browser e server, fornendo un utile livello di astrazione dai dettagli della comunicazione AJAX. - script.aculo.us: anch’essa open source, è una libreria che permette di implementare con estrema facilità effetti grafici e funzionalità interattive notevoli. Alcuni esempi sono gli effetti di 37 eXtraSheet dissolvenza, il ―drag-and-drop‖ di elementi e l’auto completamento dei form. Tali funzionalità risulterebbero invece complesse da realizzarsi ad hoc e pressoché impossibili per programmatori non esperti. Sono inoltre utilizzate librerie minori (ad esempio per il calendario Web) ed altre sviluppate internamente, contenenti le funzionalità più ricorrenti negli sviluppi effettuati da Krescendo. 3.5 Configurazione Hardware eXtraSheet è un prodotto che garantisce estrema affidabilità e sicurezza al cliente poiché, oltre ad avere un’architettura software stabile e performante, dispone di un’infrastruttura hardware potente e ridondata. In figura sono mostrati i principali componenti della configurazione hardware di eXtraSheet. Si ha un server di produzione ospitato presso un centro di hosting professionale che è dotato delle seguenti caratteristiche tecniche: 8 Core Intel Xeon 2,5 Ghz Dischi RAID da 754GB Memoria RAM da 16GB Piattaforma SW: Sistema Operativo CentOS (Kernel Linux) release 5 (Final), OpenSSL 0.98b, Java 1.5.0_14, ProFTPd 1.03.01, OpenSSH_4.3p2, MySQL 5.00.45, Resin Application Server 3.1.7. Al server di produzione ne sono affiancati altri, talvolta condivisi con gli altri prodotti della società Krescendo, dedicati alle operazioni di backup ed alla fornitura di servizi aggiuntivi. Tra questi vi è il server di hot backup che contiene il mirroring del file system e dei database, con aggiornamento orario e pronto ad entrare in funzione qualora il server principale risultasse guasto. Un secondo server (woodford) effettua la copia notturna del file system e la conserva per tempi prolungati. Il server di disaster recovery, che risiede in una sede fisica differente dal centro di hosting principale, garantisce una ulteriore ridondanza per offrire un elevato grado di sicurezza su dati ed applicazioni. Il server principale interagisce inoltre con il Mail server, per inviare ad esempio le mail di notifica agli utenti di eXtraSheet. L’ambiente di produzione e quello di sviluppo, ossia l’IDC e gli uffici di Krescendo, interagiscono frequentemente, soprattutto per i rilasci di nuovo software da parte degli sviluppatori. Questi, come sarà approfondito in seguito, possono testare le applicazioni nel Test Server, che contiene una snapshot sempre recente del server di produzione. In caso di risultati positivi, effettuano l’upload sul server CVS (augustus) dal quale verrà infine effettuato il deploy in produzione. 38 eXtraSheet Figura 3.9 - Schema dell'infrastruttura hardware di eXtraSheet 3.6 Processi di sviluppo e hosting Come intuibile dal precedente paragrafo, la società Krescendo detiene internamente solo le postazioni di sviluppo e i server di test e CVS. Questa scelta è motivata dalla notevole affidabilità e sicurezza che un IDC professionale è in grado di garantire rispetto ad una gestione interna, che risulterebbe meno efficiente e probabilmente richiederebbe personale dedicato. I processi che caratterizzano lo sviluppo, il rilascio e le manutenzioni di eXtraSheet sono quindi le operazioni effettivamente core, relegando le attività di carattere tecnico e di monitoraggio alla società di hosting. Prima di considerare le procedure tecniche di sviluppo, è bene evidenziare quali siano i flussi informativi che caratterizzano la fornitura del prodotto eXtraSheet ad un cliente nuovo od esistente: 1) Il commerciale Krescendo contratta con il cliente le funzionalità necessarie. 2) Il commerciale, con la collaborazione di un analista Krescendo, determina le specifiche del problema ed una soluzione. Qualora la soluzione sia implementabile direttamente tramite la GUI di eXtraSheet, l’analista implementa immediatamente la soluzione. In caso contrario, procede alla stesura delle specifiche funzionali e le inoltra ad uno o più sviluppatori. 3) Lo sviluppatore prende in carico le specifiche e procede allo sviluppo. 39 eXtraSheet 4) Lo sviluppatore effettua una release sul Test Server di eXtraSheet e ne verifica la correttezza. In collaborazione con l’analista, provvede poi ad accertare l’aderenza alle specifiche e la funzionalità dell’applicazione. 5) Lo sviluppatore richiede la release in produzione e l’applicativo viene consegnato al cliente, offrendo eventualmente training e supporto tecnico in caso di malfunzionamenti o bachi di programmazione. Esaminando in dettaglio il punto 3, lo sviluppatore di eXtraSheet, è incaricato di implementare una o più funzionalità, creando la logica applicativa (codice Java) e la presentazione (codice HTML e FreeMarker). Mentre nella tabella seguente è riportato il dettaglio della postazione di sviluppo tipica, si osserva che gli strumenti di sviluppo di cui necessita il programmatore sono un IDE (Integrated Development Environment) per lo sviluppo in Java ed un editor HTML o di testo per la realizzazione dei template FreeMarker. In realtà questi strumenti presuppongono la JDK (Java Development Kit) e tutte le librerie di uView ed eXtraSheet. Queste ultime sono gestite tramite un server CVS (installato sul server Augustus) che permette allo sviluppatore di ottenere in tempo reale sulla propria postazione le versioni aggiornate di tutti i sorgenti. CVS (Concurrent Versioning System) è infatti un sistema consolidato per la gestione delle versioni, mantenendo sincronizzato il lavoro svolto da un team di sviluppo, permettendo anche una collaborazione distribuita. CVS implementa un'architettura client-server: il server conserva la versione corrente di tutti i file di progetto e la loro storia, mentre i client, che coincidono solitamente con le postazioni degli sviluppatori, effettuano l'upload di nuovi file sul server oppure aggiornano quelli esistenti, previa verifica di conflitti che devono essere risolti manualmente. Ogni sviluppatore procede quindi all’implementazione delle specifiche ricevute, tipicamente realizzando prima la componente di business logic in Java (basandosi sulle API di uView ed eXtraSheet) e, quindi, la parte di presentazione in FreeMarker. Una volta completata, il programmatore compila i sorgenti e, poiché le postazioni locali dispongono degli strumenti presenti anche in produzione (in particolare il DBMS MySQL e l’application server Resin), effettuano un primo testing dell’applicazione. Al punto 4 si giunge ad effettuare una release sul Test Server, per accertarsi che le funzionalità già testate in locale siano funzionanti anche nell’ambiente di pseudo produzione, spesso molto differenti da quelli di sviluppo (oltre al sistema operativo, possono disporre di versioni differenti di librerie e/o configurazioni (ad esempio del DBMS) molto varie. Per fare ciò, è necessario effettuare l’upload dei sorgenti nel repository CVS presente su Augustus e, quindi, effettuare il rilascio sul test server Tiberius attraverso lo strumento Apache Ant, un tool open source per effettuare il processo di build di progetti Java. Il processo di build prevede la compilazione del codice Java in codice binario, l’eventuale packaging in librerie ed il deployment sul server di destinazione. Infine, con il punto 5 lo sviluppatore richiede al responsabile una release sul server in produzione. Questo processo è analogo alla release sul server di test ma, per la criticità dell’operazione, solo pochi dipendenti dispongono dell’accesso al server. 40 eXtraSheet Hardware features CPU Intel Core 2 Quad 2.6 Ghz RAM 4 GB DDR2 Hard Disk 320 GB (7200 rpm) Monitor 2 x LCD 17’’ Networking Gigabit Ethernet network card Optical drive DVD±RW 22x Software configuration O.S. MS Windows XP Professional Java Platform JDK 1.5 Office Suite MS Office 2007 Enterprise Java IDE Eclipse v. 3.4 Terminal emulator PuTTY v. 0.6 CVS client WinCVS v. 1.2 Web/Application server Caucho Resin v. 3.1.7 DBMS Engine MySQL v. 5.0.41 Visual MySQL Client MySQL GUI Tools v. 1.2.12 Text editor Notepad++ v. 4.0.2 Other Tools iReport v. 2.0.5 (template builder for Jasper Reports PDF) Tabella 3.1 - Esempio di configurazione di una postazione di sviluppo 41 Le alternative ad eXtraSheet 4 Le alternative ad eXtraSheet La ricerca delle alternative ad eXtraSheet è stata svolta dal candidato con l’obiettivo di individuare una o più soluzioni che offrissero una piattaforma idonea a realizzare applicazioni Web con un approccio simile ad eXtraSheet. La procedura di software selection ha seguito i seguenti principi: 1) Prova del prodotto: sono stati considerati esclusivamente i sistemi che offrissero una versione demo, tali da verificare agevolmente le funzionalità principali e le caratteristiche del prodotto. Il candidato ha ritenuto che le informazioni migliori, seppur con maggior dispendio di tempo, sono ricavabili in primo luogo provando direttamente il prodotto e analizzandolo in base ai requisiti target. 2) Modularità e personalizzazione del prodotto: è stata prestata particolare attenzione alla scelta di soluzioni espandibili, considerando che spesso i requisiti di un’azienda evolvono e mutano nel tempo. È stata valutata la fattibilità di adattamenti o personalizzazioni in grado di soddisfare i bisogni del cliente specifico. Il processo di ricerca ha evidenziato anzitutto la limitata disponibilità di soluzioni in ambito commerciale, mentre sono stati individuati ed esaminati numerosi prodotti open source che presentavano molteplici caratteristiche disponibili out-of-the-box e avrebbero permesso lo sviluppo di funzionalità ad hoc con particolare facilità. 4.1 Commerciali Il panorama dei software commerciali dotati delle funzionalità ricercate da Cefin Systems risulta piuttosto limitato. Dopo una serie di ricerche da parte del candidato, si può concludere che è fortemente probabile che non vi siano soluzioni commerciali simili ad eXtraSheet e offerte come prodotto. Risulta essere altrettanto limitata la disponibilità di prodotti analoghi ma fornito come servizio SaaS. In questo secondo caso è stato individuato esclusivamente un player che fornisce Dabble DB, una soluzione molto simile ad eXtraSheet ma fornito con un approccio commerciale differente. Si può pertanto affermare che Dabble DB è l’unico competitor noto di eXtraSheet. 4.1.1 DabbleDB Dabble DB è un’applicazione Web fornita interamente in modalità SaaS dall’omonima società canadese. Questa soluzione, analogamente ad eXtraSheet, permette al cliente di realizzare semplici applicazioni Web di data management utilizzando esclusivamente un Web browser. 42 Le alternative ad eXtraSheet L’interfaccia grafica risulta particolarmente curata, intuitiva e ricca di funzionalità. Dabble DB permette di creare applicazioni o viste basate su dati attraverso numerosi strumenti quali tabelle, grafici, mappe e calendari. La visualizzazione standard mostra i dati analogamente a MS Excel, tramite righe, colonne, formule e totali. È supportato inoltre il ―matching‖ tra dati di tabelle diverse, analogamente ad un database relazionale. Oltre al data-entry diretto, Dabble DB è in grado di importare dati nei formati Excel e CVS; altrettanto vari i formati di esportazione che includono RSS, JSON e KML. È inoltre possibile gestire varie tipologie di dati speciali, ad esempio posizioni GPS facilmente rappresentabili direttamente sulle mappe. Dabble DB offre una API Javascript che permette di impiegare i dati in qualsiasi altra applicazione. È possibile creare form in blog o siti Web esterni che, al momento della sottomissione da parte dell’utente, inseriranno i dati in nuovi record di Dabble DB. Viceversa, è possibile ottenere i dati come oggetti JSON da utilizzare ad esempio in reportistiche per siti Web. Questo permette di integrare Dabble DB in qualunque applicazione Web senza dover coinvolgere il lato server. Essendo un prodotto commerciale, non sono noti molti dettagli relativi alle tecnologie impiegate in Dabble DB. È interamente scritto in linguaggio Smalltalk, utilizzando il framework Open Source Seaside che offre la possibilità di sviluppare applicazioni Web seguendo una serie di best-practices. Tra queste, un particolare meccanismo di controllo di stato, il riuso e l’incapsulamento di componenti, la separazione tra modello e presentazione e la fornitura di un IDE completo per lo sviluppo e il debugging. Alcuni screenshot relativi a Dabble DB sono disponibili in figura. Pur essendo molto simile ad eXtraSheet, la strategia commerciale di Dabble DB si differenzia per due aspetti principali: 1) Il prodotto è direttamente disponibile per qualsiasi utente, senza la necessità di avere un contatto con il personale dell’azienda. È possibile effettuare la registrazione sul sito www.dabbledb.com e si riceveranno immediatamente le credenziali per l’utilizzo del sistema per 30 giorni. 2) Non sono forniti servizi accessori di consulenza o progettazione: al cliente viene fornito esclusivamente l’ambiente Dabble DB. Non sembrano essere inoltre possibili personalizzazione o sviluppi ad hoc. Questa scelta è coerente con la precedente, poiché fornendo il prodotto ad una clientela potenzialmente vastissima, l’azienda non potrebbe gestire efficientemente tutte le richieste. La strategia attuata per Dabble DB evidenzia che, piuttosto che rivolgersi a clienti con esigenze particolari, l’azienda è intenzionata a fornire una efficiente soluzione alle aziende che utilizzano i tradizionali sistemi per la gestione dei dati (quali MS Access, MS Excel o addirittura supporti cartacei), apportando efficienza, unicità dell’informazione e accessibilità globale. Infatti, Dabble DB è la soluzione ideale per creare agevolmente un database online, ma non offrendo possibilità di personalizzazioni o sviluppi ad hoc, non risulta idoneo a supportare processi complessi. 43 Le alternative ad eXtraSheet Come mostrato in figura, le stime del traffico per Dabble DB sono notevoli, dell’ordine delle decine di migliaia visite mensili per gli U.S., probabilmente superiori ad eXtraSheet. Figura 4.1 - Interfaccia Web di Dabble DB Figura 4.2 - Stima del traffico mensile negli U.S. per Dabble DB 44 Le alternative ad eXtraSheet 4.2 Open source basati analoga tecnologia In ambito Open Source è stato decisamente più agevole individuare le soluzioni alternative ad eXtraSheet. Infatti, la facilità nel reperire documentazione e la possibilità di effettuare test liberamente ha consentito di selezionare numerose piattaforme e framework estremamente interessanti. Nei successivi sottoparagrafi si riporteranno le principali, descrivendone brevemente le caratteristiche, che possono variare notevolmente da prodotto a prodotto: alcuni forniscono esclusivamente efficienti funzionalità per lo sviluppo rapido di applicazioni e risultano più orientate a sviluppi personalizzati, mentre altre offrono interfacce grafiche complete e si candidano come valide alternative ad eXtraSheet. 4.2.1 WaveMaker WaveMaker è una piattaforma di sviluppo Open Source che permette di realizzare con estrema rapidità applicazioni Web in Java dotate di architetture avanzate. Le applicazioni create con WaveMaker seguono gli standard Enterprise Java, impiegando le migliori tecnologie Open Source. Come rappresentato in figura, le principali sono: - Spring framework, che facilita e standardizza l’implementazione di molte funzionalità tipiche eseguite lato server. - Dojo toolkit, una libreria JavaScript che offre molte funzionalità lato client, ad esempio componenti grafici, animazioni e interazioni AJAX. - Hibernate, un middleware Open Source che fornisce un servizio di object-relational mapping, cioè la gestione di un database relazionale attraverso un sistema ad oggetti Java. Il vantaggio principale che ne deriva è l’indipendenza dal database (l’applicazione è più portabile) e l’automazione delle query SQL necessarie. WaveMaker risulta pertanto in grado di interfacciarsi con la maggior parte dei database relazionali. - JSON RPC (JavaScript Object Notation - Remote Procedure Call), un protocollo per lo scambio efficiente di dati tra client e server, particolarmente impiegato per le interazioni AJAX. 45 Le alternative ad eXtraSheet Figura 4.3 - L'architettura di WaveMaker WaveMaker include il Visual Ajax Studio, un IDE anch'esso Web-based per lo sviluppo visuale di un'applicazione tramite strumenti grafici drag-and-drop, secondo il paradigma WYSIWYG. Template predefiniti e componenti AJAX permettono di creare un'interfaccia grafica senza sviluppare codice. È inoltre possibile creare template personalizzati. Attraverso i Live Forms è possibile creare rapidamente applicazioni database CRUD (Create, Read, Update, Delete), poiché WaveMaker è in grado di importare automaticamente schemi di database esistenti. Sviluppare applicazioni con WaveMaker risulta inoltre particolarmente flessibile poiché viene rispettato il paradigma Model-View-Controller, che prevede un’architettura efficiente e manutenibile. È inoltre possibile integrare codice Java già esistente, interfacciarsi con Web service basati su WSDL, REST o RSS. Il deployment è estremamente semplice, dato che WaveMaker crea file WAR standard che possono essere utilizzati su qualunque server Java dotato del Java Development Kit 1.5 o superiore e di un application server tra quelli più diffusi (Apache Tomcat, JBoss, WebLogic o WebSphere). L’azienda che cura il progetto Open Source, WaveMaker Software Inc., fornisce il prodotto in tre diverse configurazioni: - Con licenza Open Source (WaveMaker community edition), completamente gratuita; le applicazioni generate con questa versione sono soggette alla licenza Apache. - Con licenza commerciale, che implementa alcune funzionalità di sicurezza aggiuntive e garantisce il supporto tecnico da parte dell’azienda. - Come servizio, installando e rendendo disponibile WaveMaker al cliente da server esterni. L’azienda si avvale del servizio di hosting Amazon Elastic Computer Cloud. Rispetto ad eXtraSheet, WaveMaker risulta coprire solo parzialmente le sue funzionalità. Come verrà ribadito nella valutazione dei casi di studio, WaveMaker offre un’interfaccia che, seppur molto sem46 Le alternative ad eXtraSheet plice ed intuitiva per uno sviluppatore junior, non risulta idonea ad essere consegnata al cliente finale e talvolta nemmeno ad essere utilizzata da un analista privo di capacità di sviluppo. Inoltre, anche per applicazioni semplici è necessario effettuarne il deploy e non possono essere configurate da personale non esperto. La notevole potenzialità di WaveMaker che appare ancor prima di effettuare i test consiste nella possibilità di implementare con facilità la struttura di un’applicazione Web mediante interfaccia grafica, evitando di sviluppare manualmente le funzionalità standard. Le classi ed il codice Java ottenuto potrà poi essere modificato ed esteso dallo sviluppatore. 4.2.2 Apache Click Apache Click è un framework per lo sviluppo di applicazioni Web, distribuito con licenza open source (licenza Apache), attualmente in fase di ―incubazione‖ all’interno della Apache Software Foundation. L’uso del framework è piuttosto tradizionale se comparato a WaveMaker ma offre una serie di strumenti estremamente potenti. Le caratteristiche principali di Apache Click sono la semplicità e, al contempo, le ottime prestazioni e la notevole scalabilità. Click è basato sui concetti di pagine e di componenti, che permettono una valida rappresentazione dei contenuti Web e consentono uno sviluppo rapido. Le pagine e i componenti sono sviluppate il Java mentre i template possono essere realizzati in Velocity, FreeMarker o JSP. Click utilizza un modello basato su eventi per l’elaborazione delle Servlet, in particolare si avvale di una singola Servlet (ClickServlet) per gestire le richieste. Al momento della ricezione di una richiesta, ClickServlet crea un oggetto Page per elaborare la richiesta e utilizza il template per formattare i risultati. Poiché privo di numerosi livelli di astrazione, Apache Click risulta di facile apprendimento e utilizzo, anche grazie alla disponibilità di documentazione e tutorial. 4.2.3 OpenXava OpenXava è un framework Open Source per lo sviluppo di applicazioni Web basate sugli standard Java Enterprise. Quali funzionalità pressoché "out-of-the-box", OpenXava permette di realizzare moduli CRUD e reportistica standard in modo estremamente agevole. Risulta tuttavia flessibile per estendere le funzionalità standard e sviluppare ad hoc le caratteristiche più avanzate o specifiche. La filosofia di OpenXava è quella di impiegare esclusivamente codice Java, eventualmente corredato di Annotations Java o documenti XML. Le tecnologie impiegate, che presentano una complessità estremamente ridotta, risultano: POJOs (Plain Old Java Object), senza ricorso ad oggetti speciali, quali gli Enterprise Java Bean 47 Le alternative ad eXtraSheet Java Persistence API, un framework che permette di gestire dati provenienti da database relazionali all'interno della piattaforma Java Java Annotation, una sorta di metadati che possono essere aggiunti al codice sorgente e reperibili a run-time. OpenXava permette allo sviluppatore di definire, senza la necessità di programmare, l'accesso ai dati, il comportamento e le funzionalità dell'applicazione. In tal modo, molte caratteristiche standard sono realizzate con estrema facilità mentre il programmatore può sviluppare ad hoc nuove funzionalità o modificare qualsiasi componente. Il noto paradigma Model-View-Controller non viene utilizzato in favore dell'approccio business component. Un business component è un’entità autonoma (tipicamente consiste in una classe Java) che contiene tutte le informazioni necessarie per definire un concetto di business (ad esempio, l'operazione di pagamento). In un componente business, è possibile definire: la struttura dei dati; le validazioni, i calcoli e le elaborazioni legate al concetto di business; le viste e le modalità di presentazione o esportazione dei dati; ORM (Object Relational Mapping), cioè le informazioni per convertire le tabelle di un database in oggetti per l'applicazione Java. Un business component non definisce tuttavia le azioni che l'utente può intraprendere nell'applicazione. Questo viene definito nei controller, una serie di azioni che possono essere condivise in diversi business component. Un'applicazione OpenXava è infine una serie di moduli: ogni modulo unisce un componente di business con uno o più controller. Ogni modulo dell'applicazione è una funzionalità disponibile per l’utente. Rispetto al modello MVC, la suddivisione è di carattere funzionale ed è più efficiente quando la struttura dati o la logica varia frequentemente. OpenXava offre una elevata produttività nello sviluppo di applicazioni business e presenta una curva di apprendimento ridotta, anche grazie alla buona disponibilità di tutorial. Le applicazioni generate sono completamente in Java EE e l'interfaccia utente con tecnologia AJAX. è pienamente compatibile con gli application server più diffusi (Tomcat, JBoss, ...). 48 Le alternative ad eXtraSheet 4.3 Open source basati su tecnologie differenti 4.3.1 Xataface Xataface è uno strumento altamente flessibile e personalizzabile che permette di trasformare un database MySQL in un’applicazione Web funzionale. È possibile generare form, liste e menù per realizzare un’applicazione di data management basata sul noto database MySQL. Pur avendo una serie di funzionalità standard che offrono già un’applicazione completa, Xataface risulta flessibile, permettendo allo sviluppatore di modificare le caratteristiche e il comportamento dell’applicazione tramite diversi strumenti. Per le modifiche più semplici (es. creazione di una lista) sono impiegati semplici file testuali di configurazione, mentre per personalizzazioni consistenti si usano template e plugin. Xataface è un progetto open source destinato agli sviluppatori Web e ai database administrator per realizzare rapidamente un front-end per il database MySQL di facile utilizzo, destinato ad utenti non esperti in ambito IT. Rispetto ai framework Java, la potenzialità più rilevante è la semplicità di setup ed i requisiti di piattaforma software estremamente ridotti: è sufficiente un Web server dotato di interprete PHP (versione 4 o superiore) e il RDBMS MySQL (versione 3.23 o superiore). Nella documentazione ufficiale, viene evidenziato che Xataface si pone l’obiettivo di coprire una ―nicchia‖ che non è servita da molte altre soluzioni. Xataface non è un database administrator quale PHPMyAdmin, non una libreria-framework quale PHPCake e nemmeno un Content Management System o un generatore di codice sebbene prelevi da ognuna di queste categorie qualche funzionalità. Xataface è un framework atipico, poiché la maggior parte dei framework richiedono una sostanziale componente di sviluppo per ottenere un’applicazione completa. Con Xataface è infatti possibile creare un’applicazione di data management in pochi minuti, senza sviluppare codice. Xataface, a sua volta, non genera codice aggiuntivo, rendendo l’applicazione manutenibile o estensibile con sviluppi ad hoc. Tra le numerose feature offerte da Xataface, si possono citare le seguenti: 1) front-end per database, realmente out-of-the-box; 2) interfaccia utente semplice ed intuitiva, estremamente semplice da ―navigare‖; 3) configurazione avanzata dell’applicazione mediante semplici file testuali; 4) sistema di autenticazione e delle permission potente e configurabile; 5) gestione dell’integrità referenziale tra le tabelle; 6) possibilità di personalizzazioni mirate osservando semplici convenzioni (es. esecuzione di operazioni specifiche all’inserimento di un record); 49 Le alternative ad eXtraSheet 7) elevata modularità: sono disponibili numerosi moduli aggiuntivi ed è disponibile una semplice API per realizzare i propri moduli personalizzati; 8) ampia gamma di funzionalità di editing (es. uso di widget, data grid, copia di record, upload di file, …); 9) funzioni di ricerca semplice o avanzata; 10) esportazione dei dati nei formati RSS, XML, CSV, JSON; 11) gestione delle impostazioni internazionali Con l’ultima release, Xataface si dimostra un prodotto maturo ed affidabile da poter essere impiegato in ambito aziendale, in grado di garantire facilità di amministrazione e ottima manutenibilità. 4.3.2 VFront VFront è un front-end Web based in tecnologia PHP per database MySQL o PostgreSQL. Rispetto alle soluzioni sinora identificate, il target di VFront è più limitato e appare già un prodotto completo, pressoché solamente da installare. VFront è un progetto open source italiano, sviluppato da una community molto ristretta, composta perlopiù dal suo fondatore. Seppur VFront abbia avuto origine molto recentemente, indicativamente all’inizio dell’anno 2007, è una soluzione completa e ricca di funzionalità. Può essere utile ad enti o organizzazioni che utilizzano database MySQL o PostgreSQL e che debbano far accedere i propri dipendenti ai database per la consultazione, l'inserimento o la modifica dei dati, senza sviluppare un client ad-hoc e mediante l'uso di un semplice browser Web. L'applicazione è rivolta a chi, genericamente, necessiti di un frontend per database installabile e configurabile con poco sforzo in tempi rapidi. VFront può essere pensato come strumento di interfaccia per database, e svolgere alcune funzioni come MS Access, con il vantaggio di essere consultabile in rete, direttamente dal browser. Non è uno strumento di amministrazione di database come PHPMyAdmin, né lo sostituisce: l'interfaccia è rivolta all'utente finale che opera sui dati. L'interfaccia di VFront è pensata quindi per utenti finali non esperti, che possano operare sui dati in sicurezza con una interfaccia familiare ed intuitiva. VFront è particolarmente utile quando diversi utenti o tipologie di utenti debbano accedere alle tabelle con differenti privilegi: grazie al sistema altamente personalizzabile dei gruppi e dei diritti è possibile far accedere diversi gruppi di dipendenti solo a specifiche tabelle o viste, mostrare o nascondere campi a determinati gruppi, impostare regole per la validazione degli input e tenere sotto controllo l'attività sul database. VFront possiede inoltre moduli di esportazione dati, statistiche e gestione di reportistica basata su XML, XSL e XSL-FO. Analogamente a Xataface, VFront richiede esclusivamente un Web Server (preferibilmente Apache HTTP Server 2.0 o superiore) dotato di interprete PHP (versione 5.0 o superiore) e del RDBMS MySQL (versione 5.0 o superiore) oppure PostgreSQL (versione 8.0 o superiore). Sono inoltre richiesti opzionalmente ulteriori moduli per funzionalità aggiuntive, tra le quali la reportistica grafica. 50 Le alternative ad eXtraSheet Lato client, sono supportati la maggior parte dei browser che necessitano esclusivamente la compatibilità con Javascript. Nella user guide sono presenti i seguenti principi, che hanno guidato lo sviluppo di VFront: 1. VFront non sporcherà il database creando tabelle o viste aggiuntive e non modificherà i dati delle tabelle, a meno che non lo si effettui tramite la sua GUI. Verrà invece creato un database di regole (o un suo schema su PostgreSQL): VFront non prende possesso del database, ma permette di usarlo più agevolmente. 2. VFront non bypasserà le regole impostate nel database: è possibile creare nuovi vincoli più restrittivi di quelli presenti (in termini di chiavi esterne, input accettabili, etc.), ma mai il contrario. 3. VFront funzionerà tanto meglio quanto più sia stata rigorosa la definizione del database. VFront supporta la normalizzazione, le chiavi esterne, le chiavi primarie ed i commenti sulle tabelle e sui campi. Come già anticipato, VFront dispone di innumerevoli funzionalità di configurazione (tra cui anche la gestione delle traduzioni delle stringhe), mentre non viene reso esplicito nulla riguardo la disponibilità di API o alla possibilità di estensione e personalizzazione con codice sviluppato ad hoc. Essendo disponibili i codici sorgente, appare comunque agevole la realizzazione di una o più interfacce per l’integrazione di moduli esterni. La documentazione di VFront risulta completa e dettagliata, mentre il supporto tecnico appare limitato poiché la community del progetto risulta poco attiva. 51 Casi di studio 5 Casi di studio Dopo aver individuato e fornito una descrizione generale sulle alternative ad eXtraSheet, il candidato ha provveduto a sviluppare alcune applicazioni utilizzando le diverse piattaforme, cercando di far emergere gli aspetti distintivi di ognuna. La maggioranza delle soluzioni sviluppate sono state commissionate da Cefin Systems, e quindi sviluppate prevalentemente su eXtraSheet, limitandosi a considerare in termini previsionali quale sarebbe stato il grado di difficoltà nello sviluppare soluzioni analoghe con le altre piattaforme identificate. 5.1 Applicazione standard di Data Management Il caso di studio più semplice che è stato preso in esame riguarda un’applicazione standard di data management, che richiede le funzionalità tipiche di un front-end per database. Nel caso specifico, l’applicazione è denominata Sateltrack Admin, uno strumento in grado di registrare e conservare dati relativi alla fornitura di Sateltrack, inseriti dagli addetti al supporto tecnico di Cefin Systems (Italia e Romania) e una serie di partner tecnologici in tutta Europa. 5.1.1 eXtraSheet L’implementazione su eXtraSheet era già presente e utilizzata da Cefin Systems da circa due anni. Rispetto al progetto riportato in figura, i principali sheet risultano: - THOR (Telematic Hardware Online Repository), dove il personale tecnico provvede alla registrazione dei veicoli sui quali viene installata la periferica per Sateltrack, includendo una serie di dettagli relativi alla configurazione, alla certificazione e eventuali interventi successivi. - TTS (Ticket Tracking System), che permette la gestione di tutti i ticket relativi alle richieste di supporto da parte dei clienti per tutti i prodotti Cefin Systems. Il personale infatti provvede alla registrazione di una richiesta e questa verrà poi presa in carico da altri specialisti sino a quando non sarà risolto il problema. 52 Casi di studio Figura 5.1 - Pagina principale di Sateltrack Admin su eXtraSheet La creazione dell’applicazione con eXtraSheet risulta particolarmente intuitiva, e si realizza esclusivamente tramite l’interfaccia grafica; come mostrato parzialmente in figura per lo sheet THOR, è sufficiente specificare il tipo di campi desiderati e le loro caratteristiche. Nei dettagli di ogni campo è possibile applicare una serie di impostazioni (es. contenuto di una lista, dimensioni della casella di testo, limite alla lunghezza del campo, …). Figura 5.2 - Pagina di creazione di uno sheet su eXtraSheet Una volta completata la creazione della struttura, sono immediatamente disponibili il form di dataentry e un’interfaccia di visualizzazione dei dati. In figura è riportata GUI di data-entry per lo sheet THOR. 53 Casi di studio Figura 5.3 - Form di data-entry su eXtraSheet Le liste predefinite, impiegate ad esempio per i campi ―Service provider‖, ―Equipment type‖, ―Products‖ e ―Input 1‖ sono gestite nella sezione Lists, dove sono contenute tutte le liste del progetto ―Sateltrack Admin‖. Nelle due figure successive sono mostrate la sezione Lists e il dettaglio per la lista ―Products‖ e la lista figlio ―Team‖: ogni prodotto ha solo determinati team disponibili. 54 Casi di studio Figura 5.4 - Elenco delle liste predefinite su eXtraSheet Figura 5.5 - Gestione delle liste predefinite su eXtraSheet Figura 5.6 – Gestione dei gruppi di utenti su eXtraSheet 55 Casi di studio 5.1.2 WaveMaker Lo sviluppo con WaveMaker viene effettuata tramite il Visual Ajax Studio, l’IDE fornito per lo sviluppo intuitivo delle applicazioni in ottica WYSIWYG. Non è quindi possibile realizzare l’applicativo tramite una GUI utente semplice come eXtraSheet e risulta necessaria la conoscenza dell’ambiente di sviluppo Wavemaker, che risulta tuttavia intuitivo e non richiede alcun sviluppo di codice. In questa applicazione, Sateltrack Admin sono stati importati i database esistenti e configurati per WaveMaker. Attraverso i Live Forms è quindi risultato particolarmente semplice realizzare una applicazione CRUD quale è Sateltrack Admin. Entrando nel dettaglio, dopo la lettura della User Guide di Wavemaker, i principali passi seguiti per l’implementazione sono stati i seguenti: 1) Creazione del layout dell’applicazione, mediante l’inserimento e la configurazione di elementi predefiniti (Centered Layout, Title Bar, Tabs, Search List Detail). 2) Importazione del database che richiede anzitutto la configurazione di un servizio database (indicando in motore DBMS, indirizzo IP, porta, credenziali e nome del database), l’importazione dello schema da parte di Wavemaker e quindi la creazione di una vista su di esso (LiveView) selezionando i campi desiderati e le loro caratteristiche. In figura è rappresentata la vista per THOR, dove è già possibile visualizzare l’anteprima dei risultati. 3) Creazione della LiveVariable, un oggetto che permetterà di utilizzare la vista nei componenti di Wavemaker. È sufficiente assegnare come LiveSource la vista appena creata e svolgere le operazioni di associazione ai componenti della pagina, ad esempio alla search box e alla Data Grid. Infine è necessario impostare al Live Form il Dataset DataGrid.SelectedItem, in modo da visualizzare nel form il record selezionato dall’elenco. Nella figura seguente è riportato uno screenshot che rappresenta l’aspetto dell’IDE di WaveMaker durante lo sviluppo dell’applicazione. 4) Personalizzazione del form per facilitare l’uso da parte dell’utente e garantire la correttezza del data-entry. Ad esempio alcuni campi sono stati impostati come liste predefinite, configurate tramite la GUI di WaveMaker. Rispetto ad eXtraSheet, è stato necessario creare un database ad hoc per ogni lista predefinita, rendendo la realizzazione più laboriosa. 5) Impostazione dei permessi di accesso, creando una apposita tabella sul database ed associandola alla funzionalità predefinita di login fornita da Wavemaker. 56 Casi di studio Figura 5.7 - Creazione di una vista sul database in Wavemaker Figura 5.8 - WaveMaker Visual AJAX Studio 57 Casi di studio L’applicazione finale è stata ultimata senza particolari difficoltà, anche se la complessità dell’IDE Web based determinano un’affidabilità non ottimale e la necessita di piccoli re-work o riavvii del server durante lo sviluppo, pur utilizzando la configurazione software consigliata. Inoltre la realizzazione con WaveMaker fornisce in output i sorgenti per effettuare il deploy su un Application Server, che dovrà essere effettuato ogni volta che si effettuano modifiche alla struttura dell’applicazione. In figura è riportato uno screenshot dell’applicazione Sateltrack Admin basata su WaveMaker. Figura 5.9 - Sateltrack Admin realizzata con WaveMaker 5.1.3 VFront VFront ha consentito di realizzare un’altra versione di Sateltrack Admin impiegando la nota coppia PHP-MySQL. Anche in questo caso la fase formativa non è risultata particolarmente complessa: la relativa semplicità della piattaforma ha consentito un’installazione agevole e la user guide ha fornito le istruzioni dettagliate per l’utilizzo di VFront. Rispetto a WaveMaker, VFront non fornisce un ambiente di sviluppo grafico di ―back-end‖ bensì un front-end Web analogo ad eXtraSheet per la configurazione completa dell’applicazione. Risulta solamente necessario realizzare lo schema del database (MySQL o PostgreSQL) tramite una query SQL oppure uno dei tanti front-end di progettazione disponibili per i RDBMS citati: tutte le successive operazioni sono eseguibili con VFront. Nel caso specifico sono stati importati i database di THOR, TTS e THOR setup (una tabella per la configurazione di un’applicazione esterna che utilizza i dati di THOR). VFront appare immediatamen58 Casi di studio te un’applicazione user friendly, funzionalmente molto simile ad eXtraSheet ma maggiormente ancorata al database, sia come terminologia utilizzata nell’interfaccia sia per gli strumenti utilizzati (viste, liste basate su tabelle, …). Il sistema di permission, anch’esso out-of-the-box, risulta adeguato e prevede l’organizzazione degli utenti in gruppi e la definizione delle regole tramite l’interfaccia grafica disponibile a tutti gli utenti amministratori. Le macro-fasi che hanno condotto alla realizzazione dell’applicazione sono le seguenti: 1) Creazione (o definizione) delle tabelle che si desidera gestire in VFront. 2) Creazione dei gruppi a cui si desidera assegnare gli utenti. VFront richiede infatti almeno un gruppo per procedere con l’impostazione delle tabelle. 3) Configurazione delle tabelle tramite la GUI di VFront, che suddivide in quattro sezioni le impostazioni da assegnare: a. Definizione della categorie di operazioni che l’utente potrà effettuare tramite VFront. Tali azioni sono le tipiche permission di un database e alcune aggiuntive, in particolare la possibilità di importare/esportare i dati o di inserire file allegati al record. È possibile scegliere di impostare tali permission solo per il gruppo attualmente selezionato oppure per tutti i gruppi esistenti. b. Configurazione dei campi, specificando se deve essere visibile nel form e/o nella visione ―grid‖ e indicando per ognuno la tipologia di dati. Se il campo deve essere scelto dall’utente tramite una lista predefinita, questa può essere impostata scrivendo manualmente le opzioni oppure configurando una ulteriore tabella del database dalla quale prelevare gli elementi della lista. Analogamente alle permission è possibile scegliere se impostare la attuale configurazione dei campi per tutti i gruppi oppure solo per quello corrente. Tipicamente risulta conveniente la prima scelta e, in seconda istanza, risulterà agevole effettuare le modifiche sugli altri gruppi (es. rendere invisibile un campo, modificare gli elementi di una lista per un gruppo specifico). c. Ordinamento dei campi, impostando mediante una pratica funzionalità Javascript l’ordine di presentazione dei campi della tabella mostrata nella scheda. d. Impostazione di eventuali sottomaschere, per gestire le relazioni "uno a molti" e "molti a molti". VFront propone le sottomaschere quando per un record di una tabella, ci siano molti record figli: all'utente saranno visibili dalla vista scheda mediante un box con dei pulsanti nei quali è indicato il numero di tali istanze e la possibilità di visualizzarle. Tale funzionalità non è stata impiegata in Sateltrack Admin ma si percepisce l’utilità in applicazioni più complesse. 59 Casi di studio 4) Configurazione degli utenti: è possibile effettuarlo tramite l’interfaccia di VFront, che permette anche l’invio della relativa notifica e-mail all’utente, oppure direttamente sul database (utile ad esempio quando già si dispone di una tabella contenente gli utenti da creare). Figura 5.10 - Configurazione delle permission sulla tabella in VFront 60 Casi di studio Figura 5.11 - Configurazione dei campi in VFront Il risultato ottenuto è riportato in figura: quando un utente standard (non amministratore) effettua correttamente l’operazione di login, visualizza la schermata contenente le tabelle e le viste disponibili (in questo caso sono state create due viste di test, relative alla tabella TTS per facilitare la ricerca delle richieste di supporto per Cefin Systems Italia). 61 Casi di studio Figura 5.12 - Pagina principale di Sateltrack Admin (VFront) Analizzando nel dettaglio l’interfaccia per THOR, il form generato da VFront è riportato (parzialmente) in figura e presenta i campi del database, come sono stati configurati dal front-end. Si possono notare i campi read-only (ID e response number), le liste predefinite, i campi data (dotati del pratico calendario in Javascript) e i campi testuali che tuttavia non sono personalizzabili in termini di posizione e dimensioni (è disponibile solo la riga singola oppure il box a 10 righe). Oltre alla classica navigazione tra i record (simile a MS Access), è utile la funzione ―Duplicate‖ che permette di copiare un record (per modificarne solo il necessario) e la possibilità di inserire allegati (attachments) al record. La ricerca avviene inserendo in un nuovo form i valori desiderati e VFront fornirà i soli record che conterranno esattamente i valori inseriti (es. ricercando sul campo vehicle model ―Iveco‖ verranno mostrati solo i record con tale campo uguale a ―Iveco‖ e non ad esempio ―Iveco Daily‖. L’esportazione completa dei dati è possibile nei formati CSV, HTML, ODS (OpenOffice Spreadshet) ed XLS (MS Excel). È inoltre possibile importare dati in formato CSV tramite una procedura frazionata in 4 step. 62 Casi di studio Figura 5.13 - Form di data-entry in VFront Attraverso la visuale ―grid‖ sono presentati in gruppi (20 record di default) gli elementi della tabella, con una GUI simile a MS Excel. Con un doppio click sul record viene aperta la relativa maschera di data-entry, mentre cliccando sulle intestazioni, gli elementi (ma solo della schermata corrente) vengono ordinati in base a tale campo. 63 Casi di studio Figura 5.14 - Grid view in VFront 5.1.4 Xataface Xataface ha permesso di realizzare un ulteriore versione dell’applicazione Sateltrack Admin, impiegando la stessa piattaforma di VFront (Apache Server, PHP e MySQL). Rispetto a quest’ultima, Xataface appare inizialmente una soluzione più professionale ma si rivela meno ricca di funzionalità. Come nei casi precedenti, è anzitutto necessario realizzare o importare un database esistente, esclusivamente in formato MySQL. Contrariamente a VFront ed eXtraSheet, Xataface non fornisce un front-end per la configurazione dell’applicazione da parte dell’utente amministratore ma tali procedure sono da effettuarsi creando dei file testuali di configurazione. Sebbene richiedano l’accesso ai server di produzione, queste operazioni risultano tuttavia estremamente semplici ed espletabili da personale non tecnico. Come nelle precedenti versioni, sono stati importati i database di THOR, TTS e THOR setup. I tempi di setup sono risultati estremamente ridotti, probabilmente inferiori a VFront o Wavemaker e paragonabili a quelli di eXtraSheet. A prima vista si nota immediatamente un aspetto grafico e un layout dell’applicazione molto simile ad eXtraSheet. La procedura seguita per lo sviluppo con Xataface risulta la seguente: 1. Creazione (o importazione) delle tabelle che si desidera gestire in Xataface. 2. Creazione dei file di configurazione di base, in particolare il file conf.ini per le impostazioni del database e il file index.php per specificare le directory di Xataface e inizializzare l’applicazione. 64 Casi di studio 3. A questo punto l’applicazione risulta già fruibile: tutte le funzionalità di base sono abilitate e si dispone di un front-end completo per il database configurato. Rimangono tuttavia da svolgere una serie di perfezionamenti indispensabili per un’applicazione Enterprise, quali la funzionalità di login e la gestione delle liste predefinite. 4. Creazione delle liste predefinite e traduzione dei campi, entrambi attraverso dei file testuali. Le liste predefinite, gestite tramite il file valuelists.ini, sono definite specificando per ogni elemento il valore visualizzato nell’interfaccia e il corrispondente valore che verrà inserito nel database. La traduzione dei campi (dal nome della colonna nel DB al nome visualizzato, accompagnato eventualmente una breve descrizione) sono effettuate nel file fields.ini dove è possibile indicare numerose impostazioni per ogni singolo campo, tra cui le regole per la validazione (dalla semplice verifica della lunghezza all’uso di espressioni regolari). È stata riscontrata l’impossibilità di scegliere l’ordinamento di presentazione dei campi (quantomeno in modalità out-of-the-box), funzionalità utile ma non difficile da realizzare ad hoc, dato che i sorgenti sono disponibili e non eccessivamente complessi. 5. Creazione di un semplice sistema di permission. Nonostante le numerose funzionalità per la gestione dei permessi di accesso, per Sateltrack Admin sono stati implementati solamente i due ruoli tipici, Admin e Read-only, per l’accesso all’applicazione. Per far ciò è stato necessario creare una tabella ad hoc nel database, aggiungere un’impostazione di configurazione nel file conf.ini e creare una classe PHP per la definizione delle regole, che in questo caso è stata esattamente quella indicata negli esempi contenuti nella user guide di Xataface. L’applicazione ottenuta è riportata in figura: dopo aver effettuato il login, l’utente visualizza direttamente il foglio relativo ad una delle tabelle disponibili. Sono disponibili una serie di funzionalità standard, tra cui l’ordinamento in base ad una specifica colonna, la navigazione tra i record indicando il numero di entry per pagina, l’inserimento di nuovi record, la duplicazione o la modifica di record esistenti e l’importazione di nuovi record. 65 Casi di studio Figura 5.15 - Visualizzazione standard dei record in Xataface Nella sezione ―details‖ è disponibile la visualizzazione singola dei record, permettendo di esaminarli più in dettaglio. Nella sezione ―find‖ si accede alle funzionalità di ricerca avanzata, potendo specificare per uno o più campi i valori desiderati, anche parziali. La funzionalità ―grid‖ permette inoltre di accedere ad una visualizzazione simile a VFront, con la possibilità di inserire nuovi record direttamente da tale interfaccia e ottenere ordinamenti su tutti i record e non solo su quelli visualizzati al momento. Nella figura seguente è riportato il form generato da Xataface per l’inserimento o l’aggiornamento dei record che risulta piuttosto simile a VFront. 66 Casi di studio Figura 5.16 - Xataface, form di inserimento o editing Xataface risulta quindi una soluzione simile a VFront che, a fronte di una maggiore versatilità e rapidità, richiede la gestione dell’applicazione tramite alcuni file di configurazione. Xataface dispone inoltre di API e funzionalità standardizzate per estendere con facilità l’applicazione, trasformandola da un semplice front-end per database ad una soluzione completa. 5.2 Applicazione per questionari on-line Il secondo caso di studio è stato svolto durante la collaborazione per lo sviluppo di un’applicazione per un cliente di Krescendo Ltd. A causa della complessità dell’applicazione, lo sviluppo dell’applicazione è avvenuto solo su piattaforma eXtraSheet e a causa di limiti temporali sono state svolte solo alcune prove isolate sulle altre alternative. Di seguito si propone comunque una previsione della difficoltà e dei tempi che sarebbero stati necessari per sviluppare un’applicazione analoga con le altre alternative a confronto. 67 Casi di studio Il candidato è stato messo in contatto con il team della società Krescendo incaricato di sviluppare un progetto di valutazione del personale mediante questionari di soddisfazione, affinché i manager dell’azienda committente potessero ottenere i feedback provenienti dal personale. 5.2.1 Lo sviluppo su eXtraSheet L’applicazione è stata interamente sviluppata su eXtraSheet ed è stata suddivisa in due moduli distinti: 1) Compilazione dei questionari da parte del personale. Gli aspetti principali oggetto di analisi sono stati: a. Individuazione delle permission, basate sulla struttura organizzativa dell’azienda, per stabilire ―chi deve valutare chi‖. b. Realizzazione dei questionari su eXtraSheet, contrattazione e analisi con l’azienda committente di sezioni, scale di valutazione e domande. 2) Generazione di reportistica di sintesi (in forma anonima), che rappresentava i punteggi e le valutazioni aggregate, destinata ai manager o alle altre figure professionali valutate. Aspetti fondamentali in questo ambito sono risultati: a. Valutazione delle tipologie di reportistica necessarie e delle soluzioni più idonee (report o grafici di sintesi). b. Individuazione delle permission di accesso ai report. Figura 5.17 - Questionario (parziale) realizzato su eXtraSheet per la valutazione del personale 68 Casi di studio Figura 5.18 - Report (parziale) relativo alle valutazioni ricevute da una divisione aziendale Dopo le classiche fasi di raccolta dei requisiti e stesura delle specifiche funzionali che il candidato non ha seguito poiché non rilevanti ai fini della propria attività, è stato avviato lo sviluppo. La prima fase è stata la predisposizione del questionario, realizzato direttamente dal responsabile commerciale di Krescendo che seguiva il committente: tali operazioni sono state svolte con facilità, grazie alla semplicità di eXtraSheet nel realizzare strutture dati, form di data-entry, liste di gruppi ed utenti. Al termine di questa fase alcuni dipendenti del committente avevano già la possibilità di provare l’applicazione e valutare l’adeguatezza dei questionari e della procedura di compilazione. Durante la seconda fase, il candidato ha provveduto allo sviluppo diretto di alcune porzioni di reportistica, essendo questa la componente totalmente personalizzata dell’applicazione. I report di sintesi erano da generarsi mediante JFreeChart e JasperReports, e dovevano contenere una serie di grafici utili a fornire indicazioni immediate sul grado di soddisfazione dei dipendenti. Tali sviluppi prevedevano dunque la tradizionale programmazione ad oggetti in Java (ambiente Eclipse), sfruttando l’infrastruttura (package sviluppati ad hoc) offerta da eXtraSheet. Sono state sviluppate classi Java per il calcolo dei risultati aggregati, per la generazione di grafici in JFreeChart e l’inserimento di questi in file PDF creati mediante JasperReports. I file PDF venivano quindi generati dinamicamente e mostrati direttamente sul browser dell’utente anziché visualizzare pagine (X)HTML. Al termine dello sviluppo e del testing necessario è stata effettuata la release sui server di produzione di eXtraSheet, fornendo l’applicazione finale al cliente. In conclusione, si desidera evidenziare che il bilancio in termini di effort per lo sviluppo di tale applicazione è stato estremamente modesto: paragonandolo ad uno sviluppo tradizionale, ad esempio su piattaforma J2EE con le classiche Servlet e JSP, sarebbe risultato molto più dispendioso in termini di 69 Casi di studio tempi e quindi di costi. Nonostante la seconda fase (sviluppo di reportistica personalizzata) sia stata comunque laboriosa ed abbia richiesto programmazione, le numerose funzionalità out-of-the-box hanno consentito un risparmio di tempo del 40% circa rispetto ad uno sviluppo in J2EE e almeno il 20% rispetto alla piattaforma PHP. 5.2.2 Previsioni per le altre piattaforme Le piattaforme alternative ad eXtraSheet sono state paragonate ―a tavolino‖ per stabilire se fossero più o meno efficienti nello sviluppo di un’applicazione per la gestione dei questionari simile a quella realizzata. Impiegando VFront, si sarebbero ottenuti risultati molto simili ad eXtraSheet e probabilmente anche superiori: la piattaforma dispone infatti di notevoli funzionalità di reportistica che avrebbero supportato anche la creazione dei grafici con effort ridotti e con sviluppi di codice molto limitati. Ad un livello lievemente inferiore si posizionerebbe Xataface, dotato di funzionalità valide per la creazione del questionario ma nessuna possibilità di reportistica già disponibile. WaveMaker sarebbe probabilmente risultata la soluzione meno indicata, data la necessità di sviluppare tutto ex-novo, inclusa la gestione degli utenti e dei gruppi con le relative permission, per un’applicazione medio-piccola. Inoltre, per questa applicazione, la complessità della piattaforma J2EE sarebbe forse eccessiva per le reali esigenze (è necessario un basso carico di elaborazione). 5.3 Applicazione di Web Timesheet Il terzo caso di studio ha riguardato lo sviluppo di un’applicazione completa di media complessità. Si tratta di un progetto di Timesheet Management fruibile interamente su Web, per una società di costruzioni immobiliari cliente di Cefin Systems. L’interfaccia Web doveva consentire ad ogni dipendente dell’azienda l’inserimento del proprio timesheet giornaliero, cioè il dettaglio delle ore lavorate in termini di ―quanto‖, ―quando‖ e ―cosa‖ (es. 6 ore, il 18/05/2009, sulla commessa ―Electrical System‖ del progetto ―Cortina Residential‖). Il personale autorizzato necessitava quindi di effettuare il monitoraggio delle risorse umane, verificando i timesheet inseriti dai dipendenti e accedendo a reportistica che avrebbe supportato una efficiente organizzazione del personale. La struttura degli sheet su eXtraSheet a supporto della memorizzazione dei timesheet era già definita e utilizzata da tempo dal committente, ma risultava difficilmente gestibile, poiché scarsamente user-friendly e le operazioni di data entry erano centralizzate (tipicamente effettuate dagli addetti alla contabilità). Ai fini del presente elaborato, il candidato desidera sottolineare l’importanza di questa situazione, cioè l’insufficienza nella maggior parte delle applicazioni richieste dai clienti business della sola piattaforma di data-management, sia questa eXtraSheet, VFront o una delle rimanenti. 70 Casi di studio L’applicazione, eXtraSheet based, aveva quindi l’obiettivo di garantire un miglior monitoraggio dei tempi, costi ed attività del personale, permettendo la gestione individuale dei timesheet e offrendo ai manager report relativi ai timesheet aggregati. Le funzionalità principali sono riportate di seguito. 5.3.1 Personal Timesheet Il modulo fruibile dal dipendente, denominato Personal Timesheet, doveva consentire l’accesso ad un calendario interattivo (contenente interazioni di tipo AJAX), tramite il quale dichiarare le proprie presenze: per il giorno desiderato, indicare il numero di ore lavorate su una commessa di un determinato progetto, lasciando eventualmente commenti aggiuntivi. Oltre alle funzionalità di modifica/eliminazione di valori inseriti in precedenza, la pagina doveva contenere anche un report per tutto il mese correntemente visualizzato, riportante il totale ore complessivo ed il totale ore per un determinato progetto. Figura 5.19 - Funzionalità di Personal Timesheet 5.3.2 Timesheet Controller Per utenti con permission di controllo è inoltre disponibile una pagina contenente un report mensile, contenente a livello giornaliero il numero totale di ore inserite dai dipendenti per ogni progetto e relativa commessa. Un’interazione di tipo AJAX permette di conoscere la ripartizione delle ore presenti in ogni cella tra i vari dipendenti. 71 Casi di studio Figura 5.20 - Funzionalità di Timesheet Controller Altre funzionalità offerte dall’applicazione, che oggi è divenuta molto più di un’applicazione di Timesheet Management, sono ad esempio: - KPI reports: pagine di sintesi per la valutazione dello stato di avanzamento di progetti real estate, in particolare riguardo gli scostamenti tra costi preventivati e sostenuti. - Project management: sistema di gestione e monitoraggio dei progetti real estate, con la possibilità da parte dei project manager di effettuare aggiustamenti riguardo le previsioni dei costi, impiegando le notifiche e-mail per informare gli altri stakeholder. 5.3.3 Considerazioni eXtraSheet ha consentito di realizzare un’applicazione Web completa in grado di supportare i calendari lavorativi di centinaia di utenti. La struttura solida e le personalizzazioni attuate hanno permesso di contenere i tempi e i re-work. La componente personalizzata risultava in questo caso circa il 50% delle funzionalità. Gli sviluppi sono stati organizzati in un package ad hoc, contenente (limitatamente ai moduli di Timesheet Management) 6 classi Java, per un totale di circa 1.600 righe di codice. Inoltre, sono stati impiegati i template FreeMarker per il lato presentazione; un file XML contiene tutte le costanti e le impostazioni per la configurazione dell’applicazione. 72 Casi di studio Sono fornite le funzionalità di string management e le impostazioni internazionali, impiegando in modo efficiente le tecniche predisposte per la piattaforma eXtraSheet. Le considerazioni riguardanti le altre piattaforme oggetto del seguente elaborato possono essere così sintetizzate: - WaveMaker risulterebbe più efficiente rispetto al caso dei questionari on-line, poiché la maggior incidenza delle funzionalità custom giustificherebbe lo sviluppo ad hoc e WaveMaker risulterebbe estremamente competitivo. - VFront e Xataface sarebbero sostanzialmente equivalenti: VFront beneficerebbe della maggior completezza dell’interfaccia e della reportistica mentre Xataface permetterebbe di utilizzare le API per uno sviluppo più rapido delle personalizzazioni. Quanto detto vale però dopo aver compiuto le necessarie verifiche e adattamenti delle piattaforme ad un utilizzo professionale poiché si ribadisce che entrambe le soluzioni non sono pienamente affidabili per un impiego di questo tipo. In conclusione si vuole però sottolineare il problema delle performance. L’applicazione gestisce volumi di dati notevoli: centinaia di utenti che utilizzano applicazioni interfacciate con database complessi (dati relativi a progetti, job order, anagrafiche dei dipendenti, presenze giornaliere, …). Indicativamente si può stimare che una schermata utente del timesheet possa richiedere l’aggregazione dei risultati di decine di query SQL. Impiegando eXtraSheet, che si avvale di livelli inferiori (si veda il framework uView) ad elevate performance, non sono riscontrabili problemi di efficienza mentre sarebbe preferibile condurre un’analisi delle performance prima di affermare che un’applicazione simile possa essere realizzata con una delle piattaforme alternative. 73 Benchmarking 6 Benchmarking Le comparazioni effettuate per orientare la scelta della soluzione più idonea sono basate sui casi di studio riportati nel capitolo precedente. Nella fase valutativa, il candidato ha tenuto conto dei seguenti principi di fondo: - Struttura del sistema, in termini di implementazione e parametrizzazione, esperienza e stabilità, prestazioni in presenza di dati e di flussi di lavoro crescenti, possibilità di integrazione, manutenzione e aggiornamento, indipendenza dalla base-dati e dalla piattaforma, … - Caratteristiche del sistema, quali flessibilità e facile generazione di report, struttura modulare e integrata, concetti e soluzioni validi internazionalmente, principi di sicurezza e di autorizzazione, adeguatezza delle funzionalità Web, … - Rischi, in particolare valutazioni e commenti reperibili sul Web riguardo la piattaforma in esame, eventuali garanzie di supporto tecnico, tipologia e politiche di licenza, orizzonte presumibile di prosecuzione dello sviluppo e aggiornamento da parte della società venditrice o dalla comunità open source. 6.1 Confronto dei risultati La prima fase di benchmarking è stata quella di confrontare le prestazioni ed i risultati ottenuti nello svolgimento dei casi di studio che nel capitolo precedente sono stati descritti sotto l’aspetto procedurale ed operativo. Come verrà descritto in dettaglio nei sottoparagrafi successivi, si può affermare che eXtraSheet è certamente una soluzione di riferimento nell’ambito ricercato, essendo sviluppata da una società commerciale con obiettivi funzionali e prestazionali ben definiti. Le altre soluzioni esaminate, tutte distribuite con licenza Open Source, sono state tuttavia molto sorprendenti, ognuna dotata di caratteristiche peculiari e spesso ricche di funzionalità realmente paragonabili ad eXtraSheet. 6.1.1 eXtraSheet: professionale e performante eXtraSheet è apparsa nei casi di studio una piattaforma stabile e potente. Rispetto alle altre alternative identificate si differenzia per le ottime performance nella gestione di volumi di dati consistenti e per la disponibilità di un modello ad oggetti, sviluppato ad hoc dalla società Krescendo, orientato allo sviluppo di personalizzazioni con estrema rapidità. Sotto l’aspetto funzionale, la piattaforma risulta altrettanto completa, permettendo anche la progettazione e l’amministrazione dell’applicazione mediante interfaccia Web, senza la necessità di alcuna competenza tecnica. I principali aspetti positivi e negativi che contraddistinguono eXtraSheet sono: 74 Benchmarking Performance elevate Scalabile e idoneo ad estendere un’applicazione di data management con personalizzazioni complesse Affidabile e professionale Sistema complesso, richiede allo sviluppatore di conoscere la piattaforma J2EE ed è necessaria formazione ad hoc Poco versatile nella creazione di piccole personalizzazioni Licenza proprietaria, concessa da Krescendo a prezzi presumibilmente elevati 6.1.2 VFront: clone PHP di eXtraSheet VFront è il clone di eXtraSheet su piattaforma PHP+MySQL e Open Source. L’idea di business è la medesima e le funzionalità sono molto simili, ad eccezione della progettazione del DB che deve essere effettuata esternamente. Non si può dire altrettanto per le performance e la maturità del prodotto, che risulta tuttavia già utilizzabile e relativamente affidabile. Con sforzi limitati è possibile aggiornare e sviluppare VFront per portarlo ad un livello pari ad eXtraSheet, con il vantaggio della licenza libera e della maggior semplicità della piattaforma PHP. Le principali osservazioni possono essere così sintetizzate: È l’applicazione più simile ad eXtraSheet Apparentemente ben strutturata a livello di codice Documentazione completa, community di sviluppo italiana Tempi di sviluppo ridottissimi, le funzionalità sono completamente out-of-the box Nessun sviluppo di codice: amministrazione e gestione sono effettuati tramite la GUI, l’unica operazione esterna è la progettazione del database. Performance non molto elevate durante la fase di importazione schema e generazione dei form Prodotto ancora in versione beta, presenza di qualche lieve baco String management e internazionalizzazione da verificare Formattazione dei form di data-entry non troppo curata Funzionalità di ricerca migliorabile Visualizzazione grid poco raffinata (ordinamento solo sui record correnti, impossibilità di scegliere il numero di record per schermata, intestazioni senza alias) Community Open Source poco attiva Richiede una considerevole revisione prima di essere impiegato per applicazioni Enterprise 75 Benchmarking 6.1.3 WaveMaker: altamente custom e IDE Web Nello svolgimento dei casi di studio, Wavemaker si è rivelata una soluzione differente rispetto alle altre: non fornisce un ambiente già disponibile ma richiede di sviluppare l’applicazione ex-novo. Questo non si traduce tuttavia in una complessità eccessiva: è disponibile un ambiente di sviluppo visuale ―drag-and-drop‖ e sono forniti una serie di componenti funzionali da inserire nelle pagine Web che richiedono una configurazione minima. È quindi possibile realizzare applicazioni Web in Java senza scrivere codice, tramite l’IDE grafico fornito con WaveMaker, testare in tempo reale l’applicazione e, al termine, esportare i file sorgente (o direttamente il file WAR) per effettuarne il ―deploy‖ sul server Apache Tomcat. Le conclusioni relative a WaveMaker risultano pertanto: Quantità di componenti utilizzabili con minima configurazione molto elevata Ideale per sviluppare applicazioni interamente custom Segue il paradigma J2EE Nessun componente out-of-the-box, il sistema di data-management deve essere sviluppato ogni volta, ad hoc. Affidabilità limitata, le applicazioni generate non sono sempre robuste Performance limitate Release piuttosto macchinose 6.1.4 Xataface: immediato Xataface si presenta come una soluzione di data-management molto veloce e leggera. L’installazione e il setup è estremamente rapida e la creazione di un’applicazione è particolarmente semplice ma richiede di essere configurata mediante file di testo (es. specifiche per il DB, liste predefinite, controlli sui campi, …). Quest’ultima caratteristica risulta pratica per applicazioni semplici, ma può diventare inefficiente in caso di applicazioni complesse e, in ogni caso, per essere effettuata da non tecnici, poiché è necessario interagire con il file system del server di produzione. Xataface richiederebbe pertanto uno sviluppo ex-novo dell’interfaccia di configurazione/amministrazione. In sintesi, gli aspetti positivi e negativi che contraddistinguono Xataface sono: Sviluppo molto rapido e semplice Presenza di API per lo sviluppo di personalizzazioni Prodotto abbastanza maturo, non sono stati individuati bachi di rilievo Nessuna GUI per la progettazione/amministrazione, effettuabili agendo direttamente sul DB e mediante file di configurazione Difficoltà ad amministrare applicazioni complesse mediante file testuali 76 Benchmarking Scalabilità limitata, necessita di una verifica delle performance Funzionalità out-of-the-box limitate Unico DBMS supportato (MySQL) 6.2 Metodologia QFD Il Quality Function Deployment (QFD) è un processo logico strutturato per raccogliere i bisogni ed i desideri del cliente e trasformarli in requisiti e specifiche tecniche per il prodotto da innovare. Il metodo QFD è un ambiente strutturato per guidare il progettista nel riconoscimento delle aspettative del cliente in termini di esigenze di qualità e per sviluppare (da cui il termine ―deployment‖) in modo sistematico le richieste dei clienti, operazione che conduce all’ottenimento di specifiche di prodotto o di servizio. L’insieme organizzato di matrici è altresì detto Casa della Qualità, lo strumento per la traduzione di bisogni ed aspettative in specifiche tecniche. Il principale obiettivo del QFD è il superamento dei seguenti limiti propri delle fasi di progettazione: - l'insufficiente attenzione per le esigenze dei clienti (acquisendo il fatto che la qualità va intesa come soddisfazione dei clienti); - la perdita delle informazioni concernenti obiettivi iniziali durante le altre fasi che caratterizzano il processo di sviluppo ed industrializzazione del prodotto/servizio; - la disomogeneità delle specifiche elaborate a partire dai requisiti, sulle quali operano persone e funzioni diverse. Una volta individuati i requisiti utente, la priorità loro attribuita ed il livello di soddisfazione attuale e, una volta elaborate le Provided Function, il progettista si chiede, per ogni requisito espresso dall’utente, quale/i Provided Function (che devono necessariamente essere misurabili e controllabili) del prodotto/progetto/sistema da realizzare permettono di soddisfarlo. Si giunge quindi alla fase di ―mapping‖ (costruzione delle corrispondenze) in cui vengono messi in relazione le Provided Function ed i requisiti utente mediante la Matrice delle Relazioni. Sfruttando la metodologia del QFD si procede alla sua applicazione per il sistema oggetto dello studio. Rispetto all’approccio classico, si propone tuttavia una versione differente del QFD, per ottenere sia il predetto mapping ma realizzare anche un processo di benchmarking per ricavare una graduatoria o ranking di carattere orientativo tra le piattaforme software sinora considerate. Più in dettaglio, la procedura che si propone è composta dai seguenti passi: 1) Esplicitare e prioritizzare i requisiti utente, che corrispondono in questo caso ai requisiti del progetto richiesto da Cefin Systems. 77 Benchmarking 2) Riorganizzare i requisiti di sistema che sono comparsi durante lo svolgimento dei casi di studio e il testing delle varie piattaforme. Tali caratteristiche, pur rimanendo ad un livello di dettaglio intermedio, permettono di valutare con maggior facilità le alternative. 3) Calcolare, mediante la matrice delle relazioni, una graduatoria delle caratteristiche tecniche per determinare quali siano i loro livelli di importanza. 4) Realizzare una sorta di benchmarking tra le quattro alternative in esame, esprimendo un giudizio sul livello di copertura di ognuna delle caratteristiche tecniche delineate e calcolando un punteggio complessivo e quindi una graduatoria per le quattro piattaforme. 6.2.1 Requisiti utente I requisiti utente sono stati ricavati dalla documentazione progettuale raccolta nella fase iniziale ed è stata effettuata una prioritizzazione secondo le indicazioni ricevute dagli stakeholder, seguendo la scala riportata in tabella. Alle informazioni provenienti dagli stakeholder del progetto si aggiungono quindi altre informazioni riguardanti i processi aziendali e le best-practice di Cefin Systems. Priorità dei requisiti utente 1 Trascurabile 2 Preferibile 3 Importante 4 Molto importante 5 Indispensabile Tabella 6.1 - Scala di priorità per i requisiti utente Codice Req. a b c d e f g h i l m n o p q r Importanza ass. Requisito Utente Time to Market ridotto Stima precisa dei tempi di realizzazione Implementazione tramite GUI di funzionalità base Implementazione agevole di funzionalità base Sviluppo flessibile Facilità di rilascio e manutenzione Possibilità di estendere facilmente l'applicazione Attitudine a gestire volumi di dati crescenti Performance adeguate al Web 2.0 Interfaccia user-friendly lato utente Possibilità di integrazione con applicazioni o database Legacy Portabilità delle applicazioni generate Investimento iniziale contenuto Costi di gestione contenuti Indipendenza dalla piattaforme HW Indipendenza dalla piattaforme SW Totale 5 3 3 5 4 4 3 3 3 3 2 9,62% 5,77% 5,77% 9,62% 7,69% 7,69% 5,77% 5,77% 5,77% 5,77% 3,85% 2 3 4 2 3 52 3,85% 5,77% 7,69% 3,85% 5,77% 100% Tabella 6.2 - Requisiti Utente per la piattaforma Web 78 Importanza rel. Benchmarking 6.2.2 Requisiti di sistema I requisiti di sistema sono solitamente impiegati dagli ingegneri del software come base di partenza per la progettazione; tali requisiti, oltre ad aggiungere dettagli implementativi, vanno a spiegare come i requisiti utente dovrebbero essere forniti dal sistema. Nella ricerca dei requisiti di sistema, il candidato ha individuato diverse tipologie di Provided Function (terminologia usata nel gergo della Casa della Qualità) e raggruppato le stesse in alcune macrocategorie. Le Provided Function possono appartenere alle seguenti tipologie: - Fattore umano: principalmente rivolti a determinare il livello di difficoltà per la creazione e l’utilizzo della piattaforma, rispettivamente per il personale dell’azienda (sviluppatori ed analisti) e clienti (utenti) finali. - Funzionalità Web: permettono di definire le classi di funzionalità offerte dalla piattaforma. - Tempi di sviluppo ed evasione: forniscono un’indicazione circa i tempi di sviluppo, poiché sono rappresentati dai tempi medi di sviluppo e dalla quantità di funzionalità implementabili con rapidità. - Performance e scalabilità: impiegati per quantificare le prestazioni della piattaforma e la sua attitudine a gestire volumi di dati o utenti crescenti. - Manutenzioni e upgrade: offrono indicazioni circa la possibilità di estendere un’applicazione esistente o di fornire supporto ed effettuare le modifiche necessarie in caso di malfunzionamenti. - Infrastruttura hardware e software: forniscono una panoramica relativa alla flessibilità e alla libertà concesse dalla piattaforma nella scelta di componenti hardware e software. Le Provided Function individuate sono rappresentate nella tabella che segue; considerando la natura dei requisiti di sistema, che devono misurabili e controllabili, è stata associata un’unità di misura a ciascuno di essi, anche se alcuni casi di carattere qualitativo, non volendo dettagliare eccessivamente i requisiti di sistema. Categoria Fattore umano Codice Descrizione Provided Function Unità di misura 1 Competenza necessaria agli sviluppatori alta, media, bassa 2 Competenza necessaria agli analisti alta, media, bassa 3 Formazione specifica per gli sviluppatori ore 4 Formazione specifica per gli analisti ore 5 Facilità di utilizzo del prodotto finale per utenti non esperore ti 6 Livello di completezza del sistema di data-management "out-of-the-box" alta, media, bassa 7 Grado di personalizzazione dell'interfaccia standard alta, media, bassa 8 Flessibilità nella creazione di viste o reportistica personaalta, media, bassa lizzata 9 Presenza di un sistema di autenticazione e di permission facilmente configurabile Funzionalità Web 79 si/no Benchmarking Tempi di sviluppo/evasione Performance e scalabilità Manutenzioni e Upgrade Infrastruttura Hardware e Software 10 Presenza del motore di ricerca interno si/no 11 HTML ben formato / conformità agli standard di accessibilità W3C Scala W3C 12 Protocollo impiegato per autenticazione on-line e sessioni private http/https 13 Requisito minimo di banda per l'accesso alle applicazioni generate kbps 14 Qualità dell'aspetto grafico alta, media, bassa 15 Tempo medio di sviluppo per applicazioni standard FTE 16 Tempo medio di sviluppo per applicazioni "lightly customized" FTE 17 Creazione di applicazioni di data-management interamente tramite GUI si/no 18 Quantità di funzionalità "out-of-the-box" alta, media, bassa 19 Quantità di funzionalità implementabili con minime configurazioni alta, media, bassa 20 Maturità della piattaforma (diffusione) alta, media, bassa 21 Frequenza di nuove release alta, media, bassa 22 Scalabilità delle applicazioni (volumi di dati e/o numero utenti) alta, media, bassa 23 Funzionalità di caching si/no 24 Performance lato utente (tempi di risposta) alta, media, bassa 25 Performance in fase di sviluppo e importazione database alta, media, bassa 26 Programmazione ad oggetti si/no 27 Modularità delle applicazioni generate alta, media, bassa 28 Facilità di bug-fixing in tempo reale alta, media, bassa 29 Complessità del codice generato alta, media, bassa 30 Qualità della documentazione esistente alta, media, bassa 31 Possibilità di richiedere supporto tecnico professionale si/no 32 Predisposizione allo sviluppo di funzionalità custom alta, media, bassa 33 Facilità di rilascio del codice in ambiente di produzione alta, media, bassa 34 Sistema cross-platform si/no 35 Presenza di sistemi di sicurezza (antivirus,firewall) si/no 36 Indipendenza dal database (scelta tra più DBMS) si/no 37 Licenza della piattaforma tipologia 38 Possibilità di impiego di componenti open source o free (es. O.S., IDE, DBMS) si/no 39 Possibilità di installazione distribuita si/no 40 Grado di capacità elaborativa (CPU) e memoria RAM richieste alta, media, bassa Tabella 6.3 - Classificazione delle provided function o caratteristiche tecniche 6.2.3 Gerarchizzazione caratteristiche tecniche Come già anticipato, lo scopo principale del QFD in questa sede risulta la gerarchizzazione delle caratteristiche tecniche per poter effettuare un benchmarking tra le soluzioni individuate. Di seguito è stata operata la classica fase di ―mapping‖ (costruzione delle corrispondenze) in cui vengono messi 80 Benchmarking in relazione le Provided Function (caratteristiche tecniche) ed i requisiti utente mediante la Matrice delle Relazioni. Per ogni cella della matrice è necessario definire ―quanto‖ una specifica Provided Function (assimilabile al ―come‖) contribuisce alla soddisfazione di un particolare requisito (corrispondente al ―che cosa‖). Tale processo, che ha lo scopo di riempire le celle della Matrice delle Relazioni, utilizza una scala (riportata nella tabella che segue) il cui obiettivo è rilevare l’intensità delle relazioni che sussistono tra i requisiti espressi dall’utente e la capacità di soddisfacimento delle Provided Function. Matrice delle relazioni tra Requisiti Utente e PF 9 punti Correlazione forte 3 punti Correlazione media 1 punti Correlazione debole Tabella 6.4 - Scala impiegata nella Matrice delle Relazioni A questo punto dell’analisi è possibile verificare il ―livello di copertura‖ fornito dal nuovo sistema ai requisiti richiesti dall’utente, passando attraverso la mappatura rispetto alle Provided Function. Tale livello viene calcolato a partire dalla Matrice delle Relazioni ed individua, per ogni requisito, la somma dei gradi di copertura forniti dalle singole Provided Function. I requisiti utente che vantano un valore più alto del livello di copertura coincidono spesso con i requisiti considerati prioritari; tali requisiti vantano un elevato grado di copertura in quanto vengono previste molteplici Provided Function, poiché la scelta di queste ultime è stata proprio guidata dalle specifiche del progetto richiesto da Cefin Systems. 81 Benchmarking Figura 6.1 - QFD: la matrice delle relazioni 82 Benchmarking Infine, è possibile ottenere le informazioni desiderate dall’applicazione del QFD: la gerarchizzazione delle caratteristiche tecniche. Ciò è possibile moltiplicando il vettore dei pesi dei requisiti utente (costituito dalle priorità) per il vettore della Matrice delle Relazioni corrispondente a ciascuna Provided Function. Si ottiene pertanto un unico elenco di Provided Function, ordinate per importanza in senso decrescente. Grazie ad esso è possibile definire le caratteristiche sulle quali è necessario essere maggiormente esigenti nella scelta della piattaforma Web. Nella seguente tabella si riportano le dieci caratteristiche tecniche più rilevanti. Codice Requisito di sistema Imp. Assoluta Imp. Relativa 16 15 Tempo medio di sviluppo per applicazioni "lightly customized" Tempo medio di sviluppo per applicazioni standard 140 139 5,86% 5,81% 19 6 Quantità di funzionalità implementabili con minime configurazioni Livello di completezza del sistema di data-management "out-of-the-box" 139 129 5,81% 5,40% 18 17 38 Quantità di funzionalità "out-of-the-box" Creazione di applicazioni di data-management interamente tramite GUI Possibilità di impiego di componenti open source o free (es. O.S., IDE, DBMS) 127 124 119 5,31% 5,19% 4,98% 37 29 Licenza della piattaforma Complessità del codice generato 108 92 4,52% 3,85% 8 Flessibilità nella creazione di viste o reportistica personalizzata 82 3,43% Tabella 6.5 - Caratteristiche tecniche più rilevanti ricavate dall'applicazione del QFD Da una prima analisi della tabella sopra riportata si nota come nelle prime posizioni siano localizzati requisiti di sistema relativi a specifiche funzionali maggiormente rilevanti per la piattaforma Web, prima tra tutte la necessità di un time-to-market minimo.. Assumono importanza notevole anche la flessibilità del sistema e le tipologie di licenze che richiede, che implicano ripercussioni importanti sui costi di investimento e di gestione futuri. Risulta interessante notare come molte Provided Function collocate nelle prime posizione costituiscano ―fattori abilitanti‖, ovvero specifiche che presentano un elevato numero di correlazioni positive e che rendono quindi possibile la realizzazione di molteplici funzionalità con uno sforzo ridotto. 6.2.4 Benchmarking La procedura di benchmarking è stata condotta secondo una approccio estraneo alla metodologia QFD, sfruttando però i risultati sinora ricavati. Per ognuna delle caratteristiche tecniche (di cui è già noto il suo peso) è stato espresso (dal candidato, supportato da alcuni stakeholder di Cefin Systems) un giudizio sul livello di copertura offerto dalle piattaforme a confronto. L’obiettivo della valutazione è quello di evidenziare in modo chiaro le caratteristiche tecniche offerte dalle piattaforme a confronto in termini di ―grado di disponibilità‖ in caso di caratteristiche non funzionali (es. ―modularità delle applicazioni‖, ―sistema cross-platform‖) oppure in termini di qualità/quantità delle funzionalità standard pronte all’uso per implementare la caratteristica funzionale in esame. Ciò 83 Benchmarking consente anche di avere una prima idea delle personalizzazioni da eseguire sulla struttura della piattaforma, relativi a situazioni per le quali risulta necessaria la scrittura di nuovo codice o la realizzazione di nuove strutture dati. Punteggio Valutazione 1 Estremamente scarso o nullo 2 Scarso 3 Sufficiente 4 Buono 5 Molto buono o ottimo Tabella 6.6 - Scala di valutazione per la copertura delle caratteristiche tecniche Il processo di valutazione, è stato calcolato il punteggio pesato (valutazione assoluta moltiplicata per il peso relativo ed espresso in percentuale) e quindi il punteggio complessivo per ogni piattaforma (dato dalla somma dei punteggi pesati sulle singole caratteristiche tecniche). Le valutazioni complessive permettono quindi di stabilire una graduatoria per le quattro piattaforme. È da sottolineare che le valutazioni sono state effettuate considerando opportunamente i versi di preferenza di ogni caratteristica tecnica. Ad esempio, una caratteristica con verso di preferenza decrescente quale è il tempo medio di sviluppo, è stata valutata con punteggio pari a 5 se la piattaforma permette di raggiungere un valore molto basso, viceversa con punteggio pari ad 1 se la caratteristica assume valori molto elevati. Valutazioni assolute Cod. 16 15 19 6 18 17 38 37 29 Requisito di sistema Tempo medio di sviluppo per applicazioni "lightly customized" Tempo medio di sviluppo per applicazioni standard Quantità di funzionalità implementabili con minime configurazioni Livello di completezza del sistema di datamanagement "out-of-thebox" Quantità di funzionalità "out-of-the-box" Creazione di applicazioni di data-management interamente tramite GUI Possibilità di impiego di componenti open source o free (es. O.S., IDE, DBMS) Licenza della piattaforma Complessità del codice generato Imp. Ass. Imp. Rel. 139 5,86 % 5,81 % 139 5,81 % 140 127 5,40 % 5,31 % 124 5,19 % 129 119 108 92 4,98 % 4,52 % 3,85 % XS Valutazioni pesate WaXaVFro vematafant ker ce XS Wavemaker VFron t Xataface 4 4 2 3 23,42 23,42 11,71 17,57 5 3 5 4 29,07 17,44 29,07 23,25 4 5 3 3 23,25 29,07 17,44 17,44 5 2 4 3 26,98 10,79 21,58 16,19 4 2 4 3 21,25 10,62 21,25 15,93 5 2 5 2 25,93 10,37 25,93 10,37 3 4 4 3 14,93 19,91 19,91 14,93 1 5 5 5 4,52 22,58 22,58 22,58 2 1 4 4 7,70 3,85 15,39 15,39 84 Benchmarking 8 27 22 32 34 31 40 39 33 36 30 24 5 1 20 23 28 9 10 26 3 4 7 14 25 2 13 11 Flessibilità nella creazione di viste o reportistica personalizzata Modularità delle applicazioni generate Scalabilità delle applicazioni (volumi di dati e/o numero utenti) Predisposizione allo sviluppo di funzionalità custom 78 3,43 % 3,26 % 72 3,01 % 82 Sistema cross-platform Possibilità di richiedere supporto tecnico professionale Grado di capacità elaborativa (CPU) e memoria RAM richieste Possibilità di installazione distribuita Facilità di rilascio del codice in ambiente di produzione Indipendenza dal database (scelta tra più DBMS) Qualità della documentazione esistente Performance lato utente (tempi di risposta) Facilità di utilizzo del prodotto finale per utenti non esperti Competenza necessaria agli sviluppatori Maturità della piattaforma (diffusione) 72 3,01 % 3,01 % 70 2,93 % Funzionalità di caching Facilità di bug-fixing in tempo reale Presenza di un sistema di autenticazione e di permission facilmente configurabile Presenza del motore di ricerca interno Programmazione ad oggetti Formazione specifica per gli sviluppatori Formazione specifica per gli analisti Grado di personalizzazione dell'interfaccia standard 36 Qualità dell'aspetto grafico Performance in fase di sviluppo e importazione database Competenza necessaria agli analisti Requisito minimo di banda per l'accesso alle applicazioni generate 28 HTML ben formato / con- 72 56 2,47 % 2,34 % 54 2,26 % 59 54 49 45 41 37 37 35 34 33 32 31 31 31 2,26 % 2,05 % 1,88 % 1,71 % 1,55 % 1,55 % 1,51 % 1,46 % 1,42 % 1,38 % 1,34 % 1,30 % 1,30 % 1,30 % 1,17 % 4 3 5 2 13,72 10,29 17,15 6,86 5 5 3 3 16,31 16,31 9,79 9,79 5 3 3 3 15,06 9,03 9,03 9,03 3 5 2 3 9,03 15,06 6,02 9,03 4 4 4 4 12,05 12,05 12,05 12,05 5 4 1 1 14,64 11,71 2,93 2,93 3 3 4 4 7,40 7,40 9,87 9,87 5 4 4 4 11,71 9,37 9,37 9,37 2 2 5 5 4,52 4,52 11,29 11,29 4 4 3 2 9,03 9,03 6,78 4,52 3 3 5 4 6,15 6,15 10,25 8,20 5 3 3 3 9,41 5,65 5,65 5,65 4 4 4 4 6,86 6,86 6,86 6,86 2 2 4 4 3,09 3,09 6,19 6,19 4 4 1 3 6,19 6,19 1,55 4,64 4 1 1 2 6,02 1,51 1,51 3,01 1 1 4 4 1,46 1,46 5,86 5,86 5 4 5 4 7,11 5,69 7,11 5,69 4 2 3 4 5,52 2,76 4,14 5,52 5 5 3 3 6,69 6,69 4,02 4,02 2 2 4 4 2,59 2,59 5,19 5,19 5 2 5 3 6,48 2,59 6,48 3,89 2 4 2 3 2,59 5,19 2,59 3,89 4 4 3 3 4,68 4,68 3,51 3,51 4 2 3 3 4,52 2,26 3,39 3,39 4 2 4 3 3,68 1,84 3,68 2,76 22 1,13 % 0,92 % 18 0,75 % 4 3 3 4 3,01 2,26 2,26 3,01 17 0,71 3 3 3 3 2,13 2,13 2,13 2,13 27 85 Benchmarking 12 35 21 formità agli standard di accessibilità W3C Protocollo impiegato per autenticazione on-line e sessioni private Presenza di sistemi di sicurezza (antivirus,firewall) Frequenza di nuove release % 9 3 0,38 % 0,38 % 0,13 % Totali - - 9 4 3 3 3 1,51 1,13 1,13 1,13 4 4 4 4 1,51 1,51 1,51 1,51 4 4 2 4 0,50 0,50 0,25 0,50 150 127 139 133 382,23 325,55 364,37 324,93 Tabella 6.7 - Risultati del benchmarking tra le soluzioni individuate I risultati del benchmarking, che si ribadisce essere solo di carattere orientativo, forniscono un ―ranking‖ piuttosto equilibrato. Probabilmente sarebbe poco significativo utilizzare la graduatoria grezza mentre appare opportuno suddividere le soluzioni in due classi: la prima, contenente eXtraSheet e VFront e la seconda, contenente Wavemaker e Xataface. I dati ottenuti sono rappresentati graficamente nella figura che segue. Figura 6.2 - Rappresentazione grafica dei risultati del Benchmarking 6.3 Individuazione dei trade-off Come spesso accade, il trade-off principale tra eXtraSheet e le altre soluzioni è quello che contrappone i costi e alle performance e all’affidabilità. Infatti, eXtraSheet si differenzia dalle alternative considerate perché già impiegato (e innovato) con successo da una società commerciale (Krescendo Ltd) da alcuni anni, realizzando volumi di affari notevoli. Al contrario, le altre soluzioni Open Source risultano meno affidabili e richiederebbero probabilmente una fase di start-up prima di essere impiegate nella fornitura di applicativi professionali, ma determinerebbero costi decisamente inferiori rispetto ad eXtraSheet. eXtraSheet si propone quindi come una soluzione Enterprise proprietaria pronta all’uso, per essere commercializzata che richiederebbe una fase di start-up molto breve: sarebbe esclusivamente necessaria la formazione del personale che dovrà curarne lo sviluppo. Inoltre, eXtraSheet verrebbe supportato dal team della società Krescendo che, soprattutto nelle fasi iniziali, risulterebbe particolarmente utile, offrendo supporto e assistenza ai nuovi sviluppatori. 86 Benchmarking WaveMaker risulta l’unica alternativa identificata in ambito J2EE oltre ad eXtraSheet. La sua filosofia è parzialmente differente da quella di eXtraSheet e dalle altre soluzioni provate, poiché ogni sviluppo richiede un re-work, realizzando mediante la GUI le funzionalità di base (es. login, anagrafiche, form, …) per ogni nuova applicazione. Questo approccio si rivela vincente nello sviluppo di applicazioni interamente custom, dove è necessaria la massima flessibilità. Considerando la piattaforma PHP, le due soluzioni individuate sono entrambe molto vicine alle esigenze del progetto. Xataface offre maggior flessibilità, è più orientata agli sviluppi custom ma è talvolta scomoda da configurare e offre una limitata gamma di funzionalità out-of-the-box. Al contrario VFront è una soluzione ―turn-key‖, con una filosofia identica ad eXtraSheet e facilmente utilizzabile dall’utente finale. L’affidabilità e la struttura risultano di media qualità ma il progetto Open Source non sta attualmente riscontrando grandi successi. La fase di benchmarking può concludersi con la seguente tabella, che riporta sinteticamente le caratteristiche di alto livello che contraddistinguono particolarmente le alternative: eXtraSheet Caratteristiche favorevoli Caratteristiche sfavorevoli Affidabilità Costi (licenza e formazione) Performance Dipendenza tecnologica da Krescendo Maturità Wavemaker VFront Xataface Flessibilità Non ―out-of-the-box‖ Programmazione visuale Affidabilità ―Out-of-the-box‖ Ridotta affidabilità Varietà di funzionalità Maturità Possibilità di personalizzazione Scarsa attitudine al supporto di applicazioni complesse Tabella 6.8 - Riepilogo risultati del Benchmarking 87 Mercato e strategia 7 Mercato e strategia Finora è stato esaminato nel dettaglio l'ambito tecnologico del progetto, valutando le piattaforme ed i processi coinvolti. Nei prossimi capitoli si provvederà invece ad approfondire l'aspetto manageriale e strategico, altrettanto critico per il successo del progetto. 7.1 Definizione del mercato e della business idea Il mercato d’interesse per il progetto richiesto da Cefin Systems risulta estremamente ampio. Il target è formato da tutte le imprese di medie e grandi dimensioni che necessitano di soluzioni Web-based personalizzate, in tempi e costi contenuti. Alla prima categoria di potenziali clienti, Cefin Systems intende offrire la piattaforma prescelta per la realizzazione di sistemi informativi ad hoc, anche completi mentre per le aziende di dimensioni più rilevanti, desidererebbe proporre applicazioni snelle per scopi specifici da affiancare (ed eventualmente integrare) con i sistemi informativi esistenti. Da quanto detto, il mercato appare piuttosto indefinito ma è possibile porre dei vincoli piuttosto precisi: - Le aziende medie (o occasionalmente piccole qualora avessero processi specifici e disponessero della capacità di spesa opportuna) devono necessitare di soluzioni specifiche che non sono disponibili sul mercato e sarebbe eccessivamente costoso realizzare ad hoc secondo l’approccio tradizionale. - Le grandi aziende potenzialmente interessate alle soluzioni di Cefin Systems, dispongono del sistema informativo aziendale, ma richiedono delle applicazioni flessibili e rapide per soddisfare bisogni specifici e/o temporanei che il sistema informativo ordinario non è in grado di supportare e lo sviluppo della personalizzazione su di esso in tempi ridotti sarebbe difficoltosa o non pertinente. L'idea di business consiste nell'offrire al mercato un servizio completo nel settore delle applicazioni Web di ultima generazione, proponendo soluzioni "chiavi in mano" e offerte in modalità SaaS. Tutte le applicazioni saranno basate sulla piattaforma prescelta che consentirà di distinguersi dalla concorrenza per tempi e costi inferiori, limitando al massimo i re-work. In questa ottica, Cefin Systems intende offrire i seguenti servizi collegati: 1. analisi dei requisiti e studio di fattibilità; 2. progettazione architetturale e funzionale; 3. implementazione (impiegando la piattaforma) con sviluppo di eventuali personalizzazioni; 4. deployment e hosting; 5. formazione del personale; 88 Mercato e strategia 6. manutenzione e supporto tecnico; 7. evoluzione dell'applicazione. I benefici riscontrabili dal cliente rispetto ad uno sviluppo curato da una software house tradizionale risulterebbero: Unico soggetto di riferimento che gestisce l'applicazione a 360°, non comune nel caso di software house tradizionali che non prevedono l'hosting e talvolta la manutenzione dopo il periodo di garanzia. Rapidità di prototipizzazione, fornitura istantanea di demo operative. Rapidità di sviluppo. Costi di sviluppo contenuti, che permettono la realizzazione di applicazioni non convenienti altrimenti Elevata flessibilità in caso di future modifiche. Performance adattabili a volumi di traffico crescenti. A cui si aggiungono gli innumerevoli e già noti vantaggi del modello SaaS. I mercato geografico di riferimento è principalmente quello italiano e rumeno: nel primo Cefin Systems è nota da anni nel settore della telematica a servizio dei trasporti mentre nel secondo, oltre alla presenza di Cefin Systems Romania, sarebbe possibile avvalersi della vasta rete di contatti di cui dispone il gruppo Cefin in territorio romeno e, inizialmente, non si esclude la possibilità di sviluppare soluzioni proprio per alcune aziende del gruppo. Nel caso in cui si dovesse scegliere la piattaforma eXtraSheet e, dunque, una partnership più o meno stretta con la società Krescendo, sarebbe probabile la stipula di un accordo per l’accesso, sotto determinate condizioni, ai network bancari e consulenziali per i quali Krescendo fornisce soluzioni Web-based da molti anni. 7.2 I potenziali concorrenti Come anticipato nella procedura di software selection in ambito commerciale, appare che non vi siano molti concorrenti che dispongano di una piattaforma simile a quella ricercata. Questo significa che tutto dipende dall’ottica di osservazione: 1) Nell’ambito del software Web-based ad hoc (su commessa) esistono numerosissime aziende, ed il settore presenta una concorrenza agguerrita, tale da non essere più un mercato appetibile per gran parte delle nuove aziende informatiche. 2) Considerando invece il software Web-based ad hoc basato su piattaforme di alto livello in grado di generare rapidamente applicazioni fruibili su Web, i competitor scarseggiano. Auspicabilmente, la motivazione potrebbe essere la particolare finezza dell’idea di business e la difficoltà, sino ad alcuni anni fa, di realizzare sistemi tanto flessibili. D’altro canto, la notevole incertezza e il rischio che la piattaforma riveli scarsa attitudine a soddisfare le esigenze di 89 Mercato e strategia mercato, spingono tutti gli attori mondiali del software Web-based a concentrare le energie su piattaforme di basso livello, assimilabili a enormi librerie o framework di programmazione, che offrono maggiore potenza e flessibilità ma, al contempo, tempi di realizzazione superiori. I competitor che Cefin Systems troverebbe qualora decidesse di realizzare il progetto sarebbero Dabble DB e, nel caso non venisse instaurata la partnership per eXtraSheet, la società Krescendo. Sotto quest’ultima ipotesi, sarebbe proprio la società londinese ad essere il principale concorrente, avendo già commercializzato ad alcune società del gruppo Cefin applicazioni basate su eXtraSheet. In ogni caso, vi sarebbero realmente pochissimi concorrenti che offrono soluzioni impiegando le strategie finora esposte. Il mercato che offre lo sviluppo di applicazioni Web personalizzate è estremamente ―popolato‖ e lo è altrettanto quello che offre applicazioni SaaS standard. Anche effettuando ricerche sul Web non sono invece state individuate offerte analoghe ad eXtraSheet o Dabble DB. 7.3 I trend del settore Per reperire informazioni riguardanti la profittabilità del settore interessato dal progetto, è stata anzitutto condotta una ricerca sul mercato del Software-as-a-Service, ricercando soprattutto dati previsionali per gli anni successivi all’eventuale investimento effettuato da Cefin Systems. Nel caso di un declino del settore, il progetto richiesto sarebbe stato estremamente rischioso. La maggioranza dei report derivanti da dati analitici si focalizza più sui clienti che sui fornitori, concentrandosi su come le imprese esternalizzano determinate aree del comparto tecnologico, toccando modelli quali ASP e cloud-computing, tralasciando le imprese che erogano i suddetti servizi. I documenti utili al presente studio, risultano invece le analisi di due note società internazionali di consulenza, il cui prezzo di accesso, però, è proibitivo. Per questi documenti, i dati contenuti nei relativi abstract sono comunque sufficienti a fornire un’idea generale. Analisi di IDC Il report di IDC (International Data Corporation) denominato ―Worldwide Business Analytics Softwareas-a-Service Forecast, 2008-2013‖, proposto a 4.500 $, prevede tra il 2008 ed il 2013 una crescita del mercato SaaS caratterizzata da un CAGR (Compound Annual Growth Rate) del 22,4% a livello globale, che è circa il triplo rispetto al mercato del software complessivo. IDC prevede inoltre che il numero di utenti business del SaaS sarà in forte crescita mentre più prudenti sono le previsioni in merito ai ricavi derivanti dalle vendite effettuate in tale comparto, che non riesce a guadagnare terreno rispetto al software tradizionale. La società di consulenza delinea i fattori che supporteranno la crescita del mercato SaaS: 1) Ridotti investimenti in capitale, che permettono ad una divisione aziendale di sottoscrivere un contratto SaaS impiegando budget ordinario. 90 Mercato e strategia 2) Le risorse IT aziendali sono solitamente ridotte e non c’è tempo sufficiente per realizzare, acquistare o valutare soluzioni per problemi di business specifici. 3) Le applicazioni SaaS sono sempre più configurabili piuttosto che personalizzabili, al fine di soddisfare al meglio le esigenze di business. Una ulteriore analisi condotta da IDC (gennaio 2009), basata su indagini ed interviste a clienti, afferma che la crisi economica provvederà ad accelerare le prospettive di crescita del settore SaaS, in grado di fornire soluzioni ben dimensionate e chiavi in mano. Molti clienti business preferiranno infatti utilizzare applicazioni e pagare in base all'utilizzo attuale, senza investire in capacità future. Altre informazioni interessanti che emergono dallo studio sono: Dalla fine del 2009, il 76% delle aziende statunitensi utilizzeranno almeno un'applicazione business in modalità SaaS. La percentuale delle aziende statunitensi che pianificano una spesa di almeno 25% del budget IT saranno il 45% nel 2010 (contro il 23% del 2008) Mentre la domanda del SaaS è più marcata nel Nord America, lo sviluppo è ora notevole anche in altre zone (quali Europa e Medio Oriente), che raggiungeranno una quota del 35% sui ricavi mondiali. I fornitori SaaS evidenziano la tendenza a problemi di liquidità dovute ai pagamenti dilazionati dei clienti che causa talvolta difficoltà ad investimenti infrastrutturali in nuova capacità o soluzioni software per nuovi clienti. Analisi di Gartner Il secondo report è realizzato a cura della società Gartner: ―Market Trends: Software-as-a-Service, Worldwide, 2008-2013‖ e proposto al prezzo di 2.495 $. Il CAGR stimato da Gartner per il settore SaaS tra il 2009 e il 2013 risulta pari al 19,4%, oltre il triplo del CAGR previsto per l’intero mercato del software, pari a 5,2%. Analizzando un altro paper elaborato da Gartner che valuta le performance in termini di ricavi nel mercato SaaS, si ottiene conferma della crescita del mercato del Software-as-a-Service tra l'anno 2008 e 2009 pari al 17,7% circa. Il mercato è visto in crescita costante fino al 2013, quando i ricavi del 2009 (circa 6,5 miliardi di dollari) raddoppieranno ampiamente, raggiungendo i 14 milioni di dollari. "L'adozione del SaaS continuerà a crescere ed evolversi soprattutto nei settori Enterprise" afferma Sharon Mertz, research director in Gartner. "La composizione del panorama SaaS è in evoluzione poiché i vendor continuano ad estendersi localmente, arricchire i contratti in corso e offrire sempre più soluzioni verticali e specializzate". Il segmento dei sistemi CCC (Content, Communication e Collaboration) e CRM (Customer Relationship Management) continueranno ad avere i volumi più elevati ma tutto il settore è previsto in crescita. In figura è riportata l’analisi dei ricavi negli anni 2008-2009 suddivisi per segmenti. 91 Mercato e strategia Figura 7.1 - Performance in termini di ricavi del mercato SaaS (Gartner 2009) In conclusione, le previsioni per il Software-as-a-Service sono estremamente incoraggianti e non appaiono ostacoli nel medio termine. Inoltre, la crescente specializzazione delle applicazioni SaaS prevista dagli analisti potrebbe trovare una risposta vincente impiegando la piattaforma ricercata da Cefin Systems e consentirebbe margini più elevati rispetto ai normali provider SaaS. 7.4 La profittabilità: analisi di Porter La profittabilità del settore SaaS, con particolare riferimento al segmento interessato dal progetto, è stata analizzata impiegando lo strumento delle cinque forze di Porter che permette di esaminare gli aspetti rappresentativi dell’appetibilità del mercato e le azioni strategiche da intraprendersi per effettuare l’ingresso. 7.4.1 Grado della competitività interna L’analisi della competitività interna permette di dedurre se il grado di rivalità all’interno del mercato è più o meno elevato: tanto più è alto, tanto più si riduce la profittabilità, in quanto gli attori che operano nel mercato sono più propensi a competere per l’ottenimento dei profitti. Si riportano di seguito le caratteristiche da valutare. Concentrazione del mercato: da quanto esaminato sinora, il numero di competitor è altamente significativo se si considerano i fornitori di soluzioni SaaS mentre, restringendo il campo alle sole aziende dotate di piattaforme simili a quella ricercata, il numero di competitor diventa pressoché nullo. Grado di differenziazione dei concorrenti: i pochi competitor (principalmente Dabble DB, eXtraSheet o, ipotizzando che esistano, altre piattaforme proprietarie) possono avvalersi di 92 Mercato e strategia piattaforme piuttosto omogenee, almeno per quanto percepito dal cliente. Si può affermare quindi che non è possibile realizzare un alto grado di differenziazione dell’offerta. Condizioni della domanda: dai dati riportati nel paragrafo precedente, il tasso di crescita del settore è estremamente positivo (intorno al 20%) determinando quindi una continua espansione della domanda che contribuirà ad attenuare le pressioni competitive tra le imprese. Barriere all’uscita: in generale i fornitori SaaS, non devono sostenere investimenti specifici elevati. I componenti hardware possono essere demandati a società di hosting senza alcuna necessità di investimento mentre il software (specie se si scelgono molti moduli open source) non richiede investimenti eccessivi anche se nel tempo, il perfezionamento e lo sviluppo di funzionalità potrebbe diventare un ostacolo per l’uscita del mercato. È possibile concludere che tale forza risulta ridotta: sul mercato vi è un numero limitato di concorrenti che, pur proponendo un servizio omogeneo, convivono con un andamento positivo della domanda e con barriere all’uscita di media entità. 7.4.2 Barriere all’entrata La presenza di barriere all’entrata riducono la minaccia di potenziali nuovi competitor intenzionati ad entrare sul mercato. Più è marcata la presenza di barriere, più aumenta la profittabilità del settore. Economie di scala e scopo: considerando la piattaforma, le economie di scala (diminuzione del costo medio unitario di produzione) e le economie di scopo (risparmio derivante dalla produzione congiunta di prodotti differenti con le medesime risorse) sono entrambe rilevanti. Quindi, più la piattaforma risulta completa e performante, più i risultati sono efficaci e ottenuti con effort ridotti. Costi di start-up, comprendono: i costi del personale operativo che avvia le nuove attività, i costi di assunzione e di addestramento del nuovo personale, i costi di hardware e software ed i costi di marketing sostenuti per il lancio della nuova attività. Come affermato in precedenza, tali costi non sono eccessivi inizialmente ma non sono trascurabili. Brand loyalty: si ipotizza che la fedeltà ad un fornitore SaaS sia di media entità, ma certamente presente se questo si distingue per professionalità ed affidabilità. Curva di apprendimento: l'apprendimento da parte del personale dipende da capacità personali (l’attitudine e la motivazione), da fattori endogeni (caratteristiche del lavoro) e da fattori esogeni (condizioni al contorno). Tralasciando le capacità personali e le condizioni di contorno, si può affermare che la curva di apprendimento non è troppo rigida: si tratta infatti di attività di sviluppo software piuttosto standard, caratterizzate dalla classica curva ad S. In conclusione, le barriere all’entrata sono di medio livello e permettono di mantenere una buona profittabilità. 93 Mercato e strategia 7.4.3 Potere dei fornitori Nel caso in esame, i fornitori possono essere suddivisi in due tipologie: 1. Fornitori di ―commodity‖, cioè servizi caratterizzati da una elevata maturità e quindi con numerose aziende in grado di fornirli. Tra questi, vi è certamente l’hosting dell’hardware, le telecomunicazioni e, in generale, le forniture di hardware e di moduli software non ―core‖. Questi attori dispongono di un potere estremamente ridotto nei confronti del cliente. 2. Fornitori di componenti software ―core‖, cioè fondamentali per la piattaforma prescelta. Nel caso di eXtraSheet, il potere del fornitore Krescendo sarebbe molto elevata nei confronti di Cefin Systems mentre scegliendo soluzioni open source il problema verrebbe pressoché eliminato. In ogni caso, qualunque sia la piattaforma prescelta, gli switching costs possono essere notevoli, specie se i livelli di astrazione dal database sono numerosi. Il potere dei fornitori è quindi da ritenersi di media entità, poiché, se tecnicamente è possibile cambiare fornitore (quindi piattaforma), la procedura di switch non sarebbe certamente agevole. 7.4.4 Potere dei clienti Se gli acquirenti sono dotati di elevato potere contrattuale, i profitti del fornitore rischiano nel tempo una sensibile riduzione. Considerando i seguenti criteri: Concentrazione del cliente: il numero di imprese acquirenti è potenzialmente molto elevato, di conseguenza questo aspetto non offre all’acquirente potere considerevole. Differenziazione dell’offerta: l’offerta sul mercato risulta piuttosto omogenea, conferendo al cliente maggior potere contrattuale. Qualora i clienti decidessero di rivolgersi in itinere ad un’altra azienda, i costi risulterebbero realmente consistenti. Commissionando ad una nuova azienda lo sviluppo dell’applicazione, il cliente dovrebbe sostenere nuovamente tutte le fasi di sviluppo (analisi dei requisiti, progettazione, sviluppo, testing, formazione, …). Se tuttavia questo onere può risultare ridotto impiegando una piattaforma simile a quelle sinora esaminate, il reale problema si presenterebbe se il precedente sistema era già in uso: la migrazione dei dati dal precedente al nuovo fornitore non sarebbe semplice e il primo non avrebbe interesse a svolgere la procedura con la massima cura. Gli elevati costi di switch riducono considerevolmente il potere del cliente. Informazioni detenute dal cliente: l’azienda cliente dovrà collaborare con il fornitore per la comunicazione di informazioni utili al raggiungimento del mutuo obiettivo di realizzare l’applicazione con successo. Anche questo criterio non conferisce al cliente alcuna superiorità. 94 Mercato e strategia Integrazione verticale del cliente: poco credibile la minaccia di integrazione a monte da parte delle aziende clienti. La maggioranza non disporrebbe di know how e infrastrutture necessarie e, comunque, dovrebbe sopportare gli switching costs già individuati. In conclusione, se da un lato non esiste una differenziazione dell’offerta nel mercato, gli elevati switching cost, la ridotta concentrazione del cliente e la bassa probabilità di integrazione conferisce al cliente un potere piuttosto esiguo. 7.4.5 Prodotti sostituti Al momento i prodotti sostituti risultano pressoché assenti. Le alternative per un’impresa che necessita di un’applicazione di business potrebbero essere il ricorso allo sviluppo classico, cioè commissionando lo sviluppo di software (SaaS o tradizionale) a software house per poi installarlo presso risorse hardware proprietarie o in hosting. Questo approccio risulta tuttavia estraneo alle tendenze attuali e conveniente solo in casi particolari. Altrettanto inverosimile è la nascita a breve di soluzioni contemporaneamente flessibili e user-friendly da permettere al cliente lo sviluppo interno di applicazioni specifiche, dopo aver comunque svolto le fasi minimali di progettazione. 7.4.6 Conclusioni L’analisi di Porter permette di affermare la presenza di una minaccia credibile di nuovi entranti (barriere all’ingresso relativamente contenute) e di una media competitività nel settore che sono tuttavia controbilanciate dalla inesistenza di prodotti sostituti e da un basso potere contrattuale soprattutto per la clientela. Si può quindi concludere che il segmento di mercato è attrattivo e probabilmente caratterizzato da un buon livello di profittabilità. 7.5 Analisi resource based Attraverso l’analisi Resource based sono stati valutati quali risorse e competenze della struttura organizzativa possano determinare un vantaggio competitivo sostenibile, ossia quali costituiscano un punto di forza distintivo e difendibile (importanza e produzione di valore, rarità, non perfetta imitabilità e non sostituibilità). Nell’ambito delle risorse tangibili non vi sono particolari elementi che possano offrire un vantaggio sostenibile. Infatti, qualunque componente hardware e tutti i servizi connessi risultano oggi ampiamente diffusi e accessibili a costi molto contenuti. A livello di risorse finanziarie, seppur siano necessari investimenti di media entità, una buona capacità di credito o di autofinanziamento non sono particolarmente di valore nel tempo. 95 Mercato e strategia Le risorse più importanti per Cefin Systems, qualora realizzasse il progetto in esame, risulterebbero di due categorie: 1) Personale: un team professionale e preparato può essere la chiave vincente per differenziarsi dalla concorrenza. È necessario disporre di dipendenti con adeguato know how, buone capacità di analisi e sviluppo e caratterizzati da impegno e lealtà. Questo si traduce senz’altro nella realizzazione di soluzioni professionali e affidabili, differenziandosi dai concorrenti per la qualità dei servizi offerti. 2) Fidelizzazione del cliente e reputazione: raggiungere una buona reputazione con clienti, fornitori e finanziatori è estremamente importante. Questo è realizzabile puntando, oltre che sulla customer care, sulla qualità del management, dei prodotti e dei servizi, sulla capacità di innovazione e sulla solidità dei risultati. Se raggiunti, tali obiettivi garantirebbero all’azienda un vantaggio competitivo sostenibile nei confronti dei competitor. Dall’analisi emerge come le risorse umane siano la fonte primaria del vantaggio competitivo sostenibile e quindi la loro gestione è da tenere in forte considerazione nell’elaborazione della strategia aziendale. Puntando inoltre sulla loyalty dei clienti e sull’immagine e reputazione della società, sarà possibile acquisire nuovi clienti oppure raggiungere clienti già serviti in passato per esigenze differenti. È però fondamentale che le suddette qualità siano ben sfruttate e coltivate in modo continuativo. 7.6 Strategia di marketing e sales In seguito allo studio del mercato e dell’idea di business in termini di potenzialità nel creare valore e mantenere vantaggi competitivi nel tempo si giunge a valutare quali sarebbero le scelte di marketing più idonee. Il servizio SaaS B2B offerto da Cefin Systems è in realtà composto da una serie di servizi ben definiti: - Consulenza al cliente. - Sviluppo della soluzione software idonea (definizione dei requisiti sulla base della fase precedente, progettazione, sviluppo e testing). - Formazione del personale. - Garanzia e servizio di supporto post-vendita (helpdesk tecnico). Il servizio offerto è quindi una formula ―all-inclusive‖ che fornisce al cliente il sistema ―chiavi in mano‖, senza alcun investimento di quest’ultimo in hardware o personale interno. 96 Mercato e strategia La strategia di prezzo prevista è quella tipica dei servizi SaaS, che prevede una quota iniziale fissa per lo sviluppo della soluzione e, quindi, canoni periodici (tipicamente mensili) che includono voci quali hosting e supporto tecnico. In particolare, la definizione operativa delle tariffe potrebbe seguire l’approccio ―costo + mark-up‖, quest’ultimo fissato indicativamente intorno al 20÷30%. Tale strategia potrebbe risultare più complessa nel caso venga scelta la piattaforma eXtraSheet, infatti, la tipologia di remunerazione dovuta a Krescendo, potrebbe rendere più conveniente per Cefin Systems traslare alcune componenti di costo dal canone periodico al prezzo iniziale richiesto al cliente o viceversa. Indicativamente il prezzo medio di un progetto di dimensioni ridotte, ottenuto da dati storici di Cefin Systems e Krescendo, si aggira intorno ai 5.000 € per la quota iniziale di analisi e sviluppo e circa 200 €/mese a titolo di canone periodico. In tabella è riportato un esempio. # Subject Price Detail Implementation of ad-hoc application 1 Project Implementation 4.800,00 € following the Functional Specifications agreed. Includes 1 day of training. 2 3 150,00 € License & Support Service Optional consultancy to identify market solutions to support other standard processes 1.950,00 € 1 Month Service fee. Support of max 1 day per month is included. 3 days of Analyst Tabella 7.1 - Esempio di tariffe per progetto ad hoc di dimensioni ridotte Anche l’analisi sulle tempistiche necessarie per il completamento di un progetto di dimensioni ridotte dimostra la vantaggiosità della piattaforma, che consente approssimativamente un risparmio del 40% per applicazioni non eccessivamente complesse. A ciò conseguono importanti riduzioni in termini di costo e quindi del prezzo finale offerto al cliente. Non sarà da trascurare inoltre la strategia promozionale per far conoscere la competitività dei servizi offerti con la nuova piattaforma. Anzitutto sarà necessario realizzare brochure, depliant e pubblicizzare i servizi sul sito Web, fornendo eventualmente applicazioni demo liberamente accessibili. Poiché ci si rivolge specialmente a realtà di medie dimensioni, può risultare opportuno avviare una campagna pubblicitaria su radio locali (ad esempio della provincia di Torino), in fasce orarie appropriate per utenti business (ad esempio, 7:30-9:30 e 18:00-20:00). L’attività di commercializzazione dovrà inoltre essere condotta in maniera opportuna dai commerciali di Cefin Systems, che dovranno conoscere bene la piattaforma a livello funzionale per essere in grado di ascoltare e proporre il cliente con successo. Eventualmente, potrebbe essere conveniente partecipare ad alcune fiere per diffondere ulteriormente le soluzioni offerte. Maggiori dettagli sono riportati in tabella. 97 Mercato e strategia # Ammontare Subject 1 Materiale pubblicitario 2 Personale dedicato 3 Campagne pubblicitarie annuo 4.000 € 30 giorni-uomo 7.000 € Tabella 7.2 - Spese di marketing annue preventivate Per un servizio tecnologico come quello che si intende proporre, la relazione diretta con i clienti è il fattore determinante per garantire redditività e successi duraturi. Il processo di distribuzione delle soluzioni sviluppate per il singolo cliente dovrà essere curato dalla figura commerciale di Cefin Systems, che fungerà da intermediario (o interfaccia) tra il comparto tecnologico e la clientela e avrà collegamenti diretti con il management aziendale. 7.7 Organizzazione prevista La nuova divisione necessiterebbe di quattro figure professionali che inizialmente (oppure in caso di progetti di dimensioni limitate) potrebbero ridursi a tre. Sono infatti necessari uno o più sviluppatori, un project manager e una figura in grado di interagire con il cliente e, al contempo, svolgere l’analisi dei fabbisogni e redigere le specifiche funzionali. Questa figura può inizialmente essere un analista mentre, per progetti più complessi, sarebbe opportuno suddividere il ruolo commerciale da quello analitico/progettuale. Agli sviluppatori verrebbero assegnati tutti i ruoli tecnici, che spaziano tra la supervisione e la gestione delle risorse hardware in loco ed in hosting, la progettazione architetturale e lo sviluppo della soluzione, sulla base delle specifiche ricevute dagli analisti e, infine, l’erogazione del supporto tecnico in caso di problemi o malfunzionamenti segnalati dal cliente. Gli analisti coprirebbero il ruolo di studio dei requisiti del cliente e la mappatura funzionale nelle soluzioni erogabili tramite la piattaforma prescelta, fornendo agli sviluppatori le specifiche per l’implementazione. Il project manager avrebbe l’incarico di supervisionare e gestire il progetto, assicurando un adeguato sviluppo dell’idea di business e interagendo con il management aziendale. Il responsabile commerciale, oltre a definire insieme al project manager le strategie di marketing, svolgerebbe operazioni di scouting (ricerca di nuovi contatti che potrebbero diventare clienti) e tutte le attività a diretto contatto con i clienti acquisiti o esistenti (visita ai clienti, presentazioni delle soluzioni, dimostrazioni, gestione dell'ordine con la conseguentemente realizzazione dell’offerta commerciale). 98 Mercato e strategia Figura 7.2 - Organizzazione proposta per la nuova divisione 99 Valutazioni economiche 8 Valutazioni economiche Dopo un’analisi rivolta ad individuare se il progetto potesse trovare riscontro positivo sul mercato, risulta necessario definire meglio quali sarebbero, sotto il profilo strategico-organizzativo, le alternative per l’implementazione del progetto. Poiché il numero di scenari potenziali (combinazione di scelte principalmente tecniche ed organizzative) sarebbe piuttosto elevato, si è deciso di operare una selezione in base al grado di "strategic fit", cioè il livello di coerenza tra le varie scelte per realizzare al meglio la strategia, determinando tre alternative differenti tra loro ma presumibilmente concorrenziali. Si è quindi passati a valutare i tre scenari in termini di convenienza all’investimento, pur non disponendo degli importi precisi e ricorrendo spesso a stime indicative. 8.1 Scenari selezionati 8.1.1 Stretta partnership con Krescendo Il primo scenario proposto, d’ora in poi denominato ―Scenario A‖, è probabilmente quello maggiormente conservativo. Si propone infatti di consolidare la collaborazione con la società Krescendo che detiene eXtraSheet, diventando un partner tecnico e commerciale. Tale strategia conferirebbe a Cefin Systems un rischio molto ridotto, poiché non sono necessari investimenti eccessivi dato che verranno impiegati i server di produzione Krescendo e internamente saranno esclusivamente necessari uno o due server di test. La fase di avviamento risulterà inoltre piuttosto semplice, disponendo della formazione e del supporto tecnico offerto da Krescendo. Anche a livello commerciale, gli sviluppi iniziali potrebbero essere concordati per clienti esistenti di Krescendo e man mano che la capacità aumenta, Cefin Systems potrebbe costruire in autonomia la propria rete commerciale. Coerentemente a questa scelta, l’investimento in personale potrebbe essere altrettanto esiguo, assumendo inizialmente una sola figura di analista/sviluppatore che acquisirebbe le competenze da Krescendo e diventare la figura tecnica di riferimento. Gli aspetti chiave da definire risulterebbero invece le modalità di tariffazione, per evitare che il potere contrattuale di Krescendo comprimesse eccessivamente i profitti di Cefin Systems, rendendo l’investimento non più conveniente. Oltre ad un canone fisso, le tariffe potrebbero essere di varie tipologie: In base all’utilizzo del sistema, considerando ad esempio il numero di record per le applicazioni standard di data management mentre, per applicazioni più complesse, il numero di u- 100 Valutazioni economiche tenti abilitati o altri indicatori che rappresentino la complessità o il traffico generato dall’applicazione. Royalty sulle vendite, richiedendo una percentuale sul fatturato delle applicazioni erogate a clienti che permetterebbe una cessione del margine a Krescendo. In ogni caso, si aggiungerebbero i costi dovuti a Krescendo qualora si richiedano sviluppi, formazione o supporto tecnico oltre limiti prefissati. In conclusione, lo scenario A è quello che presenta un rischio molto ridotto, ma la piattaforma ed i servizi erogati da Krescendo avrebbero costi presumibilmente elevati e, soprattutto nella fase iniziale, i margini sarebbero scarsamente soddisfacenti. 8.1.2 Soluzione ponderata Alcuni svantaggi emersi nel precedente scenario possono essere compensati nel seguente, denominato ―Scenario B‖, che propone una maggior autonomia pur mantenendo la collaborazione con Krescendo. Si prevederebbe infatti di concordare con Krescendo l’acquisizione della licenza di eXtraSheet per il rilascio dei file binari da installarsi ed utilizzarsi su server propri. Questa soluzione porterebbe quindi Cefin Systems a stipulare contratti di hosting a proprio nome e lo sviluppo di applicazioni basate su eXtraSheet con maggior autonomia. Si intende comunque che lo sviluppo di eXtraSheet ―core‖ rimarrebbe in esclusiva a Krescendo che periodicamente fornirà a Cefin Systems nuove release. Rimane invariata la facoltà delle due società di accordarsi anche per finalità commerciali, permettendo a Cefin Systems l’accesso alla rete commerciale Krescendo e, viceversa, a Krescendo la possibilità di instaurare nuovi contatti con aziende clienti di Cefin Systems. In termini di personale, la soluzione più idonea per questo scenario richiederebbe l’assunzione di un dipendente full-time in qualità di responsabile tecnico e un secondo sviluppatore junior magari a tempo parziale. In caso di necessità, Krescendo potrebbe comunque offrirsi di coprire picchi di domanda, offrendo i propri sviluppatori a tariffe giornaliere prestabilite. La tariffazione più appropriata risulterebbe in questo caso un canone annuale per la licenza a cui si sommano servizi occasionali, quali supporto tecnico straordinario e sviluppi espressamente richiesti da Cefin Systems. Lo scenario ibrido è dunque idoneo ad offrire maggiore autonomia a Cefin Systems, in particolare se i volumi di vendita aumentano considerevolmente, poiché a Krescendo dovrà esclusivamente riconoscere la licenza sulla piattaforma. Al contrario, in caso di una stagnazione delle vendite, il costo fisso della licenza potrebbe rendere negativa la profittabilità dell’investimento. 101 Valutazioni economiche 8.1.3 Scenario autonomo Il presente scenario, definito come ―Scenario C‖, risulta il più rischioso in termini di investimento iniziale ma, in caso di successo, potrebbe realmente diventare il più conveniente. Questi prevede infatti di avviare uno sviluppo completamente autonomo, scegliendo una delle piattaforme Open Source disponibili invece di eXtraSheet. Lo strategic fit per questa opzione prevede di adottare una piattaforma Open Source ed investire inizialmente il tempo necessario per portarla ad un livello idoneo alla commercializzazione. Al termine della fase di revisione, sarebbe possibile la commercializzazione impiegando server interni e proponendosi ad aziende di dimensioni limitate che richiedono applicazioni non particolarmente critiche. In tal modo risulterebbe possibile avviare le prime vendite e, al contempo, completare i test. Raggiunta la maturità, sarebbe quindi auspicabile esternalizzare il servizio di hosting ed erogare i servizi con una strategia simile ad eXtraSheet. I vantaggi del presente scenario si concretizzerebbero in seguito alla fase di avviamento, quando i margini derivanti dalla commercializzazione non verrebbero più intaccati dalle fee dovute a Krescendo nei precedenti scenari. Al contempo, i possibili vincoli derivanti dalla licenza Open Source GPL (General Public License), con la quale sono distribuite la maggior parte delle piattaforme considerate, non sarebbero stringenti: la distribuzione del codice sviluppato per innovare la piattaforma e realizzare soluzioni personalizzate non è richiesta se queste sono erogate in modalità SaaS e non consegnate al cliente per l’installazione su hardware proprio. Questo risulterebbe un vero vantaggio che permetterebbe a Cefin Systems di proteggere gli sviluppi effettuati ed evitare l’accesso a potenziali competitor. La necessità di personale risulterebbe più consistente rispetto ai casi precedenti, poiché l’assenza di un supporto tecnico qualificato potrebbe deteriorare notevolmente le performance, specie nei primi periodi di fornitura. Si ipotizza l’impiego di uno sviluppatore senior e uno sviluppatore junior per la fase di sviluppi preliminari e altri 1-2 sviluppatori a regime. La scelta di una piattaforma diversa da eXtraSheet risulterebbe tuttavia penalizzante nella previsione futura di internalizzare il prodotto Sateltrack, attualmente sviluppato da Krescendo condividendo gran parte della tecnologia di eXtraSheet, a partire dal framework uView. In sintesi, lo scenario autonomo è altamente rischioso e richiede capacità di investimento più considerevoli rispetto ai precedenti ma le potenzialità sarebbero molto più rilevanti e l’investimento verrebbe ricompensato tanto più rapidamente quanti saranno i nuovi clienti. 102 Valutazioni economiche 8.2 Piani di investimento 8.2.1 Investimenti hardware Gli investimenti in infrastruttura hardware e nel software risultano l’unica ma indispensabile spesa da effettuarsi immediatamente, ad inizio progetto. Poiché caratterizzati da bassa aleatorietà, si procede ad una definizione piuttosto precisa di queste voci. Riguardo gli scenari individuati, gli investimenti in infrastruttura hardware (e anche software) interna risultano crescenti, poiché nel primo scenario saranno necessarie esclusivamente una o due postazioni di sviluppo, mentre nei casi B e C sono richieste risorse aggiuntive (ulteriori postazioni e server interni principalmente per testing e backup). Come già individuato durante l’analisi degli strumenti impiegati dalla società Krescendo, si ipotizza l’impiego delle seguenti risorse hardware, che sono state sovradimensionate rispetto a quelle possedute dalla predetta azienda al fine di prolungare la vita delle apparecchiature stesse e garantire performance superiori. La postazione di sviluppo proposta sarebbe dotata della seguente configurazione hardware ed è una delle soluzioni più vantaggiose considerando il rapporto performance/costi: Q.ty Item 1 Intel Core i7 LGA1366 920 2.66GHz BOX 1 Gigabyte GAEX58UD3R S1366 1 Memory OCZ Platinum PC310666 Tri Channel DDR3 6GKit 1333MHz 1 XFX 4650 600M 512M DDR2 2 WESTERN DIGITAL CAVIAR R3 320GB 16MB WD3202ABYS 1 Cooler Master RC 690 XCALADE 1 CORSAIR 550W CMPSU550VXEU 1 Pioneer DVR216DBK Nero bulk Sata 1 Western Digital Caviar GP 1TB WD10EADS Sata2 32Mb Tabella 8.1 - Configurazione hardware proposta per postazione di sviluppo Il prezzo finale della configurazione riportata in tabella si aggira intorno ai 900,00 Euro, IVA inclusa, riferito al periodo settembre 2009. Si osserva che la soluzione sarebbe basata sulla nuova generazione di processori Intel i7, Quad-core, dotata di prestazioni eccezionali e quindi una previsione di ottima durata nel tempo. Anche la qualità dei dischi è notevole ed è previsto un controller RAID con due dischi ad alte prestazioni oltre ad un disco più capiente (Serial ATA 2 da 1 TB) per i backup. In alternativa sarebbe possibile una configurazione basata su tecnologia AMD (ad esempio, CPU AMD 103 Valutazioni economiche Phenom II X4 940), meno performante rispetto alla precedente ma paragonabile, che permetterebbe di ridurre la spesa a circa 700,00 Euro. Volendo orientarsi a soluzioni già disponibili sul mercato, quindi PC già assemblati da vendor di componenti informatici, si può ad esempio citare quello riportato nella tabella sottostante: PC MULTIMEDIA S Q9550 2.83GHZ+6GB+1.5TB+GTS250/1GB DDR3+WIFI Processore: INTEL Core2 QUAD Q9550 2.83GHz/1333/12MB cache Memoria RAM: 6GB DDR2/800 Full Brand Kingston (3x2GB) Hard Disk: 1.5TB 7200 rpm 32Mb cache SATA II Scheda Madre: ASUS P5QL-E iP43 FSB1600+2xPCIE+Sata2+2xFirewire+Raid Scheda Grafica: GeForce GTS250 1GB DDR3+DVI+TVOUT+HDMI Masterizzatore DVD+CardReader 20in1: Dual Layer 20X 8.5GB Scheda audio e Porte: 5.1+2xFirewire , 8xUSB2.0 Scheda WiFi: Scheda PCI interna WiFi 108Mbit Case: Case CoolerMaster CM690 + 3 x USB2.0+Firewire su parte superiore del case, ideale per configurazioni SLI, con 3 ventole silent+Alimentatore Tecnoware PROSILENT 600W Black con ventola 14cm silent Garanzia: 2 ANNI ON CENTER Prezzo: 799,00 EUR (IVA inclusa) Vendor: Computer City (http://www.computercityhw.it) Tabella 8.2 - Esempio di configurazione hardware già disponibile sul mercato Ricercando un sistema più performante, basato su processore Intel Core i7 e RAM DDR3, si potrebbe scegliere quello indicato nella seguente tabella. PC Multimedia S Core i7 860 2.8GHz+6GB+1.5TB+GTS250/1GB DDR3+WiFi Processore: INTEL Core i7 860 2.8GHz/1333/8MB cache/SK 1156 Memoria RAM: 6GB DDR3/1333 Full Brand Kingston (3x2GB) Hard Disk: 1.5TB 7200 rpm 32Mb cache SATA II Scheda Madre: GIGABYTE/ASUS P7P55D iP55+Sata II Raidx6+eSata Scheda Grafica: GeForce GTS250 1GB DDR3+DVI+TVOUT+HDMI Masterizzatore DVD+CardReader 22in1: Dual Layer 22X 8.5GB Scheda audio e Porte: Sorround 7.1+2xFirewire+14xUSB2.0+GbLan Scheda WiFi: Scheda USB2.0 WiFi 108Mbit Case: Case CoolerMaster CM690 + 3 x USB2.0+Firewire su parte superiore del case, + eSata, ideale per configurazioni SLI, con 4 ventole silent+Alimentatore Tecnoware PROSILENT 600W Black con ventola 14cm silent 104 Valutazioni economiche Garanzia: 2 ANNI ON CENTER Prezzo: 999,00 EUR (IVA inclusa) Vendor: Computer City (http://www.computercityhw.it) Tabella 8.3 - Secondo esempio configurazione hardware già disponibile sul mercato A tutte le alternative indicate si aggiungerebbero infine uno o due monitor (LCD 19’’) per ogni postazione, ad esempio il modello seguente, offerto dallo stesso vendor dei PC. SAMSUNG LCD 18.5" SM-933SN 1360x768 5ms 250 cd/m2 Modello: MSM-933SN TFT LCD 18,5" WIDE, 0,285x0.285 mm Luminosità: 250 cd/m2 Contrasto: 1000:1 Contrasto dinamico: 50000:1 Angolo visuale: 170°/160° Risoluzione max: 1360x768 Tempo di risposta: 5ms Dettaglio cromatico: 16.7 milioni Informazioni aggiuntive: alimentatore integrato, autospegnimento, cornice nero smaltata, Microsoft Vista Certified Codice prodotto:LS19CMYKFNA/EN Prezzo: 139,00 EUR (IVA inclusa) Vendor: Computer City (http://www.computercityhw.it) Tabella 8.4 - Monitor LCD proposto Considerando ora l’investimento nel server, che inizialmente è più che sufficiente in una sola unità per tutti gli scenari proposti, è possibile seguire le indicazioni fornite da Krescendo. Il vendor abituale della società londinese è WOC (World of Computers, con sede a Cambridge, UK), specializzato nella fornitura di componenti hardware di classe Enterprise. La configurazione suggerita da Krescendo è riportata in tabella. BX80602E5520 — XEON E5520 2.26GHZ 5.86GT/S (£ 282) S5520HC — Intel Hanlan Creek Dual Xeon Server board (£ 340) SC5600BRP — Intel SC5600 Server chassis, 1+0 PSU (£ 508) 105 Valutazioni economiche ST31000340NS — BARRACUDA ES.2 1TB 32MB 3.5 SATA/300 8.5MS 7200RPM (£ 125) ST3300657SS — CHEETAH 15K.7 300GB SAS 3.5IN 3.4MS 16MB 6GBIT/S (£ 222) SH-W163A-BL — Samsung Internal 22xDVD-RW SATA Black (£ 18) 8GB 1066 DDR3 ECC [4xKVR3-1066-ECC-2G] (£ 216) AXX6DRV3GR — 6 Hotswap bays for SC56xx chassis (£ 78) Total (VAT included): £ 1,789.00 Tabella 8.5 - Configurazione del server interno suggerita da Krescendo La configurazione è in realtà decisamente sovradimensionata per le reali esigenze, soprattutto nello scenario A, ma è consigliabile perché risulterebbe un investimento più durevole nel tempo ed in grado di supportare carichi di lavoro più elevati nell’ottica di un incremento degli sviluppi e degli sviluppatori che lavorano simultaneamente. Considerando il tasso di cambio al 01/02/2010 (rapporto EUR/GBP = 0,8749), si avrebbe un prezzo di circa 2044,80 EUR. Il server proposto impiega l’ultima generazione di processori Intel Xeon, serie 5500, dotate di 4 core e cache a 3 livelli ed in grado di supportare memorie DDR3 a 800/1066/1333 MHz. Il disco Seagate Barracuda (SATA/300) è una delle migliori soluzioni disponibili per workstation, server e sottosistemi di memorizzazione, sviluppando prestazioni all'avanguardia e massimi livelli di potenza. Un ulteriore disco, dotato di prestazioni eccezionali (6 Gbit/s), è il Cheetah 15K.7 che implementa la tecnologia SAS (Serial Attached SCSI) ma può essere escluso dalla configurazione se il server è utilizzato solo in ambiente di test. Discorso analogo per il dispositivo di Hot Swap, che consente la sostituzione dei dischi anche a sistema avviato. 106 Valutazioni economiche Una configurazione alternativa, già assemblata e proposta da un vendor italiano, è riportata in tabella. Tale soluzione prevede una doppia CPU Intel Xeon (quad-core), ma dispone di memorie RAM DDR2 anziché DDR3 e dischi di qualità inferiore. PC SERVER XEON Quad Core n.2 X3230 2.66GHz x 2+8GB+2TB (2x1TB) Processore: n. 2 INTEL XEON QUAD X3230 2.66GHz/1066/8MB/775 Memoria RAM: 8GB DDR2/800 ECC Full Brand Kingston (4x2GB) Hard Disk: 2Terabyte 7200 rpm 32Mb/SATAII Seagate (2x1TB Raid 0) Scheda Madre:ASPEN HILL LX BOXED BOARD DDR2 +CTRL SATA RAID Scheda Grafica: Radeon X1050 128MB/1GB HM PCI-E Masterizzatore DVD+FDD 1.44MB: Dual Layer 16X 8.5GB+FDD Scheda audio: 16BIT integrata su mainboard Porte: 8 x USB 2.0 + 1 x Firewire Case: Case ANTEC TTITAN FileServer 1000W continui+4x5"1/4+6x3"1/2< Tastiera Trust PS2, Speaker, Mouse Logitech Pilot Plus Prezzo: 1.799,00 EUR (IVA inclusa) Vendor: Computer City (http://www.computercityhw.it) Tabella 8.6 – Configurazione alternativa del server interno Si ipotizza infine un costo di manutenzione e aggiornamenti annui pari a 500,00 EUR per ogni server e 300,00 EUR per ogni postazione di sviluppo. 8.2.2 Investimenti software I costi del software riguardano anzitutto le postazioni dedicate allo sviluppo, mentre lato server non si prevede di impiegare software proprietario, ad eccezione della piattaforma eXtraSheet. Tutte le piattaforme individuate sono infatti cross-platform e non richiedono software specifici. Il dettaglio è riportato nella tabella che segue, senza prendere in considerazione tutti i componenti Open Source o gratuiti che dipenderebbero soprattutto dalla piattaforma prescelta. Nella tabella sono indicati il costo del canone (scenario A) oppure della licenza di eXtraSheet (scenario B), che verranno stimati quando si prenderanno in esame gli scenari singolarmente. 107 Valutazioni economiche Descrizione Prezzo unitario Sistema operativo MS Windows XP Professional 125 € Suite MS Office 2007 Enterprise 450 € 90 € Software antivirus Sistema operativo server CentOS (Linux) - Piattaforma J2EE oppure PHP - MySQL RDBMS - Altri componenti free oppure Open Source (IDE, Web server, tool di sviluppo, librerie, front-end, …) - Tabella 8.7 - Investimenti in software Si ipotizzano dei costi annui di aggiornamento o acquisto nuovo software proprietario pari a 250,00 EUR per ogni postazione o server. 8.2.3 Servizi di hosting Le spese di hosting, che verrà demandato ad una società terza, riguardano inizialmente un server di produzione, preferibilmente dedicato, che erogherà i servizi della nuova piattaforma. L’hosting dedicato permette infatti al cliente di ―affittare‖ un intero server ottenendone il controllo completo, potendo scegliere la configurazione hardware e software e conseguire la massima sicurezza e le migliori performance. Considerando i dati storici aziendali, il prezzo per l’hosting dedicato di un server ―Dell PowerEdge 1850‖ risulta pari a 396,00 EUR/mese. Verificando tuttavia le performance necessarie per il nuovo server di produzione (a regime), lo stesso fornitore (Serverplan) è in grado di offrire soluzioni più potenti quali il ―Dell PowerEdge 2950‖. Il server citato assicura prestazioni all'avanguardia e il giusto equilibrio tra espandibilità interna e densità di rack con il nuovo processore Quad Core Intel Xeon L5430, 2X6MB Cache, 2.66GHz, 1333MHz FSB. Il PowerEdge 2950 garantisce sia le elevate prestazioni richieste dai clienti che la capacità dei dischi rigidi necessaria per applicazioni complesse. Scegliendo la configurazione hardware riportata in tabella, il prezzo risulta quasi doppio rispetto al server già in uso da Cefin Systems e pari a 706,00 EUR. Volendo invece orientarsi su un piano di hosting più prudente, si potrebbe ad esempio stipulare il seguente piano di hosting con il fornitore HostingVirtuale, decisamente più economico. Si tratta di un server sempre dedicato ma scarsamente configurabile in termini di hardware e dotato di performance limitate ma più che idonee a soddisfare le prime richieste di applicativi sulla nuova piattaforma. 108 Valutazioni economiche Tipologia voce Descrizione Componente HW CPU Intel Xeon L5430, 2X6MB Cache, 2.66GHz, 1333MHz FSB Componente HW RAM 8 GB DDR2 SDRAM 667MHz Componente HW 4 Hard Disk 500 GB SATA2 7.200 rpm hot plug, RAID5 Servizio 4 indirizzi IP Servizio Backup orario (500 GB) Servizio Monitoring Servizio Certificato SSL Geotrust TOTALE (IVA inclusa): 706,00 EUR/mese [Fornitore: Serverplan] Tabella 8.8 - Dettaglio del canone mensile di hosting per il server di produzione Tipologia Descrizione Componente HW CPU INTEL Core 2 Quad 2,4-2,66GHz Componente HW RAM 2 GB Componente HW 1 Hard Disk 250 GB Servizio Banda 10Mbps flat (2Mbps garantiti) Servizio Firewall CISCO PIX ridondato Servizio 2 indirizzi IP TOTALE (IVA inclusa): 114,00 EUR/mese [Fornitore: HostingVirtuale] Tabella 8.9 - Soluzione alternativa per l’hosting per il server di produzione 8.2.4 Costi di avviamento Escludendo per ora i costi del personale a regime, quelli sinora individuati rappresentano certamente le voci evidenti e tangibili, ma ne rimane una categoria meno visibile, legata soprattutto alle fasi di start-up della nuova piattaforma. Tali costi sono relativi a personale interno o esterno e riguardano, ad esempio, la configurazione dei componenti hardware, l’installazione e la configurazione degli ambienti di sviluppo e la partecipazione ai corsi di formazione. Inoltre sarebbe necessaria la riorganizzazione di parte degli uffici, l’adeguamento della rete aziendale, con eventuali movimentazioni di componenti, installazione di nuovi access point e altri apparati di rete. Nella valutazione dei costi di avviamento è inoltre necessario prestare attenzione alle perdite che l’azienda dovrà sopportare, dovute alla mancata produzione da parte del personale interno che risulterà impegnato in attività di apprendimento e messa in opera della nuova piattaforma. Di seguito si riporta una previsione dei costi di avviamento individuati. 109 Valutazioni economiche Descrizione Costo unitario Configurazione server 650 € (Krescendo senior developer - 1g) Configurazione postazione di sviluppo 400 € (Krescendo junior developer - 1g) 4.000 € (Krescendo senior developer + Corso di formazione tecnica su eXtraSheet trasferta sviluppatore Cefin Systems - 5g) 450 € (dipendente Cefin Systems - 1g) Setup ufficio e configurazione LAN Mancata produzione da parte di personale non de- 5.000 € dicato (analisti, manager, …) o inefficienze Tabella 8.10 - Costi di avviamento stimati 8.2.5 Costi del personale La valutazione dei costi del personale è stata effettuata considerando separando le figure incaricate allo sviluppo dai dipendenti impegnati nelle altre attività. La prima categoria sarà perlopiù dedicata e, di conseguenza, appare opportuno considerare il costo aziendale annuo. Viceversa, per le figure commerciali e manageriali, che svolgono altre attività all’interno dell’organizzazione e, più o meno saltuariamente, curano la commercializzazione e l’evoluzione della piattaforma e delle soluzioni basate su di essa. Per questi soggetti è quindi più opportuno valutarle in termini di ―daily fee‖ cioè il costo giornaliero che l’azienda deve sostenere per impegnarli nel progetto in esame. Le quotazioni, basate su dati storici aziendali e su indicazioni del management, sono riportate in tabella. Figura professionale Costo aziendale unitario 28.000,00 €/anno Sviluppatore Analyst 300 €/giorno Project manager 350 €/giorno Sales agent 250 €/giorno Tabella 8.11 - Assunzioni relative al costo del personale Qualunque sia lo scenario prescelto, sarebbero inoltre da aggiungere i corsi di formazione periodici, che il personale tecnico dovrà seguire per ottenere aggiornamenti relativi alle tecnologie impiegate e ai processi di sviluppo. Tale costo è stimato dal management aziendale pari a 3.000 EUR/anno, in tutti gli scenari delineati. 8.2.6 Altri oneri Cefin Systems dispone attualmente di alcuni locali inutilizzati che concede abitualmente in locazione a terzi. Nel caso in cui risultasse necessario un nuovo locale per ospitare l’area tecnica del nuovo progetto, l’azienda dovrebbe sopportare un mancato ricavo. Inoltre, la fruizione della nuova piattaforma da parte degli utenti necessiterà del certificato digitale, per l’autenticazione del server che eroga il servizio. 110 Valutazioni economiche Probabilmente sarà necessario un potenziamento dell’attuale connessione alla rete Internet, soprattutto se si opterà per il mantenimento (anche provvisorio) dei server internamente oppure se il team di sviluppo crescerà nel tempo. Infine, se la scelta cadrà sugli scenari A o B, non saranno trascurabili le trasferte effettuate dal personale coinvolto nel progetto presso l’azienda londinese Krescendo, che sarà tenuta ad aggiornare periodicamente il nuovo partner Cefin Systems. 8.2.7 Differenze tra gli scenari I piani di investimento proposti per gli scenari in esame sono caratterizzati dalle seguenti differenze, già accennati nel corso dei precedenti paragrafi: Investimenti in infrastruttura hardware interna crescenti, poiché nel primo scenario saranno necessarie esclusivamente una o due postazioni di sviluppo mentre nei casi B e C sono richieste risorse aggiuntive (server interni principalmente per testing e backup). I costi di hosting sono assenti nello scenario A (che sono compresi nel canone di Krescendo), presenti a partire dal 3° anno nel caso C (si prevede che la piattaforma non sia abbastanza matura nei primi anni e sia necessaria una maggior flessibilità) e presenti dal 1° anno nel caso B (la release di eXtraSheet potrà essere installata direttamente su server esterni e più affidabili). I tempi (e di conseguenza i costi) previsti per gli sviluppatori interni sono crescenti nei tre scenari, poiché man mano che aumenta l’autonomia da Krescendo è necessario un maggior effort dal team di sviluppo. Analogamente per il supporto tecnico. Nello scenario C, inoltre, sarà necessario un maggior investimento per il perfezionamento e l’adattamento della piattaforma open source, quantificato incrementando i tempi del 50% nel primo anno. Si ipotizza un tasso di mercato per la valutazione dell’investimento pari al 5% e un tasso di crescita dei ricavi annuo del 18%, prossimo al tasso di crescita del settore SaaS ma plausibile anche per la strategia di marketing pianificata e la probabile diffusione della piattaforma. Il ricavo iniziale presunto è differente per i tre scenari ed è massimo per il caso B, dove si ipotizza sia possibile raggiungere subito la massima efficienza e flessibilità. Le stime provengono da dati storici e dalle indicazioni ottenute dal management aziendale. 8.3 Analisi cash flow e profittabilità Terminata l’analisi dei costi quantitativa e temporale che Cefin Systems dovrebbe sostenere per l’attuazione del progetto, si è passati alla valutazione dei flussi di cassa (cash flow), un indicatore critico per la sostenibilità dell’investimento. Il cash flow è la ricostruzione dei flussi monetari nell’arco 111 Valutazioni economiche del periodo di analisi, nel caso specifico supposto pari a 5 anni, e permette di individuare il fabbisogno finanziario necessario al nuovo progetto. Nel calcolo dei flussi di cassa si è mantenuta la suddivisione tra gli scenari, utile anche per il calcolo dei successivi indici di profittabilità dell’investimento. Lo scenario A, quello maggiormente prudente, è stato dettagliato in termini di costi e benefici monetari seguendo le considerazioni e le stime effettuate in precedenza, aggiungendo le seguenti valutazioni: Licenza eXtraSheet e supporto di Krescendo, secondo le assunzioni già effettuate di utilizzo dei server di quest’ultima e fruizione del supporto e manutenzione necessari, stimata pari a 25.000 EUR/anno ma influenzata dai volumi e destinata a crescere negli anni successivi. Costi del personale crescenti nel tempo, sia dovuti alla specializzazione dello sviluppatore principale, sia all’impiego di una seconda figura con effort variabile. Ricavi stimati per il primo anno pari a 80.000 EUR, corrispondenti a 10 progetti di ridotte dimensioni oppure 5 progetti di dimensioni medio-grandi. Negli anni successivi si ipotizza un tasso di crescita dei profitti costante e pari a 18,50%. Il dettaglio dei flussi di cassa per lo scenario A è riportato in tabella. 112 Valutazioni economiche Tabella 8.12 - Prospetto costi-benefici - Scenario A Proseguendo con l’analisi, si calcola il flusso di cassa annuale ed il progresso del saldo del flusso di cassa. I risultati sono riportati in tabella. 113 Valutazioni economiche Fiscal Year Annual Investments/cost FY 1 -106.500,00 FY 2 FY 3 Annual Benefits Annual Progress cash in - cash out Cash in - cash out 80.000,00 (26.500,00) -26.500,00 -100.250,00 94.800,00 (5.450,00) -31.950,00 -108.250,00 112.338,00 4.088,00 -27.862,00 FY 4 -125.250,00 133.120,53 7.870,53 -19.991,47 FY 5 Grand total -128.250,00 157.747,83 578.006,36 29.497,83 9.506,36 9.506,36 -568.500,00 19.012,72 Tabella 8.13 - Cash flow - Scenario A Si osserva che nei primi due anni il flusso di cassa annuo risulta negativo e solo negli ultimi due anni, quando i ricavi stimati diventano considerevoli, il saldo cumulato diventa positivo. Il fabbisogno finanziario risulta notevole e può essere giustificato solo se la profittabilità dell’investimento è notevole. Procedendo al calcolo del VAN si ottiene un valore positivo, anche se non elevatissimo, e pari a 2.937,39 EUR. Per annullare il VAN si dovrebbe richiedere un tasso pari al 7,89%. Figura 8.1 - Calcolo del VAN - Scenario A Effettuando l’analisi per lo scenario B, caratterizzato dall’acquisizione della licenza di eXtraSheet e dallo sviluppo in maggiore autonomia, si è ottenuto il piano costi-benefici riportato in tabella. 114 Valutazioni economiche Tabella 8.14 - Prospetto costi-benefici - Scenario B Procedendo al calcolo dei flussi di cassa, si ottengono risultati poco incoraggianti, che evidenziano saldi negativi per tutta la durata dell’investimento, rendendolo certamente non appetibile alle condi115 Valutazioni economiche zioni previste. Infatti, il costo considerevole della licenza di eXtraSheet unito al notevole effort richiesto in termini di personale, risulta sproporzionato rispetto ai ricavi stimati, peraltro già di buona entità. Fiscal Year Annual Investments/cost Annual Benefits Annual Progress cash in - cash out Cash in - cash out FY 1 -159.500,00 100.000,00 (59.500,00) -59.500,00 FY 2 -148.750,00 118.500,00 (30.250,00) -89.750,00 FY 3 -150.750,00 140.422,50 (10.327,50) -100.077,50 FY 4 -152.750,00 166.400,66 13.650,66 -86.426,84 FY 5 Grand total -153.750,00 197.184,79 722.507,95 43.434,79 (42.992,05) -42.992,05 -765.500,00 -85.984,10 Tabella 8.15 - Cash flow - Scenario B Figura 8.2 - Calcolo del VAN - Scenario B Analizzando il terzo scenario, che prevede la scelta di una soluzione Open Source, si può prevedere il seguente il piano costi-benefici. 116 Valutazioni economiche Tabella 8.16 - Prospetto costi-benefici - Scenario C Procedendo con il calcolo dei flussi di cassa, si ottengono risultati notevoli, determinando un valore negativo solo per il primo anno e un recupero molto rapido, raggiungendo il pareggio al terzo anno e flussi in rapida crescita negli anni successivi. 117 Valutazioni economiche Fiscal Year Annual Investments/cost Annual Benefits Annual cash in - cash out Progress Cash in - cash out FY 1 -134.200,00 90.000,00 (44.200,00) -44.200,00 FY 2 -91.500,00 106.200,00 14.700,00 -29.500,00 FY 3 -98.500,00 125.316,00 26.816,00 -2.684,00 FY 4 -100.500,00 147.872,88 47.372,88 44.688,88 FY 5 Grand total -101.500,00 174.490,00 643.878,88 72.990,00 117.678,88 117.678,88 -526.200,00 235.357,76 Tabella 8.17 - Cash flow - Scenario C Procedendo con il calcolo del VAN, si ottiene conferma della ottima profittabilità dell’investimento, essendo questi pari a 90.566,12 EUR e un tasso di annullamento dello stesso pari al 57,40%. No- nostante l’incremento dell’effort previsto per il primo anno al fine di perfezionare la piattaforma, l’azzeramento dei costi di licenza e un valore di ricavi intermedio (rispetto agli altri due scenari) determina un’ottima profittabilità dell’investimento. Figura 8.3 - Calcolo del VAN - Scenario C 8.3.1 Analisi di sensitività I risultati ottenuti con il calcolo del VAN sono in realtà scarsamente significativi se considerati in valore assoluto, poiché una stima errata di qualche parametro potrebbe vanificare l’efficacia dell’analisi. Per questi motivi, è stata condotta una analisi di sensitività, verificando se la profittabilità dell’investimento è sufficientemente robusta al variare di alcuni parametri. 1) Variazione del tasso di mercato: il tasso richiesto dagli azionisti, assunto pari al tasso di mercato, può in realtà essere più o meno elevato. Avendo già calcolato il tasso interno di rendimento, è piuttosto semplice individuare se il VAN diventa negativo. In tabella sono riepilogati i tassi interni di rendimento e proposti alcuni casi limite. 118 Valutazioni economiche Descrizione Scenario A Scenario B Scenario C TIR 7,89% -15,97% 57,40% VAN con r=2% (rendimento medio BTP) 6.621,70 -45.189,20 105.939,67 VAN con r=5% (rendimento intermedio) 2.937,39 -47.762,87 90.566,12 VAN con r=8% (richiesti alti rendimenti) -103,55 -49.630,77 77.460,61 Tabella 8.18 - Analisi di sensitività sul tasso di rendimento richiesto 2) Variazione del ricavo iniziale stimato: tale valore è effettivamente difficile da stimare e la valutazione di alcune casistiche è senz’altro interessante. Come dai dati riportati in tabella, la convenienza del progetto si ha raggiungendo per il primo anno almeno la soglia degli 80.000 EUR di fatturato, che può essere definito come punto di break-even. In realtà, per lo scenario B, la convenienza dell’investimento si avrebbe solo con volumi più elevati, superiori ai 100.000 EUR. Totale ricavi (anno 1) VAN(A) VAN(B) VAN(C) 40.000 -243.231,01 -417.015,47 -214.248,52 60.000 -120.146,81 -293.931,27 -92.322,66 80.000 2.937,39 -170.847,07 100.000 126.021,59 120.000 140.000 29.603,20 -47.762,87 151.529,05 249.105,79 75.321,33 273.454,91 372.189,99 198.405,53 395.380,76 Tabella 8.19 - Analisi di sensitività sui ricavi previsti Dal grafico sotto riportato è inoltre evidente che i costi sono presunti costanti, infatti i costi marginali sono pressoché nulli, poiché e buona parte dei costi del personale e della manutenzione e commercializzazione della piattaforma sono costanti al variare delle vendite. Figura 8.4 - Break-even sui ricavi previsti 3) Variazione del tasso di crescita dei profitti: anche questo parametro è in grado di influenzare notevolmente il VAN dell’investimento. Si osserva che in questo caso la predominanza dello scenario C è decisamente marcata, dovuta presumibilmente alla presenza di costi di messa 119 Valutazioni economiche a punto della piattaforma solo durante il primo anno, permettendo di beneficiare della crescita negli anni successivi. Totale ricavi (anno 1) VAN(A) VAN(B) VAN(C) 15% -28.368,62 -87.232,88 60.255,66 20% 17.087,96 -30.074,65 111.698,07 25% 67.053,43 32.382,18 167.909,22 30% 121.537,49 100.487,26 229.203,78 35% 180.829,26 174.601,98 295.907,03 Tabella 8.20 - Analisi di sensitività sul tasso di crescita dei profitti In conclusione, anche l’analisi condotta conferma la superiorità dello scenario C. Il risultato non contempla tuttavia il livello di rischiosità, che risulta essere massimo proprio nello scenario più profittevole. 120 Analisi dei rischi e milestone progettuali 9 Analisi dei rischi e milestone progettuali Dopo aver determinato anche i parametri economico-finanziari dell’investimento, in questo capitolo si vuole fornire una serie di informazioni riguardanti gli aspetti progettuali, fornendo le linee guida per la gestione e la pianificazione dettagliata del progetto. 9.1 Fattori critici del progetto Gli aspetti fondamentali sui quali si consiglia concentrare l'attenzione degli stakeholder sono anzitutto le competenze tecnologiche: il personale deve conoscere nel dettaglio la piattaforma prescelta, essere in grado di sviluppare soluzioni standard e personalizzate con immediatezza e competenza. I dipendenti devono inoltre offrire un servizio specializzato e un supporto tecnico agile e competente. Altrettanto importante è la qualità del management per la nuova linea di business, che deve saper adeguarsi ad eventuali cambiamenti del mercato e sfruttare le nuove opportunità tecnologiche. A livello organizzativo, è richiesta una interazione produttiva tra area tecnica e commerciale, con gli analisti che si collocano in una posizione intermedia, essendo dotati di conoscenze tecnologiche ed in grado di implementare direttamente semplici soluzioni sulla nuova piattaforma. La strategia commerciale dovrà essere ben strutturata ed in grado di raggiungere un vasto numero di potenziali clienti a cui dovrà essere evidenziato il vantaggio in termini di tempi, costi e affidabilità rispetto ad uno sviluppo tradizionale e le ormai provate qualità vincenti del paradigma SaaS. 9.2 Valutazione dei rischi La buona gestione di un progetto non può garantire il successo finale, ma certamente un’amministrazione poco attenta ne determina il fallimento. I manager responsabili della pianificazione e delle tempistiche del progetto in esame devono assicurare il rispetto dei vincoli temporali e di budget concordati con il management e questo risulta particolarmente complesso per i seguenti motivi: 1. Difficoltà di controllo: buona parte degli output non sono facilmente controllabili, poiché l’intangibilità del prodotto software determina una difficoltà nel valutarne i progressi e gli unici feedback di cui dispone il manager sono costituiti dalla documentazione prodotta dal personale per certificare il completamento di determinate attività. 2. Unicità del progetto: il progetto è talmente specifico da rendere difficoltose le previsioni anche per manager di grande esperienza, la quale può essere ulteriormente ridotta dalle rapide evoluzioni tipiche del settore informatico. 121 Analisi dei rischi e milestone progettuali Queste caratteristiche possono aumentare le probabilità di ritardo, di superamento del budget o di insuccesso del progetto, rendendo necessaria una più attenta analisi del rischio. Il project manager deve prevedere i problemi che possono sorgere e prevedere soluzioni alternative. Il piano iniziale deve essere usato come guida, deve essere il migliore possibile rispetto alle informazioni disponibili e deve migliorare man mano che il progetto evolve e/o si abbiano informazioni maggiori. All’inizio del processo di pianificazione, bisogna stimare i vincoli che influenzano il progetto, quali le tempistiche, il personale disponibile, il budget che si ha a disposizione. Oltre a questo bisogna porre l’attenzione sui parametri del progetto come la struttura, la dimensione e la distribuzione delle funzioni. Si passa poi alla definizione delle milestone ed i corrispondenti deliverable del progetto e infine il progetto entra nel ciclo. Si stima una tempistica le cui attività vengono avviate o continuate; periodicamente si revisiona il progresso del progetto e si rilevano le discrepanze con la tempistica pianificata. Essendo le stime iniziali solo ipotesi, ci sarà da aggiornare il piano originario nel corso del progetto; con la disponibilità di ulteriori informazioni, si rivedono le supposizioni iniziali. Se il processo è in ritardo potrebbero essere ricontrattate con il cliente le date di consegna del progetto e i vincoli ad esso connessi; se la negoziazione fallisce e la tempistica non può essere rispettata si valuta una revisione del progetto, per trovare un approccio alternativo che soddisfi i vincoli e che rispetti le tempistiche. Ovviamente in fase di pianificazione si dovrebbe tener conto di questi inconvenienti e la stima dovrebbe essere pessimistica piuttosto che ottimistica. Passando esplicitamente alla fase di valutazione dei rischi, intesi come eventualità che possono compromettere o ritardare il successo del progetto, è possibile effettuare una classificazione in tre tipologie distinte: Project risk: rischi legati alla fase di schedule (tempistiche) del progetto o alle risorse utilizzate o da utilizzare; Product risk: rischi connessi alla qualità o alle prestazioni del sistema software sviluppato e del servizio da esso derivante; Business risk: rischi connessi all’organizzazione. La procedura per affrontare tali eventualità, detta risk management, coinvolge quattro differenti stadi: 1) Risk identification: identificazione della natura del rischio, riconducendolo ad almeno una delle tipologie esposte in precedenza; 2) Risk analysis: analisi delle conseguenze del rischio individuato nella fase precedente, determinando la probabilità di accadimento e la gravità nel caso esso si verificasse. Quello che ne dovrebbe derivare è una tabella ordinata secondo la gravità del rischio dalla quale è possibile valutare quali sono i più significativi, in base alla combinazione delle probabilità di concretizzazione e dei suoi effetti. 122 Analisi dei rischi e milestone progettuali 3) Risk planning: metodologia per evitare il rischio o comunque affrontarlo, qualora non sia possibile l’eliminazione. In particolare, sono identificabili tre macro aree di strategie in ordine preferenziale, nella cui scelta ha ruolo fondamentale l’esperienza del project manager: a. strategie rivolte ad evitare o ridurre la probabilità di rischio; b. strategie per minimizzazione dell’impatto del rischio; c. piani precauzionali, intesi come soluzioni in grado di gestire il rischio che si è verificato. 4) Risk monitoring: modalità di monitoraggio il rischio, per rilevare prontamente (mediante opportuni fattori in grado di fornire indizi) se il rischio sta per verificarsi e intervenire quindi con attività di manutenzione. La comprensione della scala di valori e delle attese degli stakeholder del progetto è essenziale per un’appropriata valutazione delle potenziali conseguenze negative di un evento, cioè dell’entità del danno associato. Benché la valutazione dell’altra componente del rischio - la probabilità della catena di eventi negativi - dovrebbe essere più oggettiva della valutazione dell’impatto del danno, vi sono molte situazioni nelle quali tale probabilità è influenzata dal soggetto che la valuta. Figura 9.1 - Il processo di risk management Come rappresentato graficamente, la gestione del rischio continua per tutta la durata del progetto: dopo l’impostazione iniziale, la situazione è monitorata e quando nuove informazioni sono disponibili, si analizzano nuovamente i rischi e si stabiliscono le nuove priorità. Nello specifico del progetto richiesto da Cefin Systems, è stata condotta un’analisi dei rischi anche se non è stato possibile determinare talune categorie di rischio con precisione, soprattutto quelle relative alle aree finanziarie e contrattuali del progetto. Una seconda limitazione alla valutazione eseguita è legata all’incertezza relativa alle fasi esecutive del progetto, non chiaramente delineate ma solamente ipotizzate al momento dell’analisi. Prima di mostrare il piano di analisi dei rischi effettuata dal team di progetto si riportano i criteri considerati, sulla base della premessa teorica, per la catalogazione dei rischi identificati. 123 Analisi dei rischi e milestone progettuali Nome campo Descrizione ID Numerazione progressiva del rischio. RISCHIO Descrizione sintetica del rischio. Ogni eventualità che può compromettere o ritardare il successo del progetto è un rischio. TIPOLOGIA Categoria del rischio: - project risk: rischi legati alla fase di schedule (tempistiche) del progetto o alle risorse utilizzate o da utilizzare; - product risk: rischi connessi alla qualità o alle prestazioni del sistema software sviluppato; - business risk: rischi connessi all’organizzazione che sta sviluppando o dovrà usare il sistema software progettato. PROBABILITÀ La probabilità che un elemento o evento di rischio si possa effettivamente manifestare. La valutazione della probabilità può essere effettuata su base quantitativa (ad esempio su una scala 1÷10) oppure qualitativa. Di seguito una possibile scala qualitativa: - molto bassa - improbabile che si verifichi - bassa - più probabile che non si verifichi - media - probabilità uguale che si verifichi o non si verifichi - alta - più probabile che si verifichi - molto alta - improbabile che non si verifichi IMPATTO Entità del danno che può derivare dal concretizzarsi del rischio (gravità degli effetti prodotti in termini di costi, tempi, qualità del risultato, soddisfazione del committente). La valutazione dell’impatto può essere effettuata in modo quantitativo (ad esempio su una scala 1÷10), oppure qualitativo. Di seguito una possibile scala qualitativa: - Catastrofico - Grave - Tollerabile - Insignificante STRATEGIA DI RISK MANAGEMENT Descrivere le azioni da intraprendere per affrontare il rischio descritto. Di solito, le risposte possibili ai rischi rientrano nelle casistiche seguenti: - evitarli: eliminare i fattori che possono ingenerare il rischio - trasferirli: cedere a terzi la gestione dell’impatto negativo del rischio - mitigarli: diminuire la probabilità o l’impatto di un evento di rischio fino a raggiungere una soglia accettabile - accettarli: quando i possibili rimedi sono peggiori dell’impatto negativo del rischio RESPONSABILITÀ A chi è affidata l'eventuale azione per evitare o mitigare il rischio. Tabella 9.1 - Criteri considerati per l'analisi dei rischi Di seguito è mostrato il piano dei rischi relativo al progetto in esame, che sintetizza l’analisi dei rischi effettuata, riportando per ogni rischio individuato le valutazioni della gravità ed una breve descrizione del processo di risk management. Resta inteso che la gestione del rischio continua per tutta la durata del progetto ed il presente piano dovrà essere ampliato, aggiornato e revisionato nel corso del progetto. 124 Analisi dei rischi e milestone progettuali Tabella 9.2 - Prospetto di analisi dei rischi di progetto 125 Analisi dei rischi e milestone progettuali 9.3 Macroattività e tempistiche proposte La tempistica è uno degli aspetti più complessi nella gestione di un progetto: i responsabili devono valutare il tempo e le risorse necessarie per completare le attività e organizzarle in una sequenza coerente. La stima della tempistica viene determinata su base incerta è può essere complicata da imprevisti; richiede la suddivisione dell’intero progetto in attività separate a cui associare le stime del tempo previsto. Solitamente, alcune attività sono svolte in parallelo ed è necessario coordinarle e organizzare il lavoro in modo da ottimizzare le risorse del team. Una regola pratica è quella di effettuare le valutazioni supponendo che ogni attività non determini problemi o imprevisti, poi aumentare tale stima per coprire difficoltà presunte ed eventualmente prendere misure precauzionali per problemi imprevisti. Ad esempio, è possibile applicare una percentuale correttiva del 30% da aggiungere alla stima originale per i problemi previsti e poi un ulteriore 20% per coprire quelli imprevisti. Le tempistiche del progetto sono solitamente rappresentate come un insieme di grafici che mostrano la divisione del lavoro, le dipendenze delle attività e l’assegnazione dello staff. La tempistica del progetto può essere rappresentata anche attraverso l’utilizzo del diagramma di GANTT (o diagramma a barre), che mostra il calendario del progetto, le tempistiche in cui le diverse attività devono essere svolte e le data di partenza e di fine delle attività. Per calcolare il tempo minimo stimato richiesto per completare il progetto si può considerare il percorso più lungo che comprende attività e milestone in ordine sequenziale, detto cammino critico; da esso dipende la tempistica generale, ogni ritardo nel completamento di un’attività critica causa ritardi al progetto ―a cascata‖ perché le attività successive non possono partire finché questa non è completata. La schedulazione del progetto richiesto da Cefin Systems è stata effettuata mediante l’applicazione Microsoft Project, che consente di gestire in modo efficiente attività, risorse e molti aspetti relativi alla pianificazione di un progetto. La funzionalità fondamentale è la creazione del diagramma di GANTT relativo al progetto, che in MS Project viene realizzato come segue: Le barre nere indicano le macroattività, mentre quelle blu le attività di dettaglio. Le linee grigie verticali indicano i giorni non lavorativi (weekend, festività). Inoltre nel diagramma GANTT vengono evidenziate le milestone, ossia i momenti decisionali che coincidono con il rilascio dei deliverable, intesi come un prodotti (o servizi) parziali di un progetto individuabile in modo effettivo, utilizzabile e riconosciuto come tale da almeno uno stakeholder. Ad ogni attività è stata assegnata una tempistica, cioè una stima del tempo necessario al suo completamento; nella loro valutazione delle tempistiche è necessario includere alcuni margini di ritardo, conseguenti a problemi che potrebbero verificarsi (es. malattia del personale, guasti hardware, rinvio di riunioni con stakeholder, ritardi nelle consegne di componenti hardware e/o software). 126 Analisi dei rischi e milestone progettuali Si è inoltre scelto di non dettagliare le singole attività, bensì di definire esclusivamente le macroattività, con il duplice obiettivo di mantenere la visione globale e non addentrarsi nelle differenze tra gli scenari possibili. La data di inizio del progetto ipotizzata, puramente indicativa, è il 01/03/2010. I risultati ottenuti con MS Project sono riportati di seguito, ma sono comunque da ritenersi indicativi per la genericità delle attività proposte e per i tempi che, in caso di altre attività aziendali a maggior priorità, possono certamente essere posticipate o livellate con un effort maggiormente distribuito. Le risorse interne che si ipotizzano sono le seguenti: Management aziendale, composto dai vertici dell’azienda e coinvolti esclusivamente nelle attività che richiedono poteri decisionali considerevoli. Proposal manager, è la figura che, partendo dal presente elaborato procede alla realizzazione di una proposta per il management aziendale e collabora alla definizione del team di progetto. Il suo incarico termina al momento dell’accettazione del progetto (termine della FASE 2). Project Manager, è la figura già indicata che non supervisionerà solo il progetto di avviamento della business line, ma continuerà a gestirla nelle fasi successive. Team di progetto, è un gruppo di due/tre dipendenti incaricati di svolgere gran parte delle attività tecniche, di carattere progettuale ed operativo, per condurre il progetto alla fase di avviamento. Le competenze richieste sono soprattutto di tipo tecnologico. Agente commerciale/i. Sviluppatore/i. Analista/i. Società Krescendo. 127 Analisi dei rischi e milestone progettuali Tabella 9.3 - Schedulazione proposta delle macroattività 128 Analisi dei rischi e milestone progettuali Figura 9.2 - Diagramma di GANTT risultante dalla schedulazione 129 Conclusioni 10 Conclusioni 10.1 Valutazione critica dei risultati Il risultato finale delle attività svolte dal candidato è stato globalmente soddisfacente, sia sotto l’aspetto formativo sia riguardo le informazioni reperite e le valutazioni condotte. Gli obiettivi che erano stati prefissati sono stati raggiunti, permettendo all’azienda di ottenere una panoramica circa gli scenari alternativi e le informazioni utili a decidere se e in quale maniera avviare il progetto. Si può certamente affermare che soluzioni di data management aventi le caratteristiche ricercate sono estremamente rare, ancor più se sono necessarie caratteristiche di performance ed affidabilità ragguardevoli. Dopo il primo periodo di utilizzo della piattaforma eXtraSheet da parte del candidato, ne è stata approfondita l’architettura ed i processi di sviluppo. Questa fase ha consentito di sperimentare direttamente la complessità di un sistema evoluto e particolarmente funzionale. La piattaforma J2EE e il framework uView hanno permesso alla società londinese di sviluppare una piattaforma di alto livello quale eXtraSheet, che fino ad alcuni anni fa era impensabile. La ricchezza di funzionalità e la facilità di personalizzazione proiettano le soluzioni SaaS verso orizzonti molto promettenti, che potrebbero portare le utenze business ad impiegare unicamente sistemi web-based in un futuro molto prossimo. La piattaforma eXtraSheet mostra i risultati di una ottima competenza in ambito SaaS, non solo tecnologica, detenuta dalla società Krescendo: è già orientata soluzioni Enterprise e risulta semplice da utilizzare per l’utente, che non percepisce la complessità del sistema e può effettuare molte operazioni anche di amministrazione in completa autonomia. Le soluzioni sviluppate personalmente dal candidato hanno invece riguardato applicazioni (eXtraSheet-based) con gradi di personalizzazione superiore che hanno richiesto lo sviluppo di codice e la conoscenza della piattaforma Java nel suo complesso. Le interazioni con il team della società Krescendo hanno inoltre permesso di approfondire i processi interni e individuare sinergie e criticità, utili a definire gli scenari che Cefin Systems potrebbe intraprendere qualora volesse creare la nuova linea di business. La fase successiva, che ha previsto la ricerca e lo studio di soluzioni alternative ad eXtraSheet, ha condotto all’individuazione di numerose soluzioni. Tra queste, tuttavia, la maggior parte, pur essendo altamente flessibili, si fermavano ad un livello inferiore rispetto a quello ricercato poiché offrivano esclusivamente funzionalità a livello di programmazione e nessuna funzionalità di tipo ―out-of-the-box‖, richiedendo lo sviluppo ex-novo di ogni nuova applicazione, mediante la stesura di codice. Tra le soluzioni migliori, Wavemaker era fondata su una logica molto innovativa, riducendo notevolmente i tempi di sviluppo, ma si differenziava piuttosto da eXtraSheet, essendo una soluzione general-purpose e dotata di performance non eccezionali. 130 Conclusioni Le altre due piattaforme sulle quali sono stati realizzati alcuni casi di studio erano invece basate su architetture molto diverse da eXtraSheet: fondamentalmente PHP+MySQL, caratterizzata da una ridotta complessità e maggiore immediatezza. Le due alternative si sono però dimostrate ricche di funzionalità e molto più vicine all’idea di business propria di eXtraSheet. Anche la fase di benchmarking, seppur di carattere orientativo, ha confermato che una valida alternativa ad eXtraSheet potrebbe essere proprio VFront, una soluzione Open Source, meno orientata al settore Enterprise e con performance non paragonabili ad eXtraSheet ma potenzialmente semplice da amministrare, ampliare e migliorare da parte dell’ipotetico nuovo team di sviluppo di Cefin Systems. In alternativa lo scenario che prevede la scelta di eXtraSheet, e quindi la partnership con Krescendo, sarebbe altrettanto appetibile, offrendo vantaggi in termini di formazione, supporto e affidabilità, pur essendo più oneroso in termini di costi dovuti a Krescendo per le licenze su eXtraSheet e/o i servizi erogati da quest’ultima. Analizzando l’idea di business, le potenzialità di successo per soluzioni SaaS che includono servizi di consulenza sono notevoli, specialmente in presenza di sinergie. Considerando l’analisi economica condotta, le prospettive del mercato SaaS risultano interessanti e l’offerta di Cefin Systems potrebbe certamente essere appetibile per i clienti business caratterizzati da processi non standard o esigenze specifiche. Gli aspetti da considerare per decidere se avviare il progetto e, in caso affermativo, quale scenario preferire, sono principalmente due: 1) Volumi, indispensabili per proseguire lo sviluppo della piattaforma negli anni successivi (oppure corrispondere a Krescendo licenze e servizi aggiuntivi). A questo, oltre alle competenze del personale tecnico, sono particolarmente importanti l’abilità degli agenti commerciali. 2) Seppur la scelta tra gli scenari proposti appare semplice considerando le valutazioni economiche (scenario C, che offre il massimo VAN), si devono considerare altri criteri non contemplati nel semplice modello di valutazione dell’investimento. Infatti, la scelta di una piattaforma Open Source e la completa autonomia espone l’azienda ad un rischio elevato, ad esempio constatando che la piattaforma non è sufficientemente flessibile o scalabile per svolgere le attività preventivate. Gli scenari A e B sono caratterizzati da minore aleatorietà, poiché la piattaforma eXtraSheet è matura e la società Krescendo dispone di competenze molto avanzate in merito, se non altro in abito tecnologico ed eventualmente anche a livello commerciale si potrebbe svolgere attività di sviluppo per clienti di Krescendo, almeno nella fase di startup. Tra lo scenario A e B appare più conveniente la soluzione A in ogni caso ma è necessario considerare che al crescere dei volumi l’azienda Krescendo potrebbe non prestarsi più per l’utilizzo dei propri server e delle proprie risorse interne poiché la complessità delle attività e delle informazioni da gestire sarebbe eccessiva e richiederebbe presumibilmente il passaggio allo scenario B, di tipo ―flat‖ e con maggior autonomia reciproca. 131 Conclusioni Il risultato dell’analisi vuole quindi suggerire che, se l’azienda è disposta a sopportare un rischio più consistente (ad esempio auto-finanziando costi extra attraverso i proventi derivanti da altre attività aziendali caratterizzate da margini elevati) lo scenario più idoneo è certamente il C. Qualora prevalesse il fenomeno di ―avversità al rischio‖ e l’intenzione di investire in area profittevole con risultati positivi ma limitati superiormente, allora le soluzioni più idonee risulterebbero quelle rimanenti: si ipotizza infatti che, in caso di esito positivo dello scenario A (quello probabilmente più profittevole) i volumi diventerebbero elevati e sarebbe necessario convergere all’ipotesi B per le motivazioni già esposte. 10.2 Sviluppi futuri Il candidato ha constatato che l’obiettivo del progetto studiato è in realtà in contrasto con un altro obiettivo aziendale: l’internalizzazione del prodotto Sateltrack. L’obiettivo strategico per Cefin Systems, già espresso in più occasioni, è il ritiro dell’incarico decennale affidato alla società Krescendo, riguardante lo sviluppo informatico di Sateltrack. Infatti, le inefficienze inevitabilmente presenti nelle interazioni con Krescendo, preoccupano il management aziendale che percepisce la perdita di controllo sul prodotto core e storico per l’azienda. Tali inefficienze riguardano principalmente i costi, i tempi di risposta e la difficoltà nella gestione dei flussi informativi tra le due aziende. Pur essendo un prodotto maturo, Sateltrack dispone ancora di potenzialità enormi ed è attualmente leader sul mercato nel settore dei sistemi SaaS di fleet management, offrendo funzionalità avanzate in grado di portare elevato valore aggiunto nella gestione delle flotte. I nuovi entrati sul mercato offrono soluzioni a basso costo e con modeste funzionalità, ma soprattutto non sono provvisti del background necessario per proporre al cliente servizi di consulenza o personalizzazione di alcune funzionalità. Si prevede che un controllo diretto, unito a importanti innovazioni (tecnologiche o funzionali) e alla stipula di nuovi accordi commerciali con aziende fornitrici di prodotti o servizi complementari, potrebbe migliorare ulteriormente i volumi di vendita ed eventualmente portare allo sviluppo di nuove soluzioni integrate per i trasporti. Nel contesto descritto, i contenuti del presente elaborato sarebbero estremamente utili a tale scopo, essendo l’infrastruttura hardware e software di Sateltrack molto simile a quella di eXtraSheet. Sateltrack è senza dubbio caratterizzato da una complessità superiore poiché contempla un’infrastruttura di comunicazioni molto più complessa e di tipo ―real-time‖, richiede capacità di elaborazione e di storage superiori, ma le tecnologie impiegate ai livelli sottostanti sono pressoché identiche. Qualora si voglia dar priorità al presente obiettivo, molte fasi progettuali risulterebbero analoghe, mentre non si presenterebbero più scenari alternativi, dato che Sateltrack è al 100% di proprietà Cefin Systems e alla società Krescendo viene esclusivamente commissionato lo sviluppo. 132 Conclusioni Sarebbe inoltre ipotizzabile una sinergia tra le due soluzioni, permettendo ad esempio di raggiungere entrambi gli obiettivi con effort ridotti. In questo caso, gli scenari preferiti per la piattaforma Web sarebbero quelli in partnership con la società Krescendo, mentre le alternative Open Source potrebbero risultare eccessivamente eterogenee. L’investimento sarebbe comunque notevole e si consiglierebbe di evitare parallelismi in assenza di personale dedicato esclusivamente ad uno dei due ambiti, poiché la complessità delle due piattaforme potrebbe rendere difficilmente coordinabili le attività comuni. 133 Bibliografia Bibliografia Testi e pubblicazioni scientifiche [1] Ian Sommerville, Ingegneria del software, Addison & Wesley, 2007 [2] Eric Armstrong, The J2EE™ 1.4 Tutorial, 2005 [3] Sun Microsystems, Designing Enterprise Applications with the J2EE™ Platform, Second Edition, http://java.sun.com/blueprints/guidelines/designing_Enterprise_applications_2e/, [08/05/2009] [4] DEGESYS Premium Solutions, Comparison of Oracle, MySQL and PostgreSQL DBMS, 2008 [5] O’Reilly OnLamp.com, Digg PHP's Scalability and Performance, 2006 [6] Marco Cantamessa, Il Project Management. Un Approccio Sistemico alla Gestione dei Progetti, ISEDI, 2007 [7] Fiorenzo Franceschini, Quality Function Deployment: uno strumento progettuale per coniugare Qualità e Innovazione, Il Sole 24 ORE Libri, 2003 [8] Michael E. Porter, The Five Competitive Forces That Shape Strategy, Harvard Business Review, 2008 [9] Magic Software Enterprises, Maximizing Benefits from Software-as-a-Service via Seamless Integration with On-Premises Applications, 2007 [10] Scott Sehlhorst, Software-as-a-Service vs. Software-as-a-Product, 2008 [11] The Sectoral e-Business Watch, ICT e tendenze dell’e-business nel 2008, 2008 134 Bibliografia Siti Web [12] AboveNet, http://www.above.net, [14/10/2009] [13] Cefin Systems, http://www.cefinsystems.com, [22/09/2009] [14] eXtraSheet, http://www.extrasheet.com, [03/08/2009] [15] Sateltrack, http://www.sateltrack.com, [22/09/2009] [16] Krescendo, http://www.krescendo.com, [22/09/2009] [17] W3C, http://www.w3.org, [16/12/2009] [18] DSC, http://www.dsc.net, [22/09/2009] [19] Java Platform, http://java.sun.com, [04/08/2009] [20] DabbleDB, http://dabbledb.com, [24/09/2009] [21] Wavemaker, http://www.wavemaker.com , [20/10/2009] [22] Xataface, http://xataface.com, [20/10/2009] [23] VFront, http://www.VFront.org, [23/10/2009] [24] Apache Click, http://click.apache.org, [20/10/2009] [25] CentOS, http://www.centos.org, [22/07/2009] [26] PHP, http://php.net, [21/07/2009] [27] MySQL, http://www.mysql.com, [13/11/2009] [28] Gartner, http://www.gartner.com, [22/01/2010] 135