NOVA PA

applicazioni legacy in cloud

Attraverso l’Avviso “Programmi Integrati di Agevolazioni PIA Piccole Imprese” e con gli investimenti relativi al Progetto “NOVA PA – contabilità ed e-procurement per una PA digitale” la Tempo srl intende definire, progettare e realizzare una implementazione architetturale, denomina ALAMO (enhAnced Legacy App MigratiOn) che consenta ad un’applicazione legacy di poter essere installata su server in cloud, di erogare le sue funzionalità come servizi e di visualizzare l’interfaccia grafica, ad esempio forms, pop-up e message box di cui essa si compone, in controlli grafici adatti ai browser web, con una nuova user-experience ma senza intaccare la logica di base ed il flusso di lavoro originali dell’applicativo. 


LO SCENARIO:

Siamo nell’era del Cloud Computing, dell’Internet of Things, del Software as a Service e del Mobile First, ovvero si naviga principalmente da dispositivi mobile (50,5 %) piuttosto che desktop (46,5%) per accedere tramite un Browser ad un servizio distribuito attraverso il web da risorse in Cloud. Un’azienda che vuole essere competitiva sul mercato deve offrire una soluzione software che soddisfi tutte le necessità del cliente in termini di funzionalità (si pensi, ad esempio, ad un ERP) e che abbia le caratteristiche appena citate affinché gli utenti non siano vincolati all’uso del software esclusivamente dalla loro postazione desktop ma possano navigare attraverso un browser web da un qualsiasi dispositivo mobile. È iniziata da qualche anno la quarta rivoluzione industriale e tutte le aziende sono chiamate a partecipare ad un processo di automatizzazione ed interconnessione chiamato Industria 4.0, processo che le porta ad intraprendere un percorso di innovazione tecnologica il cui principale alleato è sicuramente il Cloud Manufacturing. Questo metodo stabilisce che vi sia un accesso agevole e sicuro alle informazioni aziendali attraverso l’uso del Cloud e delle tecnologie web. L’idea è di permettere alle aziende di sfruttare la flessibilità del Cloud allo scopo di aumentare gradualmente le loro capacità di elaborazione e distribuire i propri servizi attraverso il web.

Nelle start-up o nelle aziende che vogliono innovare, l’approccio alla creazione di una nuova applicazione sarà moderno e vedrà l’utilizzo di nuovi framework di sviluppo rapido rivolti al web, di architetture rivolte ai servizi e della distribuzione delle risorse in cloud; mentre nelle aziende il cui core business è basato su applicazioni desktop nate molti anni fa, scritte con vecchi linguaggi, architetture obsolete e stratificate nel tempo, immaginare di trasformare le proprie applicazioni da desktop a web, convertire le librerie in servizi, modificare l’architettura da stand-alone a cloud, salvaguardare il know-how, aggiornare le competenze degli sviluppatori dai vecchi linguaggi ai nuovi, introdurre il concetto di scalabilità ed incrementare il livello di sicurezza e protezione dei dati è cosa ardua per i tempi di realizzazione ed i costi da sostenere. Ciò nonostante, è necessario effettuare una trasformazione delle applicazioni desktop in applicazioni web e sfruttare le potenzialità offerte dal Cloud.

La riscrittura da zero di un nuovo software che replichi tutte le funzionalità del vecchio, per il quale sono stati spesi parecchi anni è evidentemente da scartare per i seguenti motivi:

 – Il tempo, lo sforzo, il rischio e il costo richiesti da una riscrittura manuale dell’intero codice non sono facilmente stimabili. Le applicazioni potrebbero avere centinaia o migliaia di form, finestre di dialogo e funzionalità che potrebbero richiedere un tempo di realizzazione di decine di anni-uomo per arrivare al completamento del software.

 – Esiste un rischio enorme quando si esegue una riscrittura manuale se non si ha la possibilità di poter testare la logica e il codice dell’applicazione iniziale ed è quello della mancanza di garanzia di qualità. Solitamente, gli algoritmi e la logica sono stati sviluppati nel corso di decenni su un numero enorme di scenari di input e di output. L’impegno richiesto per garantire la qualità e la retrocompatibilità al 100% dell’intera applicazione è enorme e vanno riscritti tutti i test nel nuovo linguaggio per la nuova architettura.

 – Vi è una solida base utenti che ha imparato, nel corso degli anni, ad utilizzare l’applicazione esistente e si è creata un flusso di lavoro che permette loro di lavorare in maniera efficiente e veloce. Riscrivere l’applicazione per il web, mantenendo le tutte le funzionalità, comporta necessariamente la creazione un nuovo design, le modifiche dei flussi di lavoro, la disposizione dei controlli nelle schermate e la riscrittura dei manuali;

 – L’azienda, visto che l’applicazione esistente continua ad essere manutenuta e visto che le proprie risorse sono difficilmente convertibili dal vecchio linguaggio al nuovo, deve duplicare i costi del settore R&S lasciando le risorse che già possiede a supportare l’applicazione esistente e ricercando nuove risorse per l’implementazione della nuova applicazione; le risorse con una adeguata esperienza non sono, però, facilmente reperibili.

Per i motivi appena esposti, la riscrittura da zero di un nuovo software che replichi le funzionalità del vecchio è difficilmente sostenibile per molte aziende.

Una soluzione alternativa alla riscrittura è quella di effettuare un porting del software dal vecchio linguaggio al nuovo. Questa attività deve essere automatizzata a causa della gran quantità di form e codice da trasformare e può presentare delle notevoli difficoltà per i seguenti motivi:

 – I linguaggi di partenza quali Visual Basic, C++, Visual Fox Pro sono obsoleti e hanno sintassi, tipi di dato, pattern di sviluppo e architettura che non hanno un equivalente o sono difficilmente traducibili nei linguaggi moderni che sono tipicamente ad oggetti, fortemente tipizzati ed utilizzano pattern di programmazione come ad esempio Singleton, Model View Controller, Repository Pattern; tra questi linguaggi citiamo C#, Python, Angular, Typescript, etc.

 – È necessario trasformare vecchie librerie di classi in librerie compatibili COM+ affinché possano essere referenziate nel nuovo progetto.

 – Le finestre di partenza sono dei form windows mentre le schermate di arrivo sono delle maschere web all’interno di un browser; pertanto bisogna ripensare alla disposizione dei controlli e ripensare la user-experience.

 – Di fatto non esiste un software che, per applicazioni grandi e che tipicamente constano di centinaia di migliaia di righe di codice, riesca a trasformare in maniera automatizzata tutto il codice dell’applicazione di partenza. 

 – Durante il periodo di transizione, la cui durata è difficile da stimare ma che sicuramente potrebbe coprire mesi e talvolta anni, il vecchio software va congelato, nessuna modifica né tantomeno nessun oggetto, form o funzione può essere aggiunto. In particolare, non sarà possibile modificare o correggere le maschere già trasformate nel nuovo linguaggio per non incorrere nella necessità di ripetere il processo di conversione.




L’IDEA:

considerate non praticabili sia la riscrittura di un software monolitico sia il suo porting ad altra architettura web, è necessario ideare e progettare una soluzione che, rispetto all’applicazione di partenza, permetta di:

 – Riutilizzare le librerie e i form

 – Sviluppare nuovi form e aggiornare le funzionalità

 – Continuare la manutenzione, la correzione dei bug e i test

 – Salvaguardare le funzionalità

 – Mantenere le basi di dati

 – Accedere all’applicazione attraverso un qualsiasi browser web in maniera indipendente da dispositivo (desktop o mobile)

 – Portare l’applicazione in cloud

 – Erogare le funzionalità come servizi

 – Implementare e garantire la sicurezza

 – Garantire la scalabilità verticale ed orizzontale dell’applicazione

 – Customizzare l’interfaccia grafica sulla base delle indicazioni del cliente.





LA RICERCA:

Le attività di ricerca e sviluppo che la Tempo srl svolgerà all’interno del progetto “NOVA PA – contabilità ed e-procurement per una PA digitale” saranno volte alla individuazione di ALAMO, un’architettura software, il cui core sarà un view engine, che possa generare dinamicamente codice HTML a fronte di una richiesta http. Questo engine dovrà essere in grado, per ogni componente e form Windows, di creare il corrispondente controllo e maschera web e di incorporare la business logic e le funzionalità attraverso il binding delle proprietà e degli eventi. Inoltre, quest’architettura deve essere in grado di supportare svariati linguaggi poiché, come anticipato, l’applicazione legacy potrebbe essere scritta in linguaggi differenti, anche datati. Dato che i componenti grafici, una volta renderizzati dal view engine, saranno visualizzabili anche su dispositivi mobile, sarà necessario utilizzare un framework front-end che consenta ai controlli web di ridistribuirsi e adattarsi in maniera intelligente a seconda del dispositivo in uso.

Inoltre, per facilitare gli utilizzatori nell’interazione attraverso i dispositivi mobile si includerà un modulo che, attraverso l’abilitazione del microfono del dispositivo e tramite l’invio di alcuni comandi vocali, possa automatizzare le procedure di inserimento. Infatti, dato che l’applicazione legacy è stata progettata inizialmente per essere utilizzata come desktop application, alcuni form e alcune dialog potrebbero includere un numero elevato di campi e l’inserimento dei valori all’interno degli stessi potrebbe risultare difficoltoso per gli utenti. Grazie all’implementazione di uno Speech Recognition System, sarà possibile limitare gli errori dovuti alle procedure di inserimento dati da parte degli utenti.

Infine, per porre rimedio ad eventuali problemi legati alla sicurezza dei dati, alla scalabilità orizzontale e verticale delle risorse e ai tempi di elaborazione molto lunghi, si andranno ad esplorare tutti le opzioni Cloud disponibili sul mercato, sia open source che a pagamento: effettuando il deploying dell’applicazione su un’infrastruttura Cloud, queste problematiche saranno appannaggio di questa tecnologia. Per tale motivo, si verificherà se le soluzioni Cloud selezionate abbiano a disposizione delle API che consentano il deployment dell’applicazione implementata.


Progetto NOVA PA - Contabilità ed E-procurement per una P.A. Digitale
Tempo S.R.L.
CODICE PRATICA: SJA8705

POR PUGLIA FESR 2014-2020
Obiettivo Convergenza
Regolamento regionale della Puglia per gli aiuti in esenzione n. 17 del 30 settembre 2014 Titolo II – Capo 2 “Aiuti ai programmi integrati promossi da Piccole Imprese” (articolo 27 del Regolamento Regionale n. 17 del 30/09/2014)