Getting legacy code into shape for an active old age

Old code never dies; it doesn't even fade away; it keeps grinding away as system and application performance starts to sag. But updating code through re-writing is a risky business that can let in new bugs that degrade performance even more. Translation into a modern language used to be the most popular way of dealing with legacy software in the hope of making it easier and less expensive to maintain, but it has fallen out of favour and is now a tactic of last resort. This is because translation introduces new bugs, and risks disrupting critical business processes, while bringing few additional benefits. As well as introducing new bugs such legacy translation can disturb dormant bugs in the original code that had not caused any problems until now.