Agile software development is an iterative approach to development that promotes adaptive planning, evolutionary development, rapid response to change, and close collaboration. It focuses on individuals and interactions, working software over documentation, customer collaboration over contract negotiation, and responding to change over following a plan. The key principles are satisfying customers through early and continuous delivery, welcoming changing requirements even late in development, frequent delivery of working software, close daily cooperation between business and development, face-to-face communication, and adapting to change through self-organizing teams.