The third step is to decide on the number of iterations and assign a time-box to each one. For a
small- to medium-sized application, iterations usually vary from four to eight weeks. Some
projects work best with two-week iterations, while others might require more than eight weeks
(although this is rare). The overall project size and the degree of uncertainty are two factors that
determine individual iteration lengths.
After establishing the number of iterations and a schedule for each, the team members develop a
theme or objective for each of the iterations. Just as it is important to establish an overall project
objective, each iteration should have its own theme (this is similar to the Sprint Goal in Scrum).
Each iteration delivers a demonstrable set of features to a customer review process, making the
product visible to the customer. Within the iterations, "builds" deliver working features to a daily
(or more frequent) integration process, making the product visible to the development team.
Testing is an ongoing, integral part of feature development—not an activity tacked on at the end.