An approach to software development that emphasizes incremental delivery, team collaboration, continual planning, and continual learning. Agile development emphasizes requirement discovery (as opposed to initial requirement specification) and iteration on a project by cross-functional teams. In contrast to waterfall development, agile development is adaptive rather than predictive.