Our development methodology is based on the Scrum framework.  We break development down into manageable chunks and work on them for a set period.  During the period, we continuously watch the velocity to see how the Sprint is going.  Stakeholders determine what goes into each sprint and help developers further refine the requirements of pieces that the developers are working on.  We encourage other Agile practices as well for developers including continuous build, unit testing, and more.