1
Introduction Introduction Problem Statement Problem Statement Research Goals Research Goals Conclusion Conclusion Contact / More Information Contact / More Information { shimin, ltahvild }@swen.uwaterloo.ca Componentizing legacy system is essential for the Componentizing legacy system is essential for the maintenance and the reuse. However, the major problem maintenance and the reuse. However, the major problem against the widespread introduction of componentization is against the widespread introduction of componentization is the lack of cost-effectively identifying and extracting the lack of cost-effectively identifying and extracting reusable components from legacy systems. reusable components from legacy systems. Research Focus Research Focus Java Legacy System Componentization Java Legacy System Componentization Figure 1 – Overview of Java Legacy System Componentization Target System Class Class Class Class Java Legacy System Class Class Class Class Class Class Class Class Class Class Class Class Class Class Class Class or Interface Reusable Component Dependency Java Legacy system (S) = { C, I, R Java Legacy system (S) = { C, I, R CI CI , F, F , F, F AI AI } } C – the set of all classes of the legacy system. I – the set of all interfaces of the legacy system. R CI the static structure relationship set among classes and interfaces. It is modeled as a Class and Interface Dependency Graph (CIDG). F – the set of functional features provided by the system. F AI the set of abstract implementation of features. It is modeled as a Feature Abstract Implementation Model (FAIM). Proposed a framework for extracting reusable components from Proposed a framework for extracting reusable components from a Java legacy system and migrating from the legacy system to a a Java legacy system and migrating from the legacy system to a component-based system in a cost-effectively manner by component-based system in a cost-effectively manner by analyzing the static system structure and identifying and analyzing the static system structure and identifying and encapsulating the functional features. encapsulating the functional features. Developed an integrated componentization environment to Developed an integrated componentization environment to perform information retrieving, system modeling, component perform information retrieving, system modeling, component extracting, and system migrating. extracting, and system migrating. Integrated Componentization Integrated Componentization Environment Environment Legacy Systems (.java files) Parser System Models (XML Doc) Modeler Decomposer Decomposition Rule (XML Doc) Raw Data (XML Doc) Meta-models (XML Schema) CIDG meta-model FAIM meta-model CIDG, FAIM Decomposition Algorithm Reusable Components Component-Based System An Eclipse Rich Client Platform (RCP) application An Eclipse Rich Client Platform (RCP) application Provide Provide three perspectives: three perspectives: Parser Modeler Decomposer Easily extensible to other perspectives such as: Easily extensible to other perspectives such as: Evaluation Integration Java Legacy System Model Java Legacy System Model Componentization Algorithm Componentization Algorithm Class and Interface Dependency Graph (CIDG) Class and Interface Dependency Graph (CIDG) Feature Abstract Implementation Model (FAIM) Feature Abstract Implementation Model (FAIM) Class Class or Interface DI (Dependency Indicator) = (IH, RZ, AS, AG, CO, US) If Inheritance relationship presents, IH = 1; otherwise IH = 0 If Realization relationship presents, RZ = 1; otherwise RZ = 0 If Association relationship presents, AS = 1; otherwise AS = 0 If Aggregation relationship presents, AG = 1; otherwise AG = 0 If Composition relationship presents, CO = 1; otherwise CO = 0 If Usage relationship presents, US = 1; otherwise US = 0 Class Class Class Class Class Class Class Class Class DI DI DI DI DI DI DI DI DI DI DI DI Class Class M 1 N<feature name> D<description> H Class Class M 2 N<feature name> D<description> H Class Class M n N<feature name> D<description> H FAIM = { M 1 , M 2 , … , M n } M i = { N, D, H }, 1 i n N – name of the feature D – description of the feature H – host class/interface set of the feature Input Input A A Java legacy system The The Class and Interface Dependency Graph (CIDG) The Feature Abstract Implementation Model (FAIM) Output Output Target system (Component-based system) It is a set of classes, interfaces, and reusable components. Each component in the set does not have any dependency upon the artifacts which are outside of the component. Hence the component can be reused individually. A list of reusable components Each component provides a well-defined interface as the entry into the component from outside. Each component can be packaged into a Java Archive (JAR) file. Abstract Abstract Design and develop a methodology for migrating from a Design and develop a methodology for migrating from a Java legacy system into a component-based system and Java legacy system into a component-based system and extracting all reusable components from the system by extracting all reusable components from the system by retrieving static structure of the legacy system retrieving static structure of the legacy system extracting functional features that are scattered across extracting functional features that are scattered across multiple methods and multiple methods and classes classes encapsulating the extracted features to change into encapsulating the extracted features to change into reusable components reusable components Minimize the componentization cost by Minimize the componentization cost by retrieving automatically the system static structure identifying and encapsulating the feature as automatically as possible performing the reengineering process with a low level of source code modification which may be done automatically Design a modeling paradigm to identify static structures of a Design a modeling paradigm to identify static structures of a legacy system. legacy system. Design a modeling paradigm to identify the features of a Design a modeling paradigm to identify the features of a legacy systems based on some user requirements. legacy systems based on some user requirements. Develop a componentization algorithm to migrate from a Develop a componentization algorithm to migrate from a legacy system to a component-based system and extract all legacy system to a component-based system and extract all reusable components using the above modeling paradigms. reusable components using the above modeling paradigms. Design and develop an integrated componentization Design and develop an integrated componentization environment to perform information retrieval, system environment to perform information retrieval, system modeling, component extracting, and system migrating. modeling, component extracting, and system migrating. Evolving over a number of years, object-oriented legacy systems embody substantial corporate knowledge, including requirements, design decisions, and business rules. In order to reuse these assets in a cost-effective manner, it is important to develop a systematic strategy for reengineering the object-oriented legacy system. This research proposes a framework for extracting reusable components from a Java legacy system and migrating them to a component-based system by encapsulating reusable features. Such features may be used as reusable components in a cost-effective way. An integrated experimental environment for performing the extraction and migration processes has been designed and developed as an Eclipse RCP application. Figure 2 – Overview of Integrated Componentization Environment Figure 3 – A Screenshot of the Integrated Componentization Environment Decomposing Java Legacy Systems into Components Decomposing Java Legacy Systems into Components Shimin Li and Ladan Tahvildari Shimin Li and Ladan Tahvildari

Introduction Problem Statement Research Goals Conclusion Contact / More Information { shimin, ltahvild }@swen.uwaterloo.ca Componentizing legacy system

Embed Size (px)

Citation preview

Page 1: Introduction Problem Statement Research Goals Conclusion Contact / More Information { shimin, ltahvild }@swen.uwaterloo.ca Componentizing legacy system

IntroductionIntroduction

Problem StatementProblem Statement

Research Goals Research Goals

ConclusionConclusion

Contact / More InformationContact / More Information

{ shimin, ltahvild }@swen.uwaterloo.ca

Componentizing legacy system is essential for the Componentizing legacy system is essential for the maintenance and the reuse. However, the major problem maintenance and the reuse. However, the major problem against the widespread introduction of componentization is against the widespread introduction of componentization is the lack of cost-effectively identifying and extracting the lack of cost-effectively identifying and extracting reusable components from legacy systems.reusable components from legacy systems.

Research FocusResearch Focus

Java Legacy System ComponentizationJava Legacy System Componentization

Figure 1 – Overview of Java Legacy System Componentization

Target System

Class

Class

Class

Class…

Java Legacy System

Class

Class

ClassClass

Class Class

ClassClassClass

Class

Class

Class

Class

Class

Class Class or Interface

Reusable Component

Dependency

Java Legacy system (S) = { C, I, RJava Legacy system (S) = { C, I, RCICI , F, F , F, FAI AI } }

C – the set of all classes of the legacy system.

I – the set of all interfaces of the legacy system.

RCI – the static structure relationship set among classes and interfaces. It is modeled as a Class and Interface Dependency Graph (CIDG).

F – the set of functional features provided by the system.

FAI – the set of abstract implementation of features. It is modeled as a Feature Abstract Implementation Model (FAIM).

Proposed a framework for extracting reusable components from Proposed a framework for extracting reusable components from a Java legacy system and migrating from the legacy system to a a Java legacy system and migrating from the legacy system to a component-based system in a cost-effectively manner by component-based system in a cost-effectively manner by analyzing the static system structure and identifying and analyzing the static system structure and identifying and encapsulating the functional features.encapsulating the functional features.

Developed an integrated componentization environment to Developed an integrated componentization environment to perform information retrieving, system modeling, component perform information retrieving, system modeling, component extracting, and system migrating.extracting, and system migrating.

Integrated Componentization EnvironmentIntegrated Componentization Environment

Legacy Systems

(.java files)

Parser

System Models

(XML Doc)

Modeler

Decomposer

Decomposition Rule(XML Doc)

Raw Data(XML Doc)

Meta-models(XML Schema)

CIDG meta-modelFAIM meta-model

CIDG, FAIM

DecompositionAlgorithmReusable

Components

Component-Based System

An Eclipse Rich Client Platform (RCP) applicationAn Eclipse Rich Client Platform (RCP) application

Provide Provide three perspectives:three perspectives: Parser Modeler Decomposer

Easily extensible to other perspectives such as:Easily extensible to other perspectives such as: Evaluation Integration

Java Legacy System ModelJava Legacy System Model

Componentization AlgorithmComponentization Algorithm

Class and Interface Dependency Graph (CIDG)Class and Interface Dependency Graph (CIDG)

Feature Abstract Implementation Model (FAIM)Feature Abstract Implementation Model (FAIM)

Class Class or Interface

DI (Dependency Indicator) = (IH, RZ, AS, AG, CO, US)If Inheritance relationship presents, IH = 1; otherwise IH = 0If Realization relationship presents, RZ = 1; otherwise RZ = 0If Association relationship presents, AS = 1; otherwise AS = 0If Aggregation relationship presents, AG = 1; otherwise AG = 0If Composition relationship presents, CO = 1; otherwise CO = 0If Usage relationship presents, US = 1; otherwise US = 0

Class

ClassClass Class Class

Class

Class

ClassClass

…DI

DIDI

DI

DI

DI

DI DI

DI

DI

DIDI

Class Class…

M1

N<feature name>

D<description>

H

Class Class…

M2

N<feature name>

D<description>

H

Class Class…

Mn

N<feature name>

D<description>

H

FAIM = { M1, M2, … , Mn }

Mi = { N, D, H }, 1 ≤ i ≤ nN – name of the featureD – description of the featureH – host class/interface set of the

feature

InputInput A A Java legacy system The The Class and Interface Dependency Graph (CIDG) The Feature Abstract Implementation Model (FAIM)

OutputOutput Target system (Component-based system)

It is a set of classes, interfaces, and reusable components. Each component in the set does not have any dependency upon the artifacts which are outside of the component. Hence the component can be reused individually.

A list of reusable components Each component provides a well-defined interface as the entry into the component from outside. Each component can be packaged into a Java Archive (JAR) file.

AbstractAbstract

Design and develop a methodology for migrating from a Design and develop a methodology for migrating from a Java legacy system into a component-based system and Java legacy system into a component-based system and extracting all reusable components from the system byextracting all reusable components from the system by retrieving static structure of the legacy systemretrieving static structure of the legacy system extracting functional features that are scattered across multiple methods andextracting functional features that are scattered across multiple methods and classesclasses encapsulating the extracted features to change into reusable componentsencapsulating the extracted features to change into reusable components

Minimize the componentization cost byMinimize the componentization cost by retrieving automatically the system static structure identifying and encapsulating the feature as automatically as possible performing the reengineering process with a low level of source code modification which may be done automatically

Design a modeling paradigm to identify static structures of a Design a modeling paradigm to identify static structures of a legacy system.legacy system.

Design a modeling paradigm to identify the features of a Design a modeling paradigm to identify the features of a legacy systems based on some user requirements.legacy systems based on some user requirements.

Develop a componentization algorithm to migrate from a Develop a componentization algorithm to migrate from a legacy system to a component-based system and extract all legacy system to a component-based system and extract all reusable components using the above modeling paradigms.reusable components using the above modeling paradigms.

Design and develop an integrated componentization Design and develop an integrated componentization environment to perform information retrieval, system environment to perform information retrieval, system modeling, component extracting, and system migrating.modeling, component extracting, and system migrating.

Evolving over a number of years, object-oriented legacy systems embody substantial corporate knowledge, including requirements, design decisions, and business rules. In order to reuse these assets in a cost-effective manner, it is important to develop a systematic strategy for reengineering the object-oriented legacy system. This research proposes a framework for extracting reusable components from a Java legacy system and migrating them to a component-based system by encapsulating reusable features. Such features may be used as reusable components in a cost-effective way. An integrated experimental environment for performing the extraction and migration processes has been designed and developed as an Eclipse RCP application.

Figure 2 – Overview of Integrated Componentization Environment

Figure 3 – A Screenshot of the Integrated Componentization Environment

Decomposing Java Legacy Systems into ComponentsDecomposing Java Legacy Systems into Components

Shimin Li and Ladan TahvildariShimin Li and Ladan Tahvildari