During its life software will be subject to pressures for change. These pressures are an unavoidable consequence of the nature of software and the changing environment in which it is used. One method of reducing the impact is to design, develop and maintain a system in ways that will facilitate change and reduce the impact of individual changes.This process is known as change isolation. Methods available to designers range from code level construction of objects, to business level purchase of commercial off the shelf products.
In the past systems have been constructed in an ad-hoc way, with individual developments having no common strategy to enable best use of support resources.A strategy, which focuses on the long-term support of systems rather than purely rapid development, is a worthwhile design goal from an architectural and financial viewpoint.