Every time I read about how to produce software I invariably come upon the phrase 'software development life cycle'. What is cyclical about it? It's confusing and should not be referred to this way. It's almost as if once software is delivered the production team go back to the begin and start again i.e. they will begin another loop around the cycle.
While most software gets improved over and over again, this is a requirement for working software. In many cases, there are few incentives for rework. For example, my TV runs Android TV but there is no schedule upon which upgrades are released. Rather, updates are released ad hocly, in Sony's own schedule if at all. In fact, we have had to prevent upgrades as they are meddlesome and reveal marketing trends we are not willing to participate in. In the cases where rework is performed through the release of new versions, this is done to keep customers engaged. In other words, rework is the only incentive for the producers to maintain a competitive edge otherwise their users will abandom them. It is not a norm but a competition incentive.
Therefore, it is far more accurate to think of software as being delivered and then maintained. There is a window of time within which the software is produced and once released, it is expected to remain useful until major requirements come up or a complete redesign is needed.