Robert James wrote:
How would you feel if your GUI app broke every time I refactored?
This is a Frequently Asked Question regarding the interaction between
Agile development and published interfaces.
The answer is to apply more of the Agile development practices -
specifically Customer Tests. Each feature your customer wants, you
deliver it with a suite of Acceptance Tests that lock down the
feature's specifications. Done right, your customer should author
these tests, or at least review them.
So if your customer wants a web service, they get a set of tests
specifying that web service's published interfaces. You are now free
to refactor all you like. If you break any test, you revert and try to
BTW "Refactor" doesn't mean "code-and-fix with your design". It means
"change the design while passing all its tests". Re-read all the
verbiage about refactoring with that in mind.