Everyone thinks that if you don t plan ahead ”and code ahead ”for things like undo, you re doomed. Are we doomed?
One of the biggest concerns with incremental development, such as we ve been practicing in this book, is that there may be cross-cutting concerns that the design will not easily accommodate, resulting in a lot more work than if one had done more design. A favorite example, first raised to me by Gary Pollice of Rational, is What if you re writing an editor, and you don t plan for Undo, and then they want it?
Well, I won t lie to you, Chet and I knew we were going to ask for Undo at the end of this exercise. But we have tried hard not to design for it or plan for it. You ve been along with us, and I think you can see that we didn t put anything in that is custom-made to support the Undo capability. We have made many design changes along the way ”that s what incremental development is about ”but they have all been motivated by producing well-structured code for the system as it stands.
Now we re going to find out what really happens. Will Undo go in easily, or will it be very difficult, such that we will wish we had provided for it earlier? At this moment, I don t know. Let s talk about what we need and how it might be done.