Wed Mar 9 12:05:29 EST 2016

Feature change, a 3-step process

To implement a feature change that requires a structural change
(current structure A, desired structure B), it is usually best to
factor the approach in 3 steps:

1: Abstract the implementation such that it can represent both
structure A and structure B based on a configuration data structure.

2: Change the configuration data structure to switch to structure B.

3: Optional: remove (evaluate) the configurability if it is
(absolutely) certain that structure A is no longer needed.

The abstraction step 1 is most difficult, but it can use exisisting
regression tests.  This way one avoids the "rewrite pitfall", which
usually fails due to missed requirements that were implicitly covered
by the original implementation.