Skip to main content
Skip to footer

Sunita Danda

Rapid technological advancement has enabled businesses to rely on fast, scalable, and user-friendly payment systems. The steady increase in global internet usage has rendered legacy systems incapable of catering to the modern needs of an ever-growing user base. Maintaining systems that grow organically as the services offered by companies increase requires a huge development skill pool. For legacy systems, these skill pools are not easily available, and though legacy applications may work with out-of-warranty or obsolete software, they are still unstable due to compatibility issues with the current operating systems, browsers, and other commonly used information technology (IT) infrastructure. Hence, an intelligent automation platform can upgrade the underlying legacy code and equip applications to be cloud ready.

Digital solutions have been instrumental in catalyzing a phenomenal transformation in the payments industry. In the financial services sector, the shift has been seismic, as financial institutions that have traditionally enabled payments such as Fintechs, are now driving the payment ecosystem based on innovative technology, supportive regulation, and consumer demand. Technology has transformed the digital payment ecosystem by increasing peer-to-peer and person-to-merchant payments. It is, therefore, imperative that innovations in the payment space must be combined with security. Adequate initiatives will need to be taken to safeguard consumer data and interests. However, it is difficult to create a system with the same features as the legacy system thereby hampering the delivery of a consistent user experience. Data protection is a key component, and data must be migrated with the requisite safety precautions to avoid any data loss.

Enterprises have to decide between continuing with a legacy tech stack and handling it with support tasks related to legacy code or translating or rewriting the application to a modern version. In order to remain relevant in today’s market and meet the evolving business demands, enterprises need to convert their legacy applications to modern languages facilitating digital transformation. The critical priority of such initiatives is to modernize the application without affecting business functionality and performance. The following sections highlight some common challenges faced during transformation and their respective solutions.

Challenges in migrating to a new language

Some challenges faced while migrating to a new language are:

  • Languages such as C++ allow variables to be declared at multiple levels, such as at the block scope and method level. However, in the case of modern languages, such as Java, once a variable is declared at the method level, the same variable cannot be declared again in the block scope.
  • In some languages, when a string is created, it is often initialized as a blank string. When such blank strings are included in string comparisons, no issues are raised. However, in more sophisticated object-oriented languages, a null pointer exception occurs during similar comparisons of the newly created strings.
  • The method of defining macros differs in every coding language, and translation could lead to a ‘magic number’ issue even after pre-processing.
  • The precision of common data types varies even if the keyword is the same. Example: Precision of the double data type is different for C++ and Java.
  • If a primitive data type has a null value in the database, then the conversion method replaces the null value for the default value of the target data type affecting the integrity of the source customer data.

Recommended solutions

The challenges that have been identified during the transformation of legacy technology (mostly C++ to Java), can be addressed with the following solutions:

  • All occurrences of duplicate variables can be replaced with a new name, as suggested by the Refactor feature of Eclipse, which is a commonly used tool.
  • The newly created string variables need to be initialized separately to avoid null pointer exceptions during comparison.
  • Macros will have to be converted as ‘final’ constants based on a set of defined rules. Similarly, customized datatypes with initialization-related issues can be corrected using customized application programming interfaces (APIs).
  • Precision issues can be corrected by identifying target datatypes with equivalent precision, and the corresponding conversions can be executed to achieve maximum precision.
  • The variable list can be retrieved and checked for a null value using query and data management methods, and the corresponding methods can be used to set null values only for them.

The journey ahead

Enterprises that transform their applications from legacy tech stacks to modern technologies are likely to face the aforementioned challenges. However, by utilizing development approaches that shift the focus of development from coding to modeling, the transformation of legacy applications can lead to platform independence, enhanced productivity, and uniform quality. The adoption of a manual approach for such a large-scale endeavor will be time-consuming, effort-intensive, and expensive. Thus, the ideal approach to modernization will involve the assistance of an intelligent automation platform, which will help enterprises by upgrading the underlying legacy code and enabling cloud-readiness.

About the author

Sunita Danda
Sunita Danda is a product specialist, currently working on TCS MasterCraftTM TransformPlus, a suite of products and solutions which help businesses in automated modernization and rapid application development. She has over 26 years of work experience and is currently focused on legacy modernization and digital application development engagements using model-driven development (MDD) techniques, automated code generation, and low-code drivers. She has completed her Masters in Computer Science from Andhra University.
Contact Contact