We spend a lot of time talking about the start of software - defining it, designing it, building it, shipping it, deploying it. One thing that could stand a little more talk is the end of software -phasing out support, upgrading customers, and ultimately end of life-ing it.
Now, depending on the software and your audience, this is something that can take a few weeks, or it can take several years. Either way, there are several areas to consider:
- Individual Features. You have two chances to remove this: before anyone is using it, and after it has stopped being used.
- Versions of Software. While you cannot enforce upgrades faster than your clients will take them, it is also your responsibility to make your later versions compelling so your clients will want them.
- Hardware. If your solution includes hardware (as ours does), your hand will eventually be forced by dead machines. If you can no longer purchase hardware, and if you can no longer keep the hardware you have running, you cannot continue to support your clients on that hardware. Better to cease support before it gets to that point
At least in enterprise software (and I suspect with other software, in which I have less experience), the end must be planned at the beginning. So make sure your release plan includes sending the software out and also bringing it back when the cycle is over.