When we used to ship software it was the most expensive, due to the fact that you had physically mail out new CDs to customers that then had to schedule downtime on their end and upgrade the software and hope that everything went well. Also considering that while you wrote the software for, say, Windows NT, you were never quite sure what the configuration the machine was in so it was difficult to predict if your software would run successfully in every situation. This improved greatly over time but it could be dicey with some customers in particular, usually the ones that paid you the most!
Now that most of us use the cloud, companies are upgrading software all the time, it even has a name "continuous deployment" This is only possible with software "in the cloud". The customer usually has no idea things have been enhanced.
Often when a piece of software gets large it gets very difficult to maintain because nobody understands the entire source code completely. Early employees have left, or moved on to different projects, software is often terribly documented, if at all, and there is a fear that making a change can introduce more bugs. I have seen companies crippled by this problem so development goes to crawl.