software alightGo4IT Alight -A powerful tool for the analysis of legacy code and its transformation into a modern environment

It is the most advanced toolset for evaluation, documentation, transformation and optimization of legacy systems.

Go4IT Alight is based on compiler technologies and language models, which allow the implementation of fully automated modernization projects, with much greater guarantee of success, a tighter economic investment and independence of the programing languages.

Our competitive advantage: the Intermediate Model - Pivot Language

Go4IT Alight is capable of interpreting and transforming different programing languages using a specific grammar system for each of them. in order to correctly handle all these different languages, Go4IT Alight includes an internal intermediate model or pivot language. This pivot language is used to obtain a representation of the programs that is independent from the technology. All the code analysis and translation processes included in Go4IT Alight use this intermediate model as input:

  • Discovery: understanding of the internal code architecture.
  • Analysis: extraction of documentation from the code, detection of dead code, and other relevant facts.
  • Optimization: optimization and refactoring of the code based on the target architecture, as well as characteristics of the legacy environment.
  • Generation: transformation to a new target language.

The Pivot Language is a complete language, generated by the compilation process in Go4IT Alight, which includes every feature of the programing languages (for example, variables, functions, data model, user interface...). With this intermediate model, adding a new language to the tool can be done in a short time (from 1 to 3 months). In addition, once a new language is connected to Go4IT Alight, all the existing analysis, optimization and translation tools can be used directly on the new language.

software alight

Go4IT Alight modernization phases

During the discovery Go4IT Alight extracts all the knowledge from the source code of the analyzed legacy programs. This process is similar to the one done by compilers, yet reaching a higher level of knowledge. In the first place, Alight discovers the structure of the analyzed source code, identifying variables, functions and classes. Then the behaviour of each function is analyzed. Finally, the discovery process extracts information about the data model used by the programs (i.e. databases and tables and accessed data files), as well as about the user interface of the windows of the program (dialogs, controls, buttons, etc.). As a result, a technology agnostic representation of the code is obtained according to the intermediate model in Alight.

An important feature of Alight is its flexibility. We are capable of customizing the discovery process, adding elements that are part of the analyzed application (for example, custom UI elements, special libraries, etc.). This way it is possible for us to develop customized modernization solutions that maintain the internal architecture of the applications, thtus reducing the learning curve for future maintenance teams.

Alight analysis algorithms are capable of obtaining valuable information from the source code. This information in often crucial to fulfil a successful modernization, as they identify problems in the program structure, performance, etc. of the legacy applications, and thus, corrections can be applied before transforming the application to a newer technology. Currently, Alight has many analysis tools available to all programing languages:

  • dead code and unused variables detector
  • cyclomatic complexity report generator
  • business logic detector for user interface functions
  • program dependecies analysis
  • flow diagrams generator
  • data model analyzer

In addition, it is possible to implement custom static analysis algorithms to detect problems that are specific to each legacy system.

The last two phases of an Alight modernization are devoted to obtaining a functional replica of the original application in a newer technology. The first of these two aims at preparing the source code for the new platform: the optimization phase.

During optimization Alight performs a set of formal modifications to the intermediate model representation of the code, enabling a correct generation in the targeted infrastructure. For example, before generating Java code the tool must ensure that there are no GOTO statements in the original source code. This process is also used to optimize the generation result in a concrete technology. For example, transforming a Visual Basic application to HTML5 + CSS implies modifications to be done to the user interface to make the target application responsive.

Optimization is tightly coupled to generation, and also to the characteristics of the selected target platform.

Alight uses powerful generation engines that allow us to link pivot language models with modern programing languages, such as Java, Shell script, HTML, Javascript or Python among others. Furthermore, Alight can regenerate the code in the original language, which is a useful feature to implement automated code correctors (for example, automated elimination of GOTO statements in COBOL).

Alight is a very flexible tool, therefore, it is possible for us to customize the generation engines to take into account target platform specific setting and achieve end-to-end 100% automated code modernization solutions.