This document discusses the importance of software modernization for companies still relying on legacy systems. It defines legacy software as older systems that are difficult to modify and maintain. While costly, software modernization is necessary to keep up with changing technology, ensure system stability, and reduce maintenance costs. The document recommends companies first assess their legacy systems to understand the risks of maintaining the status quo versus upgrading. Based on this assessment, companies can then develop a plan and deadline to modernize their systems incrementally in a controlled manner.
1. Software Modernization – modernize or move out of the way!
During my career, I’ve had to work on the challenge of modernizing several software
products. As explained in my article, “Balancing Technical Debt,” we should develop a plan
for moving forward, taking into account the actual TCO (Total Cost of Ownership) and the
technical progress of competitors. The effort to raise the bar must be continuously evaluated
in order to be ready to make any “do or die” decision. In our rapidly evolving digital world, all
software companies must face this situation!
Software modernization, otherwise known as legacy modernization, refers to the work of
converting, rewriting or porting a legacy program to bring it up to the latest standards in
computing and software. This includes such things as modern programming language,
software libraries, protocols, cloud technologies (Serverless architecture, Microservices, etc.),
hardware platforms, etc.
Perhaps this is a good place to define legacy software, to help us better understand what is
at stake when we talk about software modernization.
Legacy software is any business application based on older technology that is still used to
support the core functions of a business or organization. They are monolithic, having no
reusable modules or code, and are difficult to understand or modify.
Legacy software is often heavily patched, wrapped and built on top of, meaning that any
attempt to modernize them could have catastrophic effects (it means a high TCO).
Furthermore, such ancient “hieroglyphics” often require ancient hardware which is no longer
manufactured new. Maintenance of such systems often requires hours of searching by IT for
obsolete hardware in online auctions and forums, which, frankly, can hardly be considered
professional, especially for large corporations.
2. Software modernization is not a project to enter into lightly or carelessly, nor is it something
that can be ignored. Far too much is at stake in this very volatile and rapidly evolving digital
world to ignore this critical area.
While it’s easy (and completely erroneous) to think that the vast majority of today’s systems
are built solely on Java and web based systems, the reality is that most large organizations
are still running their critical applications in legacy environments.
While progress is slowly being made out, often when necessity finally trumps executive
stubbornness, trillions have been spent on COBOL applications in the early 21st century,
alone, and tens of billions of COBOL transactions continue to occur, every single day.
According to a February, 2017 article by Alexander Ziegel on the IBM training and using blog,
80 percent of the world’s daily business transactions rely on COBOL.
While COBOL, originally designed in 1959, is no longer popular for the creation of new
software, due at least in part to the declining number of experienced programmers, it is still
the backbone of many business applications. Much of the programming work being done
with COBOL in 2017 is focused on modernization and migration to new systems.
Furthermore, with some recent estimates suggesting that from 60% to 80% of an average
company’s IT budget is being spent just on maintaining existing mainframe systems and
application, it is becoming too expensive and time consuming not to consider software
modernization.
At the same time, the fact must be considered that while a business develops over the years,
it builds in a large and even somewhat priceless accumulation of experience and strategy in
its existing legacy software that can’t simply be discarded for the sake of modernizing.
Oftentimes, these are the very things that give a company its competitive advantage in its
niche.
There are a number of factors that have hindered or slowed the progress of software
modernization from what some have accurately labeled as “ticking time bomb” of heavily
patched programs. The cost of upgrading these often proprietary behemoths to run in the
cloud and SaaS systems is very daunting, yet the cost of not upgrading can no longer be
ignored. Many of these systems have been running on IT life support for too long already,
and are at imminent risk of dying at any given time.
Therefore the steps taken in the modernization process often need to be incremental, dealing
with the most pressing risks first. Some of the risks that simply must be considered that exist
in virtually all legacy systems are:
The hardware (infrastructure) is obsolete and parts are becoming more and more
difficult to find
It is getting more and more difficult to find engineers who even know the language
The technology is no longer supported by its vendors
3. The cost of maintenance is increasing beyond acceptable levels in an increasingly
competitive marketplace
Perhaps the number one reason, today, in the 21st century, that many companies have not
dealt with the issue of software modernization, or have simply “kicked the can” even further
down the road, is because they have failed to properly assess their situation. The fact is that
any company with plans to continue beyond this year need to assess the risks and rewards
involved in keeping the status quo versus modernizing.
In many cases, simply assessing and appraising the existing system with all its flaws and
potential for catastrophic failure should be enough incentive for software modernization,
regardless of what it will cost, as the cost of not doing it is unthinkable.
Therefore, the first step any company running on a legacy system but planning to continue
beyond 2017 must take is a full assessment of their systems. This must include both the
legacy applications and infrastructure, as they are co-dependent. The cost of doing nothing
must be carefully weighed against the cost of doing something. Future expectations for the
longevity of the organization obviously are a very important factor in such an assessment. If
the company is expected to exist far into the future, it is more important than ever to ensure
the system will take it there.
Therefore, any realistic assessment must include:
a proper, sober evaluation of applications based on existing and future requirements
identification of existing, ongoing and future operating, maintenance and and
replacement costs
the risks involved with any kind of failure
the potential benefits of using managed, share or cloud services
Of course, for any kind of business strategy, the cost of implementing a plan, such as
software modernization, must be weighed against the value of the business. Will the plan
increase profitability, while reducing overall costs?
Assessment-based decisions
After a thorough and thoughtful assessment, some organizations may simply decide to do
nothing but maintain the status quo, determining that the cost of upgrading is too high.
However, there are steps that can be taken to reduce the cost of software modernization.
4. Moving the entire legacy system to a new, more flexible and cost effective platform, rather
than replacing the existing infrastructure can be a very cost effective first step to
modernization. This removes the issue of hardware costs from the equation.
There are software technologies that can sometimes be deployed to rewrite existing code to
modern language while maintaining existing logic, data and naming conventions.
It is worth looking at commercial, off-the-shelf software that can be bought, leased or licensed
before proceeding to hiring someone to do a custom rewrite, another possible choice.
Today, a choice that is increasing rapidly in popularity is private or public Cloud solutions,
such as a SaaS (Software-as-a-Service) which can be leased without all the expense of
proprietary development and deployment.
The costs involved in software modernization may seem high at first glance, but should really
be one of the last items considered. Modernizing optimizes your organization’s ability to
adapt and be responsive, thus maximizing your ability to adapt and evolve for existing and
future conditions. In a nutshell, software modernization may be the most important thing you
can do to ensure your organization’s continued existence and profitability.
Implementation
Obviously, no plan for any progress can be implemented without action. The assessment
should lead to a plan, and the plan then must be implemented.
One of the dangers for many software modernization plans that is very tempting to allow in is
the danger of working without a deadline for implementation. While the idea may seem to
have merit, considering the rapid changes and evolution inherent in modern systems, the
reality is that without a definite deadline for implementation of a real plan, it may never
happen. There will always exist the natural human tendency to put off until tomorrow that
which does not absolutely have to happen today.
On the other hand, setting a definite goal for the implementation of software modernization to
a certain predetermined point by a certain predetermined date will bring the entire system
into the 21st century. Once that goal is reached, further assessment may demonstrate a
need for further modernization, but the distance will be considerably shorter, less costly, and
less likely to leave the organization open to immediate and catastrophic failure.
Jean-Christophe Huc (Jay C)
Follow me on Twitter @cto_software,
and visit my blog for more articles www.software-development.blog