Project management and iterative lifecycles
Current recognized best practice is to development software using an iterative and incremental development lifecycle. This is the basis of all current agile methodologies (Scrum, XP, Evo, DSDM, Crystal, etc), large scale best-practice methodologies (Microsoft Solutions Framework, Unified Process/RUP), and is preferred by many current government development standards.
An iterative lifecycle is easy to identify as the steps of requirements analysis, development, testing and delivery are repeated multiple times. Requirements analysis is done for each iteration (for the features delivered in that iteration); testing is done before releasing each iteration.
If a project plan has all requirements analysis activities at the beginning, a ‘requirements complete’ milestone before development commences, and then all testing and deployment at the end, then it is not iterative – it is sequential (waterfall).
Unfortunately this is all too common a misunderstanding, especially by “agile” consultants who merely use it as a buzzword. As Craig Larman describes the mistake: “We’ve been at it for two months and have the use case analysis nearly finished, and the plan and schedule of what we’ll be doing in each iteration. After review and approval of the final requirements set and iteration schedule, we’ll start programming.”
The project plans below can be used as a template for your iterative project (as most plan templates I have seen are sequential). It is based on the OpenUP process framework (from Eclipse), which is an open-source version of the Unified Process, but it should be easily adaptable to other iterative processes.
As well as an appropriate project plan, I highly recommend finishing each iteration with a demonstration of the product, a continuous integration development environment, and the design practice of test first development.