We're concluding this Widget World software development effort at this point. You would be correct in pointing out that not all the stories and features have been completed, but the authors have no desire to be a historical revisionist of this real-world example or force you through another one hundred redundant pages of the same procedure; by now you have the tools and know-how to complete it yourself.
Testing is one aspect of software development that has historically been considered little more than "busy work,'' but you've experienced how test-driven development can help you not only develop your code but also find bugs and continue to test even when you're working on distant parts of the system.
Refactoring is not just a technical word for "code cleanup.'' Ideally, it shouldn't even be considered a distinct task from software development. Refactoring is simply a coding priority, much in the same way that developing system objects is a coding priority, too. Plus, you've seen how constant refactoring can help to develop a complex framework without the need for excessive analysis and unused features.
These are just a few of the principles of eXtreme Programming, which is designed to reduce complexity in order to sustain development by keeping your code base nimble and flexible. Although not every project is a candidate for the complete methodology of XP, that does not mean that your methodology of Spiral, Waterfall, or RUP cannot benefit from some of the practices such as testing and constant refactoring. Additionally, due to lack of peer programmers (for you the reader), as well as space and focus on code, there are many aspects of XP that we haven't formally delved into, such as planning for a release and measuring the project metrics. XP is quite a disciplined approach and we encourage you to learn more about it, because its strengths and payoffs are solidly concerned with the subtleties of software development as a team.