Evolution of Technology Landscape
Over the past few decades, the entire spectrum of technologies that support the development, delivery, deployment and consumption of software products has undergone a sea change. As you can see from the image below, the legacy landscape ranged from 3/4 G programming languages to programming environments, ERP tools, application platform suites to widely used Microsoft, JAVA and LAMP stacks. On the other hand, the modern landscape is dotted with latest versions of popular stacks to modern stacks such as MEAN, low code platforms to digital accelerating technologies such as AI, ML, RPA, AR, VR and IoT.
The ISV landscape is dotted with thousands of traditional software products which run on 3G/4G software stacks ranging from legacy technologies such as Power Builder, Progress, Delphi, FoxPro, COBOL and VB to relatively newer stacks such as Java, LAMP, ASP.Net or MEAN. Various elements of the software stack, such as programming/business languages, IDEs, libraries, and databases are continuously evolving with newer and more robust versions. Often there is a demand to upgrade to latest versions within the same stack, as the legacy versions are no longer supported or inadequate. For example, typical same stack upgrades could be from Progress 9 to Progress OpenEdge, Java SE 6 to Java SE 9, or .Net 3.5 to .Net 4.5 etc.
On the other hand, there could also be a demand for an upgrade to a modern software stack to meet current business needs.
Refactor to support OS upgrades
Often, ISVs design their applications to work on a specific version of an operating system (OS), which could be in a Microsoft, Apple, or a Linux environment. These operating systems are also continuously evolving, with a major upgrade every few years. Based on the nature of the OS upgrade, ISVs will have to refactor or upgrade some part of their code to ensure that their applications work on the latest versions of the relevant OS without a hitch. Usually, major OS vendors support ISVs with utilities or tools to facilitate migration to newer versions.
Phased software upgrades
A software upgrade might sound relatively easier, but depending upon the nature of the application, this could be a complex activity. ISVs might also have to consider a phased approach for software upgrades, either one layer at a time (such as UI, and database) or one component at a time.