Agile software development is a group of software development procedures based on iterative and incremental development, where requirements and solutions develop through collaboration between self-organizing, cross-functional teams. It encourages evolutionary development, adaptive planning, and delivery, a time-boxed iterative approach, and promotes rapid and flexible reply to change. It is a conceptual structure that promotes foreseen interactions during the development cycle. The Agile Manifesto commences the term in 2001.