Systems Don’t Disappear Overnight
It is easy to forget just how popular the “classic” Microsoft programming languages were (e.g. Visual Basic and C++). As Microsoft changed to the .Net technology, they hoped many companies would follow (and a lot did), but in reality it takes time for companies to redevelop all of their existing software developments that have been written using VB or C++.
It could be that the company has already invested money into the original development of the software system, and thus it can be hard to obtain additional funds based solely on the reason that Microsoft changed its development base.
Sometimes software systems remain because the people who developed the system are no longer available. The developers may have moved onto other companies or other projects. The consultants may also be no longer available. Even if the software system has documentation, that documentation can become out of date and therefore cannot be relied upon. The best way to understand the business rules embedded into a software application is to read the actual source code. If the source code is not available, the executable code can be decompiled back into its source code.
Some developers will not like change and will therefore resist any redevelopment. This usually occurs when the developer does not contain the new skill set required for the redevelopment. Microsoft hoped that developers would be excited about developing in the .Net languages and will therefore want to enhance their knowledge by learning these new skills. Maybe a software system is not redeveloped as the people using that software system don’t want to change. Even if the software has a terrible user interface, people get used to using the system and therefore don’t wish to change it.
Legacy software systems were also developed to execute on older hardware. If those software systems are now being run on new hardware they will be very fast to use as the software overheads are much lower. Sometimes this can also be a reason to redevelop the software system if the system must run on a particular hardware environment or operating system. It may become very hard to find replacement parts for that hardware or the hardware support personnel decide to drop support for the hardware. It could be that Microsoft drops support for the operating system that the software system must operate on.
Each piece of software has a lifetime. You usually know when the software is coming towards the end of its life, as it becomes more problematic to change, as the business changes. This is usually the best time to put together a cost-based proposal for the redevelopment of that software system.