The solution cannot be universal because everything depends on the nature of changing requirements. Resorting to extensions as opposed to modification cannot really help.
I can see only one way: to change approach from hard-coded structures to stored meta-data and
knowledge engineering, in particular
ontology engineering (please see the links below). However, the architecture of such technology goes well beyond the format of
Quick Questions & Answers and could be a matter of a really big article if not a book.
In brief, the changing requirements you face with can be considered as
knowledge. Due to changed business settings and quite natural lack of powerful predictive skills and often even the minimal vision of stakeholders, this knowledge can be characterized as
junk knowledge. (In such cases developers say "they don't know themselves what they want", and this is just the fact of life, generally unavoidable.) So, hard-coding of such knowledge can be impractical. In certain situations,
knowledge engineering can be used to develop a very abstract model of knowledge in the form of meta-data, not hard-coded but stored in some persistent media (database, XML file). For example, in the past I developed technology where the knowledge was represented in the form of some meta-data schema, and we developed meta-data engine and graphic tools used to add/modify structures in the form of UML structural diagrams. The persisting artifact of this engineering step is used to generate code. Most difficult problem here is supporting of backup-compatibility, but automated character of schema evolution helps a lot. One idea is: you can try to stick to
incremental changes only. The removed elements are not physically removed from meta-data, but are marked with the special attribute "deprecated"; so the system works with those elements only with legacy data. Again, this is difficult to explain in full in a short answer. (No, this code is not available, sorry.)
This is not easy at all. You can consider some trade-off between highly technological approach and the suffering of frequent manual changes and fixes. You can try to find some practical compromise which itself is difficult. The problem is fundamentally pretty difficult.
See:
http://en.wikipedia.org/wiki/Knowledge_engineering[
^],
http://en.wikipedia.org/wiki/Ontology_%28information_science%29[
^],
http://en.wikipedia.org/wiki/Ontology_engineering[
^],
http://en.wikipedia.org/wiki/Metadata[
^],
http://en.wikipedia.org/wiki/Expert_system[
^],
—SA