My Bachelor's thesis about the design of a tool for legacy application re-engineering.
1 of 20
More Related Content
Progettazione di uno strumento per la reingegnerizzazione di applicazioni legacy
1. PROGETTAZIONE DI UNO STRUMENTO PER LA
REINGEGNERIZZAZIONE DI APPLICAZIONI LEGACY
Tesi di laurea in Ingegneria del Software I
UNIVERSIT DEL SALENTO
FACOLT DI INGEGNERIA
CDL IN INGEGNERIA DELLINFORMAZIONE
ORIENTAMENTO INFORMATICA
Relatore: Chiar.mo Prof. Luca MAINETTI
Correlatore: Ing. Andrea PANDURINO
Laureando: Giacomo RUSSO
Matricola: 10041804
2. INTRODUZIONE
STATO DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Legacy Information Systems
Attualmente linfrastruttura 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
allevoluzione (Bisbal).
Il costo di mantenimento di un LIS 竪 alto: hardware
costoso, software costoso, scarsa interoperabilit con
altri sistemi software, la sua dismissione 竪 costosa.
Lapproccio 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
6. INTRODUZIONE
STATO DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Obiettivi
Sar sviluppata unapplicazione
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 unarchitettura di
tipo SOA.
COBOL ed IBM CICS rappresentano un
ambiente comune nei LIS di molte
organizzazioni (l80% del business
mondiale si affida al COBOL, Gartner
Group, 1997).
6/20
7. INTRODUZIONE
STATO
DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
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
8. INTRODUZIONE
STATO
DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Traduzione del codice COBOL CICS
Occorre ripercorrere lAST 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
9. INTRODUZIONE
STATO
DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
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 dellapplicazione 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
13. INTRODUZIONE
STATO DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Sottosistema di migrazione del
codice COBOL CICS
Parte di analisi: attraversa lAST 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
15. INTRODUZIONE
STATO DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Implementazione dei componenti
dellapplicazione
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
18. INTRODUZIONE
STATO DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Case study: migrazione di unapplicazione
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());
}
}
19. INTRODUZIONE
STATO DELLARTE
PROGETTAZIONE
REALIZZAZIONE
DELLAPPLICAZIONE
CONCLUSIONI
Conclusioni
Si 竪 sviluppato con successo uno
strumento per lanalisi 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 lestensione delle
funzionalit.
Utilizzo esclusivo di tecnologie Open
Source.
19/20