A family of lightweight computer development methods that were created to suit different types of projects depending on their size, complexity and criticality.
They rely on seven key principles: Frequent delivery (every few months), Reflective improvement (feedback based on performance), Close communication (which requires team members to be in the same room/building), Safety (of team members who are encouraged to speak freely, and of end-users when the software can affect human lives), Focus (on top priority issues, with no-interruption periods), Easy access to expert users, Automated tests and integration.