We all know what legacy code is but here is a definition that everyone can agree on. Legacy code is:
- Software that generates value for the business
- Not understood, in detail, by either the business or development staff
- Written in a language that is no longer used
- Difficult to fix or enhance
The application was probably written decades ago and as changes were required (bug fix or enhancement) the pressure was on to do it fast and worry about things like the documentation later.
Over time this has become worse as more changes are piled on more changes and we end up with the commonly known spaghetti code.
How Do You Know If You Have Legacy Code
You will start to see some or all:
- The cost of change is going up every time a change is requested.
- Old code has the problem of only 1 person having the knowledge of the application
- When a change is made new problems are introduced
- The “I thought we fixed this before” syndrome quickly comes into play
- Code is huge and spaghetti-like with no way of finding a bit that needs fixing
- Development teams are afraid to touch the code – there is too much at risk for the coders to want to be brave enough to make changes to the code.
From the business point of view it gets more and more irritated with a code set that has bugs, doesn’t do what they want it to do, takes forever to have changes done and is a bad overall experience.
So, what do you do about all this?
The real challenge is that no one understands how the code has been structured and exactly what each piece of code does.
The main solution is to be able to understand in a non-programming way what the code does and how every piece of code and every item of data is inter-related.
To do this the code needs to be read and translated into a format that can be common no matter what the programming language. This gives us a standard that can be taught to people whether they know the original language or not and so maintenance staff can work on applications built in any language.
Once we have this common format we can then interrogate the database where it is stored to identify all the linkages and structures that help us maintain legacy code. For example:
- Search for entities, variables, and code blocks with specific patterns
- Identify the linkages and flows between programs and logic sub-routines
- Identify the entities that are impacted by each program
- Identify the manipulation of variables as they are processed through programs
- Identify the path that will result in the execution of a specific code statement
- Identify redundant code
Now, we have enough information for developers to be able to make changes to the code without be worried about breaking something else and more importantly being sure they have tackled all of the code that needs changing.
To learn more about Intellisys sign up for one of the demonstrations coming in September.