Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

20
INTRODUZI ONE STATO DELL’ARTE PROGETTAZI ONE REALIZZAZI ONE DELL’APPLI CAZIONE CONCLUSION I OGETTAZIONE DI UNO STRUMENTO PER L GEGNERIZZAZIONE DI APPLICAZIONI LE Tesi di laurea in Ingegneria del Software I UNIVERSITÀ DEL SALENTO FACOLTÀ DI INGEGNERIA CDL IN INGEGNERIA DELL’INFORMAZIONE ORIENTAMENTO INFORMATICA Relatore: Chiar.mo Prof. Luca MAINETTI Correlatore: Ing. Andrea PANDURINO Laureando: Giacomo RUSSO Matricola: 10041804

Transcript of Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

Page 1: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

PROGETTAZIONE DI UNO STRUMENTO PER LA REINGEGNERIZZAZIONE DI APPLICAZIONI LEGACY

Tesi di laurea in Ingegneria del Software I

UNIVERSITÀ DEL SALENTOFACOLTÀ DI INGEGNERIA

CDL IN INGEGNERIA DELL’INFORMAZIONEORIENTAMENTO INFORMATICA

Relatore: Chiar.mo Prof. Luca MAINETTICorrelatore: Ing. Andrea PANDURINO

Laureando: Giacomo RUSSOMatricola: 10041804

Page 2: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Legacy Information Systems• Attualmente l’infrastruttura di moltissime organizzazioni si

basa su Legacy Information Systems (LIS).• Definizione di LIS: “qualunque sistema informativo che si

opponga in maniera significativa alla modifica e all’evoluzione” (Bisbal).

• Il costo di mantenimento di un LIS è alto: hardware costoso, software costoso, scarsa interoperabilità con altri sistemi software, la sua dismissione è costosa.

• L’approccio consigliato per ridurre i costi di gestione del LIS è la migrazione, cioè spostare il sistema in un ambiente più flessibile e moderno, mantenendo le funzionalità ed i dati originali.

• Ambienti target ideali per questi sistemi sono le Service Oriented Architecture (SOA), dotate di elevata modularità e scalabilità.

2/20

Page 3: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Il processo di migrazione

3/20

Page 4: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Il processo di migrazione

4/20

Page 5: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Il processo di migrazione

5/20

Ambito del lavoro di tesi

Page 6: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Obiettivi

• Sarà sviluppata un’applicazione basata su tecnologia Open Source che assista lo sviluppatore nel processo di decomposizione e traduzione del codice COBOL CICS in classi Java adatte al deploy su un’architettura di tipo SOA.

• COBOL ed IBM CICS rappresentano un ambiente comune nei LIS di molte organizzazioni (l’80% del business mondiale si affida al COBOL, Gartner Group, 1997).

6/20

Page 7: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Decomposizione del codice COBOL CICS

• Per eseguire la decomposizione del codice legacy occorre individuare le procedure di basso livello al suo interno (paragrafi).

• A tal fine si useranno strumenti di parsing ed analisi semantica del codice.

• Prodotti individuati:– il generatore di parser JavaCC;– il generatore di Abstract Syntax Trees Java Tree Builder.

• Sono corredati da una grammatica descrivente la struttura di un programma COBOL.

7/20

Page 8: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Traduzione del codice COBOL CICS• Occorre ripercorrere l’AST ottenuto dal codice legacy;

per ogni costrutto incontrato si generano le istruzioni nel linguaggio di destinazione corrispondenti.

• Applicazione considerata: lo strumento NacaTrans del progetto Naca (New Architecture for Core Applications), che realizza una traduzione da COBOL CICS a Java.

• Il codice tradotto richiede un ambiente che simuli i costrutti forniti da COBOL CICS: il runtime NacaRT.

8/20

Page 9: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Deploy dei moduli ed applicazione di supporto

• Deploy delle Migration Unit tradotte: Service Component Architecture: – Alta modularità;– Alta scalabilità;– Indipendenza dal linguaggio dei componenti;– Facilità di gestione del dominio.

• Sviluppo dell’applicazione di supporto allo sviluppatore: plug-in per un ambiente di sviluppo (Eclipse).

• Si integrano le funzionalità di migrazione con gli strumenti già esistenti (creazione di domini SCA, creazione di web applications, ecc.).

9/20

Page 10: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Plug-in di migrazione• È stata svolta l’analisi dei requisiti e sono stati definiti i casi d’uso.• È stata progettata la User Interface.• Sono state stabilite delle specifiche per il funzionamento ad alto livello di

un generico sottosistema di decomposizione del codice.

10/20

Page 11: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Plug-in di migrazione• È stata svolta l’analisi dei requisiti e sono stati definiti i casi d’uso.• È stata progettata la User Interface.

11/20

• Sono state stabilite delle specifiche per il funzionamento ad alto livello di un generico sottosistema di decomposizione del codice.

Page 12: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Plug-in di migrazione• È stata svolta l’analisi dei requisiti e sono stati definiti i casi d’uso.• È stata progettata la User Interface.

12/20

• Sono state stabilite delle specifiche per il funzionamento ad alto livello di un generico sottosistema di decomposizione del codice.

Pattern Strategy

Page 13: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Sottosistema di migrazione del codice COBOL CICS• Parte di analisi: attraversa l’AST generato dal

parser tramite il design pattern Visitor, collezionando le informazioni necessarie.

• Parte di traduzione: utilizza una versione modificata di NacaTrans, che genera:– classi POJO (la rappresentazione in Java delle

MU COBOL CICS);– files XML descriventi la struttura del programma

legacy;– un file XML ed una classe Java per ogni

componente della view (mappe BMS), descriventi la grafica e la semantica.

13/20

Page 14: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Ambiente di deploy delle Migration Unit tradotte

• NacaRT offre supporto solo all’esecuzione di programmi completi.

• Si è adattato l’ambiente per l’esecuzione di frammenti di codice migrato.

14/20

Page 15: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Implementazione dei componenti dell’applicazione

• Tecnologie utilizzate (tutte Java-based e Open Source):– Suite di supporto allo sviluppatore (32 classi):

Eclipse SDK 3.5.1, Eclipse Zest 3.5, SWT 3.5.1, JFace 3.5.1 , SWTChart 0.6.0.

– Sottosistema di analisi del codice COBOL CICS (6 classi + 254 classi generate): JavaCC 5.0, Java Tree Builder 1.3.2, Eclipse SDK 3.5.1.

– Sottosistema di traduzione del codice COBOL CICS (oltre 750 classi già presenti + 41 aggiunte): Eclipse SDK 3.5.1, NacaTrans 1.2.0.2.

– Ambiente di deploy del codice migrato (oltre 750 classi già presenti di cui 10 modificate): NacaRT 1.2.0.2.

15/20

Page 16: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

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

16/22

Segue un filmato del case study

Page 17: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

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

17/20

• Applicazione COBOL CICS di partenza: 1400 linee di codice, 4 file COBOL, 3 copyfile, 4 mappe BMS.

• Applicazione tradotta in Java: 39 classi e 35 interfaces orientate ai componenti, 4 file RES (XML).

Page 18: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

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

18/20

COBOL CICS Java (basato su NacaRT) 1300-READ-CUSTOMER-RECORD. * EXEC CICS READ FILE('CUSTMAS') INTO(CUSTOMER-MASTER-RECORD) RIDFLD(CUSTNO1I) END-EXEC. MOVE EIBRESP TO RESPONSE-CODE. * IF RESPONSE-CODE NOT = 0 AND RESPONSE-CODE NOT = 13 PERFORM 9999-TERMINATE-PROGRAM END-IF. *

…public class MU1300_READ_CUSTOMER_RECORDImpl implements MU1300_READ_CUSTOMER_RECORD{ … protected void businessLogic$1300_Read_Customer_Record( boolean returnToCaller) { customer_Master_Record.set( dbFileComponent.read("CUSTMAS“,getInput("MNTMAP1").getEdit("custno1").getString(), DBFile.Mode.DIRECT));

migrationProgram.setConditionOccured( dbFileComponent.getErrorCode()); } …}

Page 19: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

INTRODUZIONE

STATO DELL’ARTE

PROGETTAZIONE

REALIZZAZIONE DELL’APPLICAZIONE

CONCLUSIONI

Conclusioni

• Si è sviluppato con successo uno strumento per l’analisi e la traduzione di codice COBOL CICS in Java, generando delle classi conformi ad una Service Component Architecture e traducendo anche gli elementi di presentazione.

• Indipendenza dal linguaggio legacy di origine e da quello di destinazione, supporto ai plug-in per l’estensione delle funzionalità.

• Utilizzo esclusivo di tecnologie Open Source.

19/20

Page 20: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy

GRAZIE DELLA CORTESE

ATTENZIONE