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
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
INTRODUZIONE
STATO DELL’ARTE
PROGETTAZIONE
REALIZZAZIONE DELL’APPLICAZIONE
CONCLUSIONI
Il processo di migrazione
3/20
INTRODUZIONE
STATO DELL’ARTE
PROGETTAZIONE
REALIZZAZIONE DELL’APPLICAZIONE
CONCLUSIONI
Il processo di migrazione
4/20
INTRODUZIONE
STATO DELL’ARTE
PROGETTAZIONE
REALIZZAZIONE DELL’APPLICAZIONE
CONCLUSIONI
Il processo di migrazione
5/20
Ambito del lavoro di tesi
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
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
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
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
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
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.
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
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
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
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
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
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).
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()); } …}
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
GRAZIE DELLA CORTESE
ATTENZIONE