A few reasons:
1. Cost. Upgrading software is expensive. If an upgraded licence costs $50 that may not seem like much, but doing that for 5,000 machines gets really expensive really quickly.
2. Compatibility. Very often, companies will have custom or specialized software that may not function well with newer software. If the older software doesn't have patches/upgrades, or those patches/upgrades are not cost effective (see point 1) you may need to keep other software downgraded in order to preserve compatibility.
3. Security/Reliabilty. Older software - particularly in the enterprise - can be more secure and/or stable because the bugs and security holes have been patched. Newer software may introduce newer bugs that can compromise operations.
4. Usability. Not everyone is computer literate in a company and upgrading their software may confuse them to the point where they struggle to do their job until they learn the new software.
Usually it boils down to the cost.
The cost of upgrading canned software like MS Office, SQL, or Exchange can be astronomical. Even $150 x 500 machines gets very expensive very quickly, and that doesn't include the labor.
Companies also often have highly customized software like ERP systems or applications built in house that aren't compatible with newer OS's and they aren't willing to spent the time, effort and money to upgrade it.
The government in particular are notorious for this. They often don't have the resources to perform an upgrade because they either contracted out the software development in the first place and that company is out of business. Or the people that worked on it quit / were laid off / retired / don't have the prerequisite skill set.
So more often than not they sit on the problem until it becomes insurmountable and only then do they make an effort to upgrade.
All too often companies are willing to make an upfront investment to develop a system to suit their needs without any real understanding of what will be involved in maintaining it moving forward. Next thing you know they lay off all the developers to save costs... The application is working after all, why do we still need devs?
The reality is the cost of IT upgrades don't go away because you ignore them, they accumulate. So more often than not it costs more to upgrade long after the fact then having just done it in the first place.
I think you got many better answers then i have, but for me ITs two points:
1) If it does what is suppose to do, why change it?
2) It would cost a lot of money to get it working on newer system but it would still do exactly the same thing.
*“Why should we waste money on something that is working fine?”* - Boss
In our company locker room, the conveyor belt that dispenses uniforms still runs on Windows 95.
Don’t forget compliance, aerospace industries use old software as changing the software means you have changed how you build the item and you may need to get that item re-certified. Until you get the item certified you can’t sell that item.
It's not just the cost of the software as most people are mentioning.
In science we use SUPER old computers to work with SUPER old equipment. We have lots of software that won't even run on windows 7. Upgrading to new computers would not only cost us the cost of new computers, but new, multi-tens of thousands of dollar machines as well.
Also, integrated serial ports work a HELL of a lot better than the USB -> serial converters. Hell, we still have machines that require the computer to have a GPIB card.
(And they still work well so why would we want to replace them.)
You get really good at pirating old versions of windows when you're in science. (Go ahead, you go try to buy XP without it being super overpriced.)
A huge one is that a business runs on a wide range of software. I had an issue where I had to revert an uprade to W7x64 because a piece of software that was very much needed only existed as a 16 bit app. It was utterly horrifying, but hey.
A lot of times IT departments are wary of upgrading because it might break old software they're using. If you update your operating system you run the risk of breaking any software that hasn't been updated for the new OS yet (or is no longer maintained and won't be updated at all). Even updating individual pieces of software may cause workflow disruptions if something no longer works the way it's supposed to.
So a point many of the commentators are missing, is unions. Changing software is considered a tool change and as such must be negotiated and as anybody who deals with organized labor knows, it's something you don't want to do unless you have to. People forget with any "tool change" often come deals like "you have to train our people" and "you can't doc anybodies performance for the next X years because it's not their fault they missed the deadline, you changed the tool".
For example when we moved from Office 2010 to Office 2013 we had to agree that no union member would be penalized for not meeting any deadline that involves writing anything for one full year after proof we provided them a four hour formal block of instruction on Office 2013 first and unsurprising we still have people years later than haven't met a deadline since. Because you know the upgrade in Office versions was such a massive change that one could no longer write work orders on time.
People simply forget lots of organizations simply don't change because organized labor negates any improvement you could possible realize by ~~my~~ making that change.
I work for a company that had a production app written in a defunct language. The company that wrote the software went out of business and we gained all of the rights to it but didn't have the ability to use it. It would only work on windows XP and windows 7. Until we could have it rewritten to work in a LAMP environment, we were stuck with outdated OS software. End of the day it boiled down to money.
Cost is certainly an issue but there are some good reasons. If you've got a plant with processes controlled by software, you've got to make sure your controls are compatible with the upgrade. Checking all that takes time. Secondly, you don't want your production to go offline because of some previously undiscovered bug. Time let's the new version get it's bugs resolved.
So lots of folks so far have mentioned cost. Giving the $50 x 5000 is a big number makes sense, but there is a second hidden factor I've not seen mentioned. Complexity. If I change Office 2013 to 2016 then all the macro's that finance uses to update the SAP database stop working because VBscript. Oh also turns out we are running important business functions off a shared Access database that would update with Office and break that other multi-million dollar process.
The biggest problem I have seen in every business is once IT released the software to the users, the users found a way to maximize it's usefulness all on their own via secondary processes. Those processes are almost never built by an IT person so they aren't modular and can't tolerate any piece moving. (Serious I know of a company who made millions off of excel, a DB connection in Excel to SAP, and a mail client macro. Changing out email servers required building a proper middleware and literally hundreds of thousands of dollars in project money to make the new system reliable and scaleable.) Often times when a upgrade comes along people discover the shoestring and bubblegum systems and have to acquire proper cap-ex to build what should have been put together from the start. You do this a few dozen times for each software product and you'll it gets really complex really quick. So much so that the cost has spiraled out of control and the deadline is impossible.