We want to keep the time short from development starts, until we get feedback from real use. And to keep the release cycle short and ongoing.

Make a backlog with all functional requirements, described as user stories, but also technical requirements, such as platform, scalability, performance and internationalization.

Prioritize and estimate the user stories and requirements roughly, in days or points.

Split the backlog into iterations, matching the teams at hand. I like to plan with all available information, thus making a “long plan”. However, you will re-plan as many times, as there are iterations, adapting the plan to the teams velocity.