The system is put into production in a few months, before solving the whole problem. New releases are made often anywhere from daily to monthly. The shape of the system is defined by a metaphor or set of metaphors shared between the customer and programmers. Simple design . At every moment, the design runs all the tests, communicates everything the programmers want to communicate, contains no duplicate code, and has the fewest possible classes and methods.
Programmers write unit tests minute by minute.
These tests are collected and they must all run correctly. Customers write functional tests for the stories in an iteration. These tests should also all run, although practically speaking, sometimes a business decision must be made comparing the cost of shipping a known defect and the cost of delay. The design of the system is evolved through transformations of the existing design that keep all the tests running. Pair programming .