When developing software you have to bite off only what you can chew. An iteration allows you to divide your development efforts into chunks. Each chunk delivers a functional set of features that add value to the application. Better yet, the chunk contains only the functionality that the developers and stakeholders agree can be delivered in a specified time frame and still add value.
The chunk is manageable and fulfilling!
Bite off only what you can chew!
The process starts by accumulating a list of everything the stakeholders could possibly want the application to do. This is the menu. Next comes the selection. The stakeholders and development team determine the time frame in which the chunk will be delivered. Is this a quick lunch or a seven course meal? Once that is agreed upon stakeholders and developers negotiate what can feasibly be included in the time frame.