Legacy Modernisation is the cost effective re-use or replacement of existing technologies so as to deliver a modern automated business service, without impacting business service levels.
The world of business automation is changing. Older client/server technologies and their interfaces are becoming unfashionable and being replaced by service-oriented, componentised applications, driven by a demand from the business for more agility and for much richer and human-oriented user interfaces. This is part of a continuing move towards technology abstraction—businesses want automation to deliver business outcomes, possibly via their own favourite device (smartphone or tablet). Business people like using the technology in their pockets but they don't care about the technology at the back end—and why should they?
So, you might think that the answer is obvious: use modern development tools to replace legacy applications with modern, mobile-enabled, service-oriented applications, built quickly and cost-effectively from scratch? Well, this is not always the best answer, because there's an issue—you have to resurrect or recreate the underlying business requirements (often not a trivial thing to do) and show that the new applications implement existing business processes accurately, and integrate with existing applications, which involves expensive and resource-consuming regression testing.
In many circumstances, re-using but modernising existing working technology (as long as it is well structured, adequately documented and proven effective) makes a lot of sense.
If you can re-purpose parts of existing tried-and-tested applications as components of an application built on a service-oriented architecture, with a modern user-oriented presentation layer (which is what legacy modernisation is all about), you can reduce both the risk of automation and the overheads of testing—and especially of integration and regression testing—while giving users a modern and supportive user experience. Most importantly, the business can usually continue to use the application while it is being modernised in stages; so, for example, the business users don't need to suffer an unsupportive UI while waiting for an entire new application to be finished (including testing).
An incremental approach to legacy modernisation is recommended, modernising functional parts of your legacy as and when this delivers business benefit.
However, up-front review and planning is essential. Modernisation is only really effective if the legacy application is well-structured and effective in delivering a business service already. Removing applications and business activities that no longer deliver value is cost-effective and, at some point, rewriting a badly-written and poorly-documented application is cheaper than trying to modernise it. In addition, sometimes the availability of completely new technologies or business opportunities justifies a complete rewrite rather than an attempt to modernise fundamentally unsuitable applications.
In brief, the recommended approach is:
- Assess feasibility: is the legacy code well-written and valuable enough to make modernisation cost-effective?
- Define the service architecture approach and granularity; invest a little up-front to avoid expensive issues later;
- Understand the legacy application. Develop an understanding of the legacy application and how it delivers its business outcomes;
- Clean-up (re-factor) the application by removing dead or unnecessary code and eliminating performance bottlenecks;
- Implement modern service-oriented and web-based architectures and people-centric user interfaces. Strive to deliver incremental, continual, business benefit rather than 'big bang' modernisation, using virtualised and cloud technologies such as, for example, "Enterprise Server 3.0".
An example methodology and approach to Legacy Modernisation in the Uniface context can be found here. Although this applies specifically to Uniface application modernisation, much of it is applicable to legacy modernisation in general.