Application Modernization is the refactoring, re-purposing or consolidation of legacy software programming to align it more closely with current business needs.The goal of an application modernization project is to create new business value from existing applications. An application is a program designed to perform a specific function directly for the user or, in some cases, for another application program. Keeping legacy applications running smoothly can be a time-consuming, resource-intensive process, especially when the software becomes so outdated that it becomes incompatible with newer versions of the underlying operating system (OS) or system hardware.
An Application Modernization project would typically involve the following: 1) Re-hosting legacy applications by shifting applications from a legacy environment such as a mainframe to a modern application in order to reduce legacy hardware and software costs. 2) Wrapping legacy applications with SOA interfaces. 3) Automated migration of legacy data and applications; transforming application code developed in legacy to Java or .NET 4) COTS (Customer of the Shelf); replacing legacy applications with new packaged applications such as SAP, PeopleSoft and Seibel. 5) Re-architecting legacy applications; extracting the business assets from legacy applications and transforming them on to a modern architecture using modern tools and development platforms.
A typical Application Modernization Roadmap should have a number of projects, both short-term and long-term, that support the business goals of the company. A Roadmap should start by establishing consensus between business executives, partners, IT executives and support staff over the vision, goals, budget and timelines for modernization. Essentially, these key questions should be asked, and answered:
- Where does the business need to be in six months? Two years? Five years?
- What are the major challenges users of the applications have today?
- What risks does the current legacy technology present to the business?
- What are the challenges of supporting the applications?
- What technologies and architecture would we like to move toward?
- What are the current costs of maintaining our environments?
- Are there any revenue increases that can be achieved by improving, adding or changing technology and processes?
- The next step is to prioritize your list of business and IT challenges and goals in order to establish a timeline to meet each of them. This means carefully examining what needs to be done now *and what can wait until later. At this point, each challenge can be closely analyzed to identify possible solutions.
Approaches to Application Modernization
Modernizing applications is often less expensive than maintaining legacy applications. However, the decision to modernize is not a simple one. The degree of difficulty varies per modernization approach. Choosing the right approach largely depends on your company’s needs and goals. Below is an overview of 5 different approaches along with the pros and cons of each:
1. Screen-scraping: Screen‐scraping creates new, modern‐looking interfaces for your legacy applications…without actually updating the old applications. A screen‐scraping tool does nothing more than scrape the information off your existing applications and present it in a graphical interface.
Pros: Speed and price. It provides modern‐looking applications quickly without altering the underlying applications.
Cons: It does not actually modernize your applications. Maintenance is actually more difficult, time consuming, and expensive as you will have to maintain your old underlying applications as well as the screen‐scraped applications.
2. Code Conversion: Code converters take old applications written in outdated programming languages and convert the code to a modern programming language. Pros: Code converters provide a quick way to turn outdated code into modern code without learning a new programming language.
Cons: It doesn’t change the outdated application structure, which leads to difficult maintenance and limited application capabilities.
3. Rip-and-replace: The “rip‐and‐replace” method is exactly what it sounds like. Throw out your old applications and create new, modern applications from the ground up.
Pros: Gives you applications that address your current business needs and take advantage of the most modern methods, languages, and databases. It leaves you with applications that are easy to maintain and can grow with your business.
Cons: Throwing out your old, yet functioning, applications increases the chances that you might break something. Additionally, since you’re building new applications from the ground up, this is the most time‐consuming method.
4. Buy new and migrate: This method requires that you buy a pre-built application package and migrate your data over for use on the new platform.
Pros: This method gives you modern, easily maintainable applications that take advantage of the most modern methods, languages, and databases. It’s usually less time consuming than the “rip‐and‐replace” method, and typically comes with less risk.
Cons: This is often the most expensive option. Also, because the applications weren’t designed for your company, they usually require a fair amount of customization.
5. Extend and surround: This approach involves gradually surrounding your old applications with completely new and modern applications. It lets you modernize different parts of your systems gradually, as the need arises.
Pros: This approach leaves you with truly modern applications, and eliminates much of the risk associated with the “rip and replace” method. Additionally, it lets you re‐use certain parts of your old applications that are still crucial to your business.
Cons: Unless you use a development tool, this is often the slowest method. It’s best suited for companies that want to modernize at their own pace, but don’t need to modernize everything right away.
Challenges in Application Modernization
Primary issues with a legacy system include very old systems with lack of documentation, lack of SMEs/ knowledge on the legacy systems and dearth of technology skills in which the legacy systems have been implemented. Typical legacy systems have been in existence for more than two decades. Migrating is fraught with challenges:
- Organizational change management – Users must be re-trained and equipped to use and understand the new applications and platforms effectively.
- Coexistence of legacy and new systems – Organizations with a large footprint of legacy systems cannot migrate at once. A phased modernization approach needs to be adopted. However, this brings its own set of challenges like providing complete business coverage with well understood and implemented overlapping functionality, data duplication; throw away systems to bridge legacy and new systems needed during the interim phases.
- Significant modernization costs and duration - Modernization of a complex mission critical legacy system may need large investments and the duration of having a fully running modernized system could run into years, not to mention unforeseen uncertainties in the process.
- Stakeholders commitment - Main organization stakeholders must be convinced of the investment being made for modernization, since the benefits, and an immediate ROI may not be visible as compared to the modernization costs being invested.
Last but not the least, there is no one stop solution-fits all kind of option in modernization. With a multitude of commercial and bespoke options available for modernization, it’s critical for the customers, the sellers and the executors to understand the intricacies of various modernization techniques, their best applicable implementations, suitability in a particular context, and the best practices to follow before selecting the right modernization approach.
Application Modernization Principles
Application Modernization goes well beyond rewriting code. It involves adopting several organizational processes that can play key roles in helping agencies achieve their agility and efficiency goals. The following eight principles should be considering when undertaking an application modernization effort:
1. Focus on developing new capabilities: Support innovation efforts by prioritizing the development of new capabilities. Avoid redesigning or re-coding an application without implementing new features. Exceptions can be made for software that is no longer supported, fails to meet requirements or has become too costly. In general, however, focus on adding new capabilities that will propel the agency forward.
2. Consider prior investments: Replacing software components can be a costly undertaking. Evaluate the cost of old and new components relative to their respective features and consider any potential cost or schedule impacts to re-establishing integration with other systems.
3. Recognize there will be future change: When implementing software changes, understand why the old software is being replaced. This insight can help in developing new components that are more adaptable to changes in requirements for internal functions and external interfaces.
4. Do not promulgate vendor-specific APIs: Implement standard application programming interfaces rather than enabling applications to use a vendor API directly. Hiding the vendor-specific details can allow for easier replacement. Think of a mobile phone that works on only one carrier’s network, preventing users from easily switching between cellular providers. Just as it’s best to choose an unlocked phone for greater portability, it’s better to select APIs that work across vendors for maximum customer choice.
5. Use microservices rather than a “big bang” approach: Massive changes tend to be more disruptive to users and make it harder to determine the root cause of issues. Incremental changes are preferable, as they enable “quick wins,” a controlled introduction to end users and more agility when confronted with potential project re prioritization. So consider a microservices architecture where appropriate. These are collections of small services that communicate using lightweight mechanisms and can be deployed, scaled, upgraded or replaced independently. They make application management far simpler and less disruptive.
6. Support multiple API versions concurrently: Some of the most difficult aspects of modern interconnected application architectures are support for heterogeneous environments and change management. To address these issues, use technologies that enable access through different programming languages, transport over different protocols and have the ability to encode data using different formats. This broadens the value to external users and helps prepare the agency for inevitable changes to internal software.
7. Modernize development processes to improve software quality: Introduce agile development practices such as Continuous Integration and Delivery and strengthen collaboration within an agency by promoting a DevOps culture. Both of these approaches can help increase flexibility and collaboration and allow for more rapid response to changing needs.
8. Use integration middleware for application modernization: Integration middleware connects applications, data and devices to create efficient and agile information systems. It also allows for rapid refactoring to ease the introduction of new capabilities while preserving prior investment, loose coupling to reduce vendor dependency and agile configuration to accommodate future change. Use well known Enterprise Integration Patterns, a collection of prebuilt technology connectors to the most popular protocols and APIs to more efficiently and reliably deliver solutions to meet emerging agency requirements.
- What is Application Modernization? Techtarget
- What does an Application Modernization involve? freschelegacy.com
- Application Modernization Roadmap Fresche
- 5 approaches to application modernization MRC
- Challenges in Application Modernization Wikipedia
- What's really required to make application modernization work? GCN