Three reasons: 1. The code is the same but the people using it forget / never knew the reasons it was built that way - and so it looks rotten for the job 2. Because requirements change and people try to make the old code do new things without cleaning up / refactoring correctly - so it now does neither job well, and looks rotten. 3. Because the environment / platform changes, the FTP server is moved to a new data cen…
After the system is built you let the people who created it go, because you can't afford their salaries and hire younger, less talented people to maintain it.
So, instead of "software rots" i would say "software evolves to reflect the competency level of it's current maintainers"