Not unlike hardware, custom-built software applications can age over time. There are a variety of ways that a business can outgrow a software application, and those aging applications can become more burdensome to maintain than to update or rewrite.
We don’t typically think of software as something that can age. The code is written and run on a computer, so it doesn’t age like hardware does or like people do. It becomes obsolete or becomes less functional, unable to keep up with the demands of the business and the business users. Software is usually written based on a snapshot of a business need for a certain period or range of time. Unfortunately, software doesn’t change dynamically the way the business does. Businesses can change, market demands can change, the number of users can change, and the software can have trouble keeping up with that.
Another aspect of aging is that the software may have been built in a technology that is no longer supported or is slowly on its way out the door; it’s being deprecated or replaced by more modern design patterns and technologies. The software was written years ago, and the technical resources are no longer available or difficult to find. When you can find them, they are expensive, which makes maintaining the software more and more costly.
Technologies, design patterns, and understanding of software as a functional piece of a business were limited 10-15 year ago, and that technology continues to evolve. When we think about legacy applications, they were monolithic in nature and written top-to-bottom; every line of code was executed in one lump sum. To change one little thing in those applications, you had to change everything. Thankfully, now we have better paradigms alongside better technologies where we can separate the different pieces of functionality and objectives into multiple layers.
- We can have part of the application that is written specifically to manage the database.
- We can have another piece that manages business rules and validation.
- We can have another piece that’s a service layer that allows you to integrate other systems and software, preserving the code that’s already in place for business logic and the database.
- We also have the user interface and front end of the database. This part is also changing: it used to be just PC-based, but now you’re going to want to think about new devices like GPS, tablets, and cell phones so people can access your software anywhere in the world.
We begin to realize there is an aging process that happens with software — as it ages, it becomes more difficult and expensive to maintain in addition to some of the lost opportunities for growth. For instance, older software wasn’t designed to take advantage of the hardware that you’re probably already using which has multiple core processors and robust memory capabilities. Bringing the software up to date will give you the opportunity to take advantage of those hardware options for better performance.