Architecture
driven application modernization involves meta modeling and transformations of
models that can help to optimize system evaluations costs by automating the
modernization process of systems. This is done in three phases: reverse
engineering, restructuring and forward engineering. Reverse engineering
technologies can analyze legacy software systems, identify its widgets and
their interconnection, reproduce it based on the extracted information, and
create a representation at a higher level of abstraction. Some requirements for
modernization tools can be called out here. It must allow extracting domain
classes according to Concrete Syntax Tree meta-model and semantic graphical
information, then analyze extracted information to change them into a higher
level of abstraction as a knowledge-discovery model.
Software
modernization approach becomes a necessity for creating new business value from
legacy applications. Modernization tools are required to extract a model from
text in source code that conforms to a grammar by manipulating the concrete
syntax-tree of the source code. For example, there is a tool that can convert
Java swing applications to Android platform which uses two Object Management
Group standards: Abstract Syntax Tree for representing data extracted from java
swing code in reverse engineering phase and Knowledge Discovery
Platform-independent model. Some tools can go further to propose a Rich
Internet Application Graphical User Interface. The three phases articulated by
this tool can be separated into stages as: the reverse engineering phase which
uses the jdt API for parsing the Java swing code to fill in an AST and Graphical
User Interface model and the restructuring phase that represents a model
transformation for generating an abstract KDM model and the forward phase which
includes the elaboration of the target model and a Graphical User Interface.
The
overall process can be described as the following transitions:
Legacy
system
–parsing->
AST
Meta model
–restructuring
algorithm->
Abstract
Knowledge Model
--forward
engineering->
GUI
Metamodel.
The
reverse engineering phase is dedicated to the extraction and representation of
information. It defines the first phase of reengineering following the
Architecture Driven Modernization process. It is about the parsing technique
and representing information in the form of a model. Parsing can focus on the
structural aspect of header and source files and then there is the presentation
layer that determines the layout of the functionalities such as widgets.
The
restructuring phase aims at deriving an enriched conceptual technology
independent specification of the legacy system in a knowledge model KDM from
the information stored inside the models generated on the previous phase. KDM
is an OMG standard and can involve up to four layers: Infrastructure layer,
Program Elements layer, resource layer and abstractions layer. Each layer is dedicated
to a particular application viewpoint.
The
forward engineering is a process of moving from high-level abstractions by
means of transformational techniques to automatically obtain representation on
a new platform such as microservices or as constructs in a programming language
such as interfaces and classes. Even the user interface can go through forward
engineering into a Rich Internet application model with a new representation
describing the organization and positioning of widgets.
Automation
is key to developing a tool that enables these transitions via reverse
engineering, restructuring and forward engineering.