This paper describes techniques for organizing analysis and design so that they are resistant to requirement change. The fundamental technique is to find and model the invariant in the problem. The invariant is then expressed in logic, while the variants are expressed in data.