progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
TRANSCRIPT
![Page 1: Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022062420/55d7456bbb61eb8e7d8b45d5/html5/thumbnails/20.jpg)
GRAZIE DELLA CORTESE
ATTENZIONE