What is Legacy Software?
Legacy software can be described informally as old software that is still used to perform a useful job for an organization. Legacy software systems are comprised of programs that are still used by a business or have some potential value but were developed years ago using early versions of programming languages.
A legacy software application is “an information system that may be based on outdated technologies, but is critical to day-to-day operations.” ~ Gartner
Although ‘legacy’ programming languages such as COBOL and Fortran are at the top of the list for what would be considered legacy, software written in newer programming languages can be just as monolithic, insecure, lacking in performance and hard to modify, and thus, be candidates for software modernization projects.
There are typically more aspects that define legacy software besides age. These include performance and efficiency, compliance with modern business requirements, compatibility and integrability, security and maintenance cost.
A system might considered to be legacy due to the lack of support or its inability to meet the needs of a business. Such software is usually difficult to maintain, support, improve, or integrate with new systems due to its architecture, underlying technology, or design.
Legacy software may be mission critical and tied to a particular version of an operating system or hardware model (vendor lock-in) that has reached the end-of-life stage.
A legacy software system may include functionality which is no longer relevant in the current context, and may hinder or prevent the use of modern software development methods or technologies.
Often these legacy software programs have been maintained and developed for many years by hundreds of programmers, and while many changes have been made to the software, the supporting documentation may not be current and the programming style was based on older methods which do not benefit from the advances in modern computer systems.
Generally speaking, the lifespan of hardware is shorter than that of software. As time goes on, the hardware gets harder to maintain but is kept because it is installed and (for now) working.
Modernizing legacy software systems is something that many enterprises do to boost their productivity, improve performance, increase efficiency, enable new software features and functionality to be added, and increase their network security.
A report from VMware and MIT Technology Review found that 62% of IT leaders cited the integration of legacy systems as their biggest challenge.
The benefits of software modernization do come with some challenges. Survey respondents cited a variety of speed bumps to transforming their legacy systems, including the hassles of integrating data, the difficulty of grasping new technology, and managing the impact of change to processes and staff roles. Over time, say survey respondents, these obstacles smooth out.
The decision to keep an old system may be influenced by economic reasons such as return on investment challenges or vendor lock-in, the challenges of change management, or a variety of other reasons other than functionality, including:
- Backward compatibility (the ability of newer systems to handle legacy file formats and character encodings).
- The legacy software system seems to work well enough.
- The cost of redesigning or replacing the legacy system may seem prohibitive because it is large, monolithic, or complex.
- Retraining on a new system could be viewed as costly, compared to the anticipated benefits of replacing it.
- The current legacy software requires near-constant availability, so it cannot be taken out of service, and the cost of designing a new system with a similar level of availability is high.
- The way that the system works is not well understood. Such a situation can occur when the designers of the software have left the organization, and the system has either not been fully documented or documentation has been lost.
Problems with legacy software
Some of the problems with legacy software and the reasons why legacy software systems should be replaced or refurbished …
Legacy software systems are considered to be potentially problematic by software engineers for several reasons:
- If legacy software runs on only old hardware, then the cost of maintaining the system may eventually outweigh the cost of replacing both the software and hardware.
- Legacy software systems can be hard to maintain, improve, and expand upon because there is a general lack of understanding of the system.
- Legacy systems may have vulnerabilities in older operating systems or applications due to lack of security patches being available or applied.
- Integration of legacy software with newer systems may be difficult because new software may use completely different technologies.
These factors contribute to the staggering cost of maintaining legacy software systems or continuing their development.
The 2004 crash of a critical legacy system at Comair is a classic risk management mistake that cost the airline $20 million and badly damaged its reputation.
Comair airline company fired its CEO in 2004 due to the failure of an antiquated legacy crew scheduling system that ran into a limitation not known to anyone in the company.
Budgetary constraints often lead companies to not address the need of replacement or migration of a legacy system.
However, companies often don’t consider the increasing costs of support and don't take into consideration the enormous loss of capability or business continuity if the legacy system were to fail.
Once these considerations are well understood, then based on the proven Return on Investment (ROI) of a new, more secure, updated technology stack, it becomes clear that software modernization is not as costly as the alternative.
To live up to the demands of the new digital transformation economy, organizations have to cease relying on outdated software and modernize their core technologies. Enterprises will benefit only when they stop seeing modernization as a one-time project and embrace it as a cycle.
“Change is now the norm. Just as we set a course based on our understanding of the technology landscape, that landscape changes. CIOs must accept that change is constant and work out how to get on the front foot – to shape change rather than being governed by it.” ~ Mark Rogers, Chief Executive Officer, Logicalis Group
- Increased security risk. Legacy systems often represent a huge security risk, because they may no longer be supported by the vendor or company that created them.
The problem with unsupported systems is that they do not receive updates and patches to address security vulnerabilities.
Since the legacy systems were created, many security vulnerabilities have been discovered in commonly used software libraries and in hardware, such as in the Meltdown hardware vulnerability which affects Intel x86 microprocessors, IBM POWER processors, and some ARM-based microprocessors. If the legacy software has not been properly patched or rewritten to address the vulnerabilities, then it represents a serious security risk.
As a result, you could end up compromising the security of your entire network simply because you're running a legacy system that is no longer supported.
- Inefficient and unstable. Legacy software systems are often inefficient in comparison to modern software, because they were designed and implemented based on the hardware and programming language limitations of the time in which the were created.
A software application that was state of the art, when it was created, could very well be extremely slow and inefficient by today's standards.
Legacy software systems can be unstable, because they do not benefit from vendor updates, which fix bugs and stability issues.
- Incompatible with new technologies. Many legacy software systems are standalone and were never designed to integrate with other pieces of software or systems. While that might have been okay when they were designed, now with importance of being able to communicate with a variety of other systems, standalone legacy software drastically reduces your organization’s flexibility and scalability, as well as limiting the integrations you can perform.
The high cost of maintaining legacy software systems
The federal government's 10 legacy systems most in need of modernization cost about $337 million a year to operate and maintain, according to the Government Accountability Office. ~ NextGov
Legacy software maintenance and support
The costs of maintaining legacy systems include the following:
Updates and changes. Legacy systems are typically quite large in terms of the amount of code as well as functionality. Because of their monolithic nature, it's not feasible to just change or replace system modules. A small update might result in numerous conflicts across the system. So any change or update to the legacy system requires time and effort, neither of which is cheap. Additionally, legacy systems usually have a large number of undocumented features. So, there is always a certain risk involved when changing the source code.
Infrastructure. Just like legacy software, the underlying infrastructure becomes harder and more expensive to maintain as it ages. Legacy systems often require a specific hardware and environment. So infrastructure maintenance cost is high, compared to modern cloud-based solutions.
Legacy data represents another significant infrastructure issue. Being scattered across a variety of databases, in different formats, it's harder to optimize data access and usage. Manually gathering and converting legacy data to enable it to work with modern systems is a time and cost intensive task.
Staff training. Depending on obsolete technologies, legacy system support and maintenance requires a specific set of skills and expertise.
Due to the fact that most legacy programmers are entering retirement age and the number of young engineers replacing them is small, there is an alarming shortage of available workforce. This results in difficulty maintaining legacy systems, as well as an increase in costs of finding programmers experienced with the legacy software.
The staff who were experts on it have retired or forgotten what they knew about it, and staff who entered the field after it became “legacy” never learned about it in the first place.
Legacy software systems are often seen as holding back the business initiatives that rely on them. When a tipping point is reached, like the skills crunch example, it’s time to look to application modernization to help remove the obstacles.
Integration. Modern software platforms often rely on third-party APIs (Application Programming Interface) to provide additional capabilities, such as payment processing, geolocation, and user authentication.
For example, many ecommerce systems and online shopping carts rely on third-party payment processors for their core functionality. Why reinvent the wheel, when you can use the existing, tried and true solution at a fraction of the cost?
Modern technologies are integration-ready by default. API vendors typically provide support for most of the programming languages and frameworks out of the box. Yet, obsolete or rare technologies typically lack compatibility.
Connecting legacy software to a third-party tool or service often requires a significant amount of custom software development.
Customer privacy and compliance. Another high cost of legacy systems is compliance. This is especially true for heavily-regulated sectors, such as healthcare, finance or law, but affects every business that operates online or works with personal customer information.
For example, payment card industry (PCI) compliance is mandated by credit card companies to help ensure the security of credit card transactions in the payments industry. PCI Security Standards Council.
Another example of compliance challenges is the Health Insurance Portability and Accountability Act (HIPPA) Which was enacted by the 104th United States Congress and signed by President Bill Clinton in 1996.
GDPR (General Data Protection Regulation) became effective more than two years ago, but organizations are still struggling to comply with it. And in the US, California has similar state legislation which came into effect on January 1, 2020 – The California Consumer Privacy Act (CCPA), which only adds to the frustration.
While researching CCPA compliance, the Capgemini Research Institute found that legacy IT is one of the major (42%) challenges organizations face while preparing for the CCPA.
Approaches to legacy system modernization
Whether your organization replaces the entire enterprise application system, replaces one application/component at a time, applies localized fixes in one application or modernizes underlying infrastructure, any approach is typically better than none at all. ~ Cognizant
Cognizant presents a classification of approaches primarily based on the level of new technology applied to a legacy system to modernize it.
Total Transformation. The entire system is rebuilt using new technology, and the old system is sunsetted. The new system is built from scratch using modern standard platforms or built using a third-party package as a foundation layer.
Gradual Replacement. A component/functional block of a legacy system is replaced with a new technology and moved to production as a separate application while the rest of the system continues to use old technology. With time, remaining components/functional blocks are replaced with separate applications and gradually the entire system is rebuilt.
Duct Tape Approach. Localized, small-scale changes are performed using new technology to address specific issues in the application, while the application core architecture and technology remain the same. A popular approach is to build a new application that will be bolted to the main application to bridge the gap in functionality.
Improve Existing. The existing legacy system is modernized to offer better results through improved design. Typically, the core technology stack remains the same or a few minor additions may be introduced.
No System Change. Clients are taking a wait-and-watch approach and not going for any modernization drive or systems change.
Software Modernization Approaches
Each of the five types of legacy transformation approaches has its own merits and applicability. Which approach works best for any company depends on its organizational requirements, risk appetite, state of its existing IT infrastructure and competitive landscape – there is no single silver bullet. ~Souvik Roychoudhury, Cognizant
Some Software modernization techniques enable organizations to leverage their existing code assets, provide new user and application interfaces to existing software, improve workflow, contain costs, minimize risk, and enjoy classic qualities of service (near 100% uptime, security and scalability).
Gartner identifies 7 Options to Modernize Legacy Systems
- Encapsulation. To leverage and extend an application’s features and value, encapsulating data and functions in the application and making them available as services via an application programming interface (API). Implementation specifics and knowledge are hidden behind the interface.
- Rehost. Redeploy an application component to another physical, virtual or cloud infrastructure without recompiling, altering the application code, or modifying features and functions.
- Replatform. Migrate an application component to a new runtime platform. Make minimal changes to code to adapt to the new platform, but don’t change the code structure or the features and functions it provides.
- Refactor. Restructure and optimize existing code without changing its external behavior to remove technical debt and to improve the component’s features and structure.
- Rearchitect. Materially alter the application code so you can shift it to a new application architecture and fully exploit new and better capabilities of the application platform.
- Rebuild. Rebuild or rewrite the application component from scratch while preserving its scope and specifications.
- Replace. Eliminate the former application component altogether and replace it, taking new requirements and needs into account.
After conducting a thorough assessment, the best choice for the organization facing a legacy software modernization problem is between rearchitect and rebuild or replace. Rearchitecting has a moderate cost and risk, but will yield moderate results. Rebuilding or replacing provides the best results, but with higher costs and higher risk.
The impact of Software Modernization Regardless of the chosen approach and technique, software modernization is a complex process. Yet, the results are well worth the effort.
Improvements to legacy software systems
“legacy modernization” | “legacy transformation”: refurbishing existing business logic with new user interfaces, sometimes providing service-enabled access through web services.
When it's not possible or practical to completely replace legacy software systems through the application retirement, it's still possible to enhance (or “re-face”) them. In this case, most development goes into adding new interfaces to a legacy system. One such example is to provide a Web-based interface to a terminal-based mainframe application. This is often seen as an “upgrade”, because the interface style is familiar and easy to use.
Benefits of Software Modernization
- Data Privacy
- Increasing Efficiency
- Improved Security
- Increase Agility
- Reducing Costs
- Rapid Deployment or Updating
- Innovation / Application Development
- Ease of Scalability
When done right, software modernization results in the following:
- Giving your business a competitive advantage. Enabling you to outperform the competition, some of which are still relying on inefficient legacy systems.
- Happier Customers and Employees.User experience standards have evolved significantly. By having a modern user interface that works smoothly and a system that responds quickly, you improve your customer's experience and employee performance.
- Future Ready Business. By enhancing your system with modern functionality, you ensure that your business is able to evolve and grow.
- Unlocking Opportunities. Outdated systems prevent you from effectively working with many modern systems, which would enable you to benefit from increased functionality and reduced costs.
- Better Performance and Reliability. Legacy systems are one of the most common reasons for failures and outages.
Legacy software modernization can be an open-ended journey to streamline process efficiency, improve business performance, and create new ways of serving customers.
Custom software helps you to bridge the gap, by enabling you to choose the software modernization approach that works best for your organization.
Nexus Software Systems handles every aspect of legacy system modernization: from analyzing the current situation, developing a solid business strategy, prioritizing the features to rebuilding your product from scratch, using proven technologies and architecture solutions.
Because Nexus Software Systems is not a reseller, recommendations are 100% focused on your requirements and creating the most efficient system possible that automates operations, streamlines and enhances development, and supports your specific business goals.
If you would like to take advantage of new technologies and all of the benefits they provide, contact us to help you determine the most beneficial approach to your legacy system modernization.