What are the challenges with a legacy system?

A legacy system is an application that uses technology or hardware that has been superseded,  or is no longer supported by the original vendor. Legacy systems can present a number of challenges. If the underlying technology is not supported, then new functionality is not being added, and existing faults not fixed. If things do go wrong, then it can be harder to find people sufficiently skilled to assist.   

Another problem with legacy systems is that they can be hard to maintain or improved. Usually, over the years, systems are enhanced to cater for some special condition or new business processes, but often the modifications are not adequately documented, and the processes arcane. The problem is exacerbated when staff responsible for managing the system retire or move on. An organisation can find itself shackled to a poorly understood and documented system, which no one dares risk changing in case the whole system breaks. 

It can also be difficult to recruit staff to support legacy systems. Not many colleges teach their students Fortran 77 or Cobol, and not many students want to learn Fortran 77 or Cobol, but there are plenty of applications still in use written in these languages. The scarcity of developers with these skills drives up the cost of maintaining legacy systems, and increases the time required to find suitable skilled staff.     

What we can do

The first thing we do is thoroughly analyse and document the existing application. This is the key to a successful project. Our goal is to reverse engineer the existing application, producing a runbook, technical and functional design documents. We do this by talking to your staff and partners who use a system, and watching how they use the system. We’ll also examine the software artefacts, for example, the code, database objects, and configuration. Having done this, we’re then in a position to discuss with the client the best way forward. 

Usually there are two options. The first is to enhance the existing system, making such improvements that the client requires; the second is build a replacement system and migrate existing data to it.