This research investigates if software development projects can be
delivered on time and to budget in environments where
requirements change frequently. Software development projects have a poor delivery record with most delivering late and over budget, many being cancelled, and only a few delivering software that meets the customers full requirements. A project's schedule and budget are determined and committed to in the early stages of the project when little is known about the product requirements. As the customer learns about the product they need to change the product. But change requires rework and this creates a conflict for the project manager: should they allow changes, to exploit their learning, or should they reject changes to protect the promised schedule and budget. The traditional waterfall software development approach tries to resolve this conflict by perfecting the requirements upfront and therefore preventing change. In contrast, iterative and incremental approaches try to resolve the conflict by frequently delivering small increments of top priority functionality and allowing the customer to reprioritise between iterations.