Un fatto abbastanza notorio ed evidente del ciclo di vita del software è che esso non si conclude dopo il rilascio, dopo la manutenzione: è necessario rinnovarlo periodicamente, costantemente, producendo nuove major release. Persino software sostanzialmente già completo e factotum viene ulteriormente esteso e rimesso ciclicamente sul mercato.
Alle volte si tratta di affinamenti e revamp sostanzialmente solo estetici, cioè riprogettazioni delle interfacce che non toccano minimamente il cuore centrale delle funzionalità; altre volte si rivede tutto ma per piccoli passi fra una versione e l’altra, mantenendo o recuperando quanto più possibile codice dalle versioni passate in nome della retrocompatibilità e della minimizzazione del rischio; altre volte ancora si procede a vere e proprie riscritture che condividono con le versioni precedenti solamente il nome.
Nulla di male nel rifare le cose: in certi casi si arriva al punto che qualcosa non è più facilmente espandibile, manutenibile, gestibile per cui risulta più pratico – o doveroso – ripartire da zero.