Waterfall development attempts to divide the work of software development into phases, often with heavy paper deliverables, difficult integration efforts, and a desire to “lock down” or “freeze” requirements early in the schedule. It is not uncommon to see cycles of a year or more before ideas can be turned into working software. In contrast, agile development practices attempt to dramatically increase the throughput of business value, maximizing client ROI through the rapid release of usable functionality while providing the ability to adapt to changing requirements.