Agile software development is an approach to building software in a way that promotes short iterations that can be repeated throughout the entire lifecycle of a project. Although there isn't a single Agile method or Agile methodology, they all do share a common approach, often using short 2- to 3-week sprints (sometimes called iterations) to build and then release features to customers. Agile teams are comprised of stakeholders from across the organization. Face-to-face is the preferred method of communication. It is important to note that Agile is not a methodology in which there are no rules. In fact, Agile teams follow very disciplined and rigorous processes to achieve their goals, and much use is made of project management skills and tools.