Safely Making Changes
If you are lucky, you work in an environment where it's acceptable to take risks, make changes, and sometimes break things. In my experience, this is rarely the case when dealing with a legacy system. The users are unlikely to be used to change and you need to goodwill with them before any negative impacts.
This section covers how to make changes to your legacy system in a predictable and safe way. Much of this should be useful even if the system is intended to be kept as functionally unmodified as possible.
Please note that the advice here is more applicable to line-of-business applications than others, such as ISV products, embedded systems, and so on. You may still find the discussion useful but I'm not suggesting you virtualize a standalone mobile phone application in this way!
Virtualization Is Your Friend
Making low-impact changes to complex systems used to be a nightmare. You needed a complete physical and logical replica of your system, with expensive duplicates...