A subset of Xp that has worked well (in the development of CiCs, including the major internal restructuring that was performed in recent years), if speed of delivery isn't a primary objective, is CRC analysis, simple design, and refactoring together with usage scenarios based on a sequence of executable releases. OnSiteCustomer is replaced with 'surrogate' customers who have a close relationship with actual customers combined with a good working relationship with a sample of real customers. Continuous unit testing is replaced by automated regression testing combined with gradual exposure of changes to others (using a library system which allows changes to be 'promoted' through increasing scopes of visibility: private to the people making the changes, public in a functional area, public to all functional areas, delivered for system testing). Another help when refactoring without continuous unit testing is to use sequences of (ideally provably correct) program transformations to gain assurance that a refactoring is correct. Also particular executable increments can plan to remove function which will be put back in later, i.e. certain regression tests are allowed to fail in the interim. This requires good communication and careful management, but it does work particularly when replacing large components when it would not be cost-effective to reverse engineer the component internals. -- GlynNormington ---- See also: TurnAllTheKnobsToSeven