This is an approach to software development under which requirements and solutions evolve through the collaborative effort of cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continual improvement.