As your project evolves you will gain a better understanding of individual requirements. You may discover that the original assignment of requirements to iterations, which made sense initially, now needs to change. Perhaps new requirements have been identified and added, perhaps a requirement has expanded or contracted, or perhaps priorities have changed. Regardless of the reason, you may find that you need to redefine what you intend to accomplish in that iteration. Based on the requirements, identify the tasks that you need to accomplish.
Some tasks depend on others.
For example, you must write your source code before you can deploy it. Development of test cases can start before coding. The point is that some tasks must start after others have finished, some must wait until another task has started before it can start, some cannot finish until another task has finished, and some cannot finish until another task has started. The important thing to keep in mind is that each individual can only work on so many tasks at once and has only so many hours in the day in which to work. This is a concept called resource balancing, making sure that your task assignments are reasonable.