As long as underlying data is preserved, software is better done fungible. Data formats change, processing models and architectures change, underlying hardware change - allowing us to do more with less. In my career I have found there are no stable architectures - systems require refactoring every couple of years to stay manageable and full rewrites possibly once every technology cycle to make it in tune with the times. This is not a limitation, but an opportunity as software is constantly evolving and is more like a living,breathing organism than a permanent structure.