July 31, 2018 // By Magenic
Your applications are the heart of your business. Yet the task of modernizing legacy systems can stymie even the most aggressive drivers of digital transformation. Accenture reports that a full 85 percent of executives believe that legacy hinders their ability to move to a more digital model. When applications remain stagnant, or fall behind the innovation curve, you accumulate a technical debt that can be hard to overcome, and expensive to ignore.
Many businesses are evaluating their application portfolios to find that they aren’t as agile as they would like, and that they’re losing in relevance. Ecommerce and web applications find that their user experience (UX) is now judged against the marketplace instead of just against the competition. Line-of-business applications are based on technology that’s harder to maintain and test, and the skill sets needed to maintain them are harder to find. Data applications can’t cope with the volume of data created and can’t monetize the depth and interconnections that exist in the information sets.
There is a natural application lifecycle that occurs as investment in an application shifts from innovation, to active development, to maintenance and support. This maturation process occurs as the application becomes harder to evolve, and as critical resources – time, talent, and capital – are moved to more urgent priorities. If a direct investment isn’t consciously made toward maintaining agility, this “agility pressure” will drive the organization to focus elsewhere.
An organization looking to modernize their applications has three viable options:
Ground-Up Development – While it might sound like completely starting over, this is a much more directed process than beginning from nothing. The organization knows what works, what doesn’t, and how they will use the application on a day-to-day basis. This is an opportunity to look at all the things that you wish the application did better and set a new course.
In this case, the organization can work in a true agile fashion by defining the user stories to cover the needed functionality, and come at the design and architecture with a fresh approach. It requires discipline to not do things the way they’ve always been done, but that said, the ground-up process can be innovative and constructive. Good, strong leadership helps.
Test-Case Driven – In cases where there is a reluctance to document the functionality from the top down, many companies will choose to write the test cases that the existing system will pass and then choose to implement against those test cases. If the new application can pass all the tests, then it is to be accepted as meeting the functional needs.
People tend to choose this approach when they need to match some outputs exactly, or where the requirements are poorly documented, but they’ve built a significant test suite to manage the update/deployment process. This does have pitfalls where some of the application might not be covered by tests, but it can allow some subsystems to be reused where the technology matches and can lower costs where there are complex integrations or data exchange that will not be rewritten.
Codebase Rewrite – Lastly, some organizations will look for automated tools or partial rewrites to migrate the existing code, warts and all. While it is attractive to think that there is some automated system out there that will be able to convert the code with little human intervention, we find that most companies that start down this path will eventually settle on one of the other paths unless they can contain the rewrite to just refactoring a fairly isolated piece.
EVALUATING WHAT TO MODERNIZE
We never advocate taking a shotgun approach to application modernization, that is wanting to do a one-for-one migration of an app. There are always things that the business wants to do differently, parts of the application that are rarely used, or even some cases where a problem in the application’s workflow has led to new behaviors to be ingrained in the business as a work-around.
Instead we recommend that businesses look at their existing feature set (User Stories, Test Cases, BRD) and really evaluate it into the following categories. This is an opportunity to take a fresh look at what you’re building and best align it to the needs your business has today.