Software Replacement Strategies

Legacy software systems are critical in the operations of most enterprises. These software systems are in the core of the existing IT architecture. Their interfaces are deeply connected into the rest of the IT landscape and provide indispensable data to the business services.

During decades these legacy systems have been incementally modernized or additional functionallity was added to the system. Usually these extensions added more complexity to the systems. Because of the incrementally development of these software systems additional programming languages and technology stacks have been added.

Legacy software replacement or modernization projects are often large-scale and multi-year projects. Because of the complexity of the grown systems there is an extraordinary risk to fail  replacement or modernization projects. On the other hand the provided business services from these systems are crucial for the business success and modern organizations do not have a choice to modernize these grown software systems.

There are several strategies to deal with indispensable legacy software systems:

 

MAINTAIN

Maintain the status quo and operate legacy system

WRAPPING

Wrapping components in a new environment (e.g.: virtualization)

MIGRATION

Transform system into a new environment or programming language

REIMPLEMENTATION

Rewrite components with the same design

REPLACEMENT

Replace with a newly developed or bought standard software system

Software modernization by ReqPOOL

Benefits of Automated Software Reverse Engineering

Cut Duration

Cut project duration by half with automation

Product quality

Increase product quality with better software insights

Requirements Analysis

Reduce 80% analysis effort for replacement projects

Examples

Examples for legacy software systems:

  • Core banking systems running on antiquated hardware
  • Mainframe based monolithic software
  • Individual programmed enterprise ressource planning (ERP) software
  • Software binded to antiquated operation systems

Possible source code to analyze:

  • Assembler programs and macros
  • PL/I programs & includes
  • COBOL programs & copies
  • Natural programs
  • ASP / CSP / Delta /Easytrieve Programs
  • ABAP Programs
  • C / C++ programs and header files
  • C# / Java classes

Software Reverse Engineering

The purpose of software reverse engineering is to map & measure software to support the maintenance and evolution process of existing software systems. This support can be rendered in many ways, five of which are explicitly addressed here:

  • better comprehend the structure of the systems, that is the connections between the system parts
  • generate graphical documents depicting the architecture of selected components as well as the architecture of the system as a whole
  • perform impact analysis on proposed changes and corrections
  • calculate the costs of individual maintenance tasks
  • trace the links between semantic levels of an application system, i.e. between the requirements, design, code and test cases
  • export structural information on a system to other repositories