In every software development project there is a need to ensure that the requirements of the user are met without compromising the ultimate goal of the project - these needs frequently change, and are often erratic. Agile software is a means of putting the software first while at the same time reacting to these user requirements in a flexible and agile way. This book covers the emerging methods and approaches (including extreme programming, feature-driven development and adaptive software development), that are loosely described as 'Agile' and shows how to apply them effectively to software development projects. It shows how to plan, organise and develop systems using agile techniques, and highlights some of the problems that may be encountered. This down-to-earth approach looking at how the different methods can work together, will be welcomed by software developers, architects and engineers, business analysts, development managers and software professionals needing an accessible source of Agile techniques and applications.