In which we describe techniques for organizing the analysis and design so that it is resistant to requirements change. The fundamental technique is to find, and model, the invariant in the problem. The invariant of the problem is then expressed in logic, while the variants are expressed in data.

These techniques reduce the size of the analysis and design models, as well as the code. They also provide a basis for understanding the size and true impact of scope changes, maximizing the value of existing analysis and design work, and managing the deleterious effects of requirements changes on the team.