Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e...

27
INTRODUZI ONE STATO DELL’ARTE OBIETTIVI PROGETTAZI ONE REALIZZAZI ONE DELL’APPLI CAZIONE CONCLUSION I TO MIGROS: PROGETTAZIONE E SVILUPPO MENTI DI TRANSCODIFICA DELLE COMPON CLIENT E SERVER DEI SISTEMI LEGACY Tesi di laurea in Software Engineering UNIVERSITÀ DEL SALENTO FACOLTÀ DI INGEGNERIA CDL MAGISTRALE IN INGEGNERIA INFORMATICA RAMO APPLICATIVO Relatore: Chiar.mo Prof. Luca MAINETTI Correlatore: Ing. Andrea PANDURINO Controrelatore: Prof. Roberto PAIANO Laureando: Giacomo RUSSO Matricola: 10083137

Transcript of Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e...

Page 1: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

PROGETTO MIGROS: PROGETTAZIONE E SVILUPPO DEGLISTRUMENTI DI TRANSCODIFICA DELLE COMPONENTI

CLIENT E SERVER DEI SISTEMI LEGACY

Tesi di laurea in Software Engineering

UNIVERSITÀ DEL SALENTOFACOLTÀ DI INGEGNERIA

CDL MAGISTRALE IN INGEGNERIA INFORMATICA

RAMO APPLICATIVO

Relatore: Chiar.mo Prof. Luca MAINETTICorrelatore: Ing. Andrea PANDURINOControrelatore: Prof. Roberto PAIANO

Laureando: Giacomo RUSSOMatricola: 10083137

Page 2: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONESTATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Migrazione di un LIS• L’approccio consigliato per ridurre i costi di gestione del LIS è la

reingegnerizzazione: intraprendere un processo di migrazione dal sistema source verso un'architettura target (fondata su tecnologie allo stato dell'arte e conforme ai principi di qualità del software moderni), riprogettando ogni componente del LIS.

• Bisogna far sì che le tecniche di analisi e transcoding del codice legacy siano le attività guida nell’ambito di un processo di migrazione di un LIS:– costituiscono le attività preliminari che determinano in gran parte l’esito di

un progetto di migrazione.

• Transcoding: l’insieme di operazioni di lettura automatica, analisi e conversione del codice in un altro linguaggio di programmazione, in modo che il codice risultante mantenga la stessa funzionalità del codice di origine.

2/25

Page 3: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTEOBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Parsing e generazione del codice• La transcodifica di codice legacy prevede le

fasi:– Lexing: riconoscimento dei simboli;– Parsing: riconoscimento delle espressioni;– Generazione: traduzione delle espressioni nel

codice target.• Due possibili approcci:

– Compiler compilers: basate su una grammatica formale che definisce le modalità di lexing e parsing (JavaCC, Java Tree Builder, NacaTrans);

– Tecnologie model-driven: basata sulla lettura di modelli e su regole per trasformare ciascun elemento in codice (Model-to-Text), (Eclipse Modeling Framework, Acceleo).

3/25

Page 4: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTEOBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Parsing e generazione del codice• I transcoder generalmente eseguono il loro compito prendendo

come input l’intero codice sorgente legacy, in maniera olistica. • Evoluzione: partizionare il processo di transcoding, permettendogli

di funzionare su sottoinsiemi più piccoli dell’intero codice (gruppi di file, singoli file, singole procedure), detti Migration Unit.

• In questo modo è possibile condurre più «batch» di transcodifica, ognuno indipendente dall’altro, potendo costruire l’architettura target risultante assemblando i vari risultati ottenuti (da qui l’utilità di utilizzare un’architettura target component-oriented).

4/25

Page 5: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTEOBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Parsing e generazione del codice• I transcoder generalmente eseguono il loro compito prendendo

come input l’intero codice sorgente legacy, in maniera olistica.• Evoluzione: partizionare il processo di transcoding,

permettendogli di funzionare su sottoinsiemi più piccoli dell’intero codice (gruppi di file, singoli file, singole procedure), detti Migration Unit.

• In questo modo è possibile condurre più «batch» di transcodifica, ognuno indipendente dall’altro, potendo costruire l’architettura target risultante assemblando i vari risultati ottenuti.

5/25

Page 6: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTEOBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Generazione di codice secondo MDA

• Il paradigma Model-driven Architecture di OMG prevede l’utilizzo di trasformazioni Model-to-Text per generare codice a partire dalla modellazione di un dominio.

• Le trasformazioni Model-to-Text sono definite tipicamente in maniera statica: ad ogni elemento del modello corrisponde un solo tipo di generazione.

• Evoluzione: consentire la scelta a run-time della particolare trasformazione con cui deve essere generato un elemento del modello (mapping rule).

• La trasformazione è personalizzabile ed estendibile da parte del progettista.

• Applicazione di questa tecnica alla generazione di una UI, data la descrizione della User Experience.

6/25

Page 7: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTEOBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Rich Internet Application• Le Web Application approssimano sempre meglio le

tradizionali applicazioni desktop, offrendo un'alta reattività e una User Experience ricca.

• Gli ultimi anni hanno visto l'affermazione in questo ambito delle tecnologie di tipo RIA (Rich Internet Application).

• Utilizzo di RIA come target della migrazione di LIS.• Metodologie di progettazione di RIA:

– Rich – IDM: progettazione del dialogo utente – sistema nell’ambito di una RIA;

– RUX – Method: trasformazione di modelli della UX in modelli astratti di intefaccia, che a loro volta saranno tradotti in interfacce utente RIA concrete. È integrabile con la metodologia Rich-IDM e ben si presta al paradigma del Model-Driven Engineering.

7/25

Page 8: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Il processo di migrazione

8/25

Page 9: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Il processo di migrazione

9/25

Ambito del lavoro di tesi

Page 10: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Obiettivi• Obiettivo: progettazione e realizzazione di una suite di strumenti di

traduzione da codice legacy a:– componenti integrabili in architettura SCA (per quanto concerne lo strato di

business logic del LIS);– componenti grafici integrabili in un client RIA (per quanto concerne lo strato

di presentation del LIS);• Granularità della migrazione: One-to-One: ad ogni procedura COBOL

dovrà corrispondere un componente SCA, ad ogni form del client dovrà corrispondere un componente RIA .

• Il risultato del transcoding dovrà inoltre essere adatto al deploy su una moderna architettura enterprise, composta da:– Data layer, basato su tecnologie di tipo Object-Relational Mapping;– Service layer, organizzata secondo un’architettura di tipo SCA che espone

Web Services;– Presentation layer, basato su un client RIA.

• La componente client da migrare sarà generata in base alle informazioni ottenute da un reverse engineering della User Experience del LIS.

10/25

Page 11: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Architettura logica• Due strumenti di transcodifica da progettare: uno

per la componente server, uno per la componente client

11/25

Page 12: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Architettura logica• Due strumenti di transcodifica da progettare: uno

per la componente server, uno per la componente client

12/25

Page 13: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Transcoder COBOL - Java• I suoi compiti sono:

– il preprocessing dei file COBOL;– l’analisi dei file sorgente preprocessati;– navigazione della struttura semantica del codice al fine di

collezionare le informazioni per costituire delle Migration Unit;

– esportazione dei risultati dell’analisi e del codice preprocessato.

– transcodifica dei file COBOL in linguaggio Java, in modalità 1 ad 1, in accordo ai risultati dell’analisi.

• Svolge un transcoding basato su unità indipendenti di codice (Migration Unit) da poter migrare separatamente, invece del classico transcoding «olistico», in cui la conversione è fatta passando in input l’intero codice sorgente.

13/25

Page 14: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Transcoder COBOL – Java:COBOL Preprocessor

14/25

Page 15: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Transcoder COBOL - Java

15/25

SingletonStrategy

Strategy

Page 16: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTEOBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Transcoder COBOL – Java:Transcoder

• NacaTrans: traduttore COBOL - Java, traduce in classi Java che impiegano la libreria di runtime NacaRT.

• È stato progettato per tradurre ogni linea di codice COBOL con esattamente una linea di codice Java, in modo che il sorgente risultante sia il più simile possibile al codice originale (codice Java Raw).

• Questa è una scelta progettuale che permette ad un’azienda di salvaguardare il capitale umano dei programmatori COBOL, permettendo di riaddestrarli solo per il mantenimento di questo tipo di codice.

16/25

Page 17: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Transcoder COBOL – Java:Transcoder

17/25

• NacaTrans svolge già una transcodifica COBOL – Java, però il suo impiego pone vincoli stringenti sul codice convertito risultante:– NacaTrans non è in grado di tradurre il 100% del codice COBOL in

input,, occorre perciò intervenire per aumentare la portata di traduzione del tool;

– NacaTrans genera classi Java il cui uso è limitato nell’ambito dell’ambiente di runtime di Naca (NacaRT);

– NacaTrans non supporta la modalità di traduzione One-to-one;

• Si è quindi modificato lo strumento in modo da:– estendere la portata della generazione;– Generare codice idoneo ad essere eseguito in un ambiente meno

restrittivo;– introdurre il supporto alla migrazione One-to-one.

Page 18: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Generatore RIA UI

18/25

• Il suo compito è:– Leggere le regole di trasformazione

(mapping rules);– Caricare il modello della User Experience

indicato;– Convertire ogni elemento del modello Rich

– IDM nel corrispondente elemento di output specificato nella mapping rule;

– Avviare la generazione del codice relativo a ciascun componente di output, utilizzando il suo metodo di generazione.

Page 19: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Generatore RIA UI

19/25

Page 20: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONEREALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Generatore RIA UI

20/25

SingletonStrategy

Facade

Page 21: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Implementazione dei componenti dell’applicazione

• Tecnologie utilizzate:– Transcoder COBOL – Java: JavaCC 5.0,

Java Tree Builder 1.3.2, NacaTrans 1.2;– Generatore RIA UI: Eclipse Modeling

Framework Core (Juno release), Acceleo 3;

– Componenti server migrati: NacaRT 1.2;

– Componenti client migrati: Microsoft Silverlight 3 (con Code Behind in C#);

21/25

Page 22: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Case study: migrazione di un’applicazione COBOL CICS di gestione clienti

22/22

Segue un filmato del case study

Page 23: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Case study: migrazione di un’applicazione COBOL CICS di gestione clienti

23/22

Segue un filmato del case study

Page 24: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Case study: migrazione di un’applicazione COBOL di gestione clienti

24/25

COBOL Java (basato su NacaRT)1000-PROCESS-CUSTOMER-MAP. * PERFORM 1100-RECEIVE-CUSTOMER-MAP. PERFORM 1200-EDIT-CUSTOMER-DATA. IF VALID-DATA PERFORM 1300-GET-CUSTOMER-RECORD END-IF. IF VALID-DATA SET SEND-DATAONLY TO TRUE PERFORM 1400-SEND-CUSTOMER-MAP ELSE SET SEND-DATAONLY-ALARM TO TRUE PERFORM 1400-SEND-CUSTOMER-MAP END-IF.

protected void $1000ProcessCustomerMap() { // mRT.perform($1100ReceiveCustomerMap); mRT.perform($1200EditCustomerData); if (mRT.is(validData)) { mRT.perform($1300GetCustomerRecord); } if (mRT.is(validData)) { mRT.moveTrue(sendDataonly); mRT.perform($1400SendCustomerMap); } else { mRT.moveTrue(sendDataonlyAlarm); mRT.perform($1400SendCustomerMap); } }

Page 25: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONECONCLUSIONI

Case study: migrazione di un’applicazione COBOL di gestione clienti

25/25

Rich-IDM XMI Silverlight XAML<richidm:Diagram xmi:id="_diagram0" xmi:version="2.0"> <containsContextView name="CV0" xmi:id="_diagram1" xmi:type="richidm:ContextView"> <containsUserExperienceCores name="pnlMain" xmi:id="_diagram2" xmi:type="richidm:UserExperienceCore"> <containsRiaPageElements xmi:id="_diagram3" xmi:type="richidm:ContentRiaPageElement"><hasRiaHandle name="" refersToRiaPageElement="_diagram14" xmi:id="_diagram4" xmi:type="richidm:RiaHandle"/>

<StackPanel x:Name="LayoutRoot"><StackPanel.Background><RadialGradientBrush>

<GradientStop Color="#FF9ED1DE" Offset="0.647"/><GradientStop Color="#FF85ABA1" Offset="1"/></RadialGradientBrush></StackPanel.Background><sdk:Frame Width="600" BorderThickness="1" BorderBrush="#FF494949">

<sdk:Label Content="Contact Maintenance"FontFamily="Verdana" FontSize="12" FontWeight="Bold" Foreground="#FF00358B"/>

<sdk:Label Content="Contact number..."

FontFamily="Verdana" FontSize="12" FontWeight="Bold" Foreground="#FF00358B"/>

Page 26: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

INTRODUZIONE

STATO DELL’ARTE

OBIETTIVI

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Conclusioni• Si è sviluppato con successo:

– uno strumento per l’analisi e la traduzione di codice COBOL in Java, generando delle classi conformi ad una Service Component Architecture (componente server);

– uno strumento per l’analisi e la traduzione di modelli Rich-IDM in Silverlight (componente client).

• Ampie possibilità di estensione degli strumenti e possibilità di adattarli all’uso con altri linguaggi source e target o ad ambienti a linguaggio misto, cambiando opportunamente le grammatiche formali e le trasformazioni Model-to-Text.

• Utilizzo esclusivo di tecnologie Open Source.• Modalità di transcodifica per Migration Unit e

progettazione conforme al paradigma Model-Driven Architecture.

26/25

Page 27: Progetto MigrOS: progettazione e sviluppo degli strumenti di transcodifica delle componenti client e server dei sistemi legacy

GRAZIE DELLA CORTESE

ATTENZIONE