- What is a legacy system in software engineering?
- Main characteristics of legacy systems
- How systems become legacy
- What are the risks of legacy projects?
- How to analyze the legacy system?
- Archer’s recommendations for working with legacy systems
Legacy IT systems can be interesting subjects for technology geeks because there is no one way to go about optimizing and maintaining them. They can work quite effectively for many years, or they can slow down business development due to the lack of necessary features and the high cost of maintenance. We decided to comprehensively analyze this technological phenomenon, as well as share our best practices when working with legacy technologies as a full-cycle development partner.
What is a legacy system in software engineering?
A legacy system is a software that was created many years ago, but it continues to work on older technologies pretty well. In addition, some systems that are classified as legacy also:
- perform poorly
- were abandoned halfway through development
- have not been supported or updated for a long time
What is an example of legacy software? Let's analyze a simple and very clear one. Do you remember the first wearable devices: pagers? They still work, but they are legacy systems since today they have evolved into instant messengers, having gone through the stage of short message service (SMS) messages.
Main characteristics of legacy systems
After analyzing the legacy software definition, it will be easier to highlight their characteristics. Here are the main characteristics of legacy systems:
- They are implemented on old technologies and platforms.
- Outdated development, design, and architecture approaches are used.
- No unit and integration tests.
- The system is difficult to make changes to.
- The system breaks down unexpectedly.
- Bad unreadable code that calls into question the operation of the entire system.
- Routine operations are not automated, which periodically leads to the same type of errors and increases the bus factor, which is the level of specific knowledge that certain team members have. The higher this factor, the more difficult it becomes to continue developing the project after those team members are replaced by others.
- System and infrastructure not properly documented.
How systems become legacy
Why are legacy systems still used? Each case is individual, but here are the three main cases when systems are transformed from new to legacy.
- Since the launch of the system, many new innovations have been created, but the system continues to work on older technologies and platforms.
- The team that created the system did not cope with the task due to low technical competence, and now the project is dead weight.
- As in the previous case, the system was created without a proper technical knowledge base, but it was launched, and in general, it works.
What are the risks of legacy projects?
There are some specific problems with legacy systems, and consequently, there are some risks for the development company that takes on the responsibility of dealing with them.
- Legacy systems are extremely important to the customer. This is logical, since legacy systems work for many years consistently generating profit, and the moment you decide to make your software more innovative, you certainly do not want to lose all the benefits that the legacy system provided. For developers, this means an area of increased responsibility as errors in the code can cost a lot to fix in the long run.
- Legacy systems require the vendor to take responsibility for the code already generated. That is, at the moment when the customer makes a decision to transform the legacy system and turns to the developer for help, all the generated code is no longer divided into “old” and “new.” Each line of code becomes the responsibility of the developer.
- It also requires a more responsible approach to team building. Many developers do not like to wander in the forests of code written by someone else, so you need to immediately pay attention to the personal qualities of team members, namely, the willingness to take on routine and possibly annoying work.
- Legacy software modernization always means that users will have to learn to work with new software. And this costs the customer time and money.
- Problems in already written code very often slow down the launch of new functions. Therefore, when working with legacy systems it is extremely difficult to pinpoint timeframes and budgets.
How to analyze the legacy system?
Before starting work, you need to understand what has already been implemented and how it works. The current functionality needs to be studied, measured and described so that in the future there are metrics and flags that will serve as pointers in the future. If possible, you need to remove any losses associated with routine operations.
During the initial analysis of the system, we need to answer the following questions:
- Where is the source code?
- Where is the system deployed?
- Which version is working now?
- How do I release a new version?
- Is the system integrated with other systems?
- How is the work being logged?
- Are monitoring and analytics configured?
- Where can you find test cases?
- What are the requirements for the system?
Archer’s recommendations for working with legacy systems
As a custom software development company that successfully delivered more than 500 projects, we want to share with you our best practices for working with legacy systems:
- Accept that legacy system modernization may take more time than project creation from scratch. This is due to the code quality, but if there are no issues with the code, the task may be done faster.
- Work according to a time and materials contract. Legacy systems hide a lot of surprises, so it is more beneficial for the customer and the team to get paid for the work actually done.
- Be careful if a technical lead who participated in the legacy system creation will participate in its modernization since there is a risk of making the same mistakes with the new system and wasting all the work.
- It is necessary to determine in advance whether the system has become worse or better after its modernization. For this, it makes sense to ask different users of the system to compare experiences and share their impressions.
Thinking about the right solution for your legacy system? Should you let it work longer or make your business processes more innovative? Let's start by assessing the state of your system and analyzing the possible risks.
Contact us at firstname.lastname@example.org to continue talking about modernizing legacy systems, and together we will find a solution that suits your business.