- an approach to software development focused on the use of iterative development. This involves the dynamic formation of requirements, and ensures their implementation, by constant interaction and transparency within organised groups of various specialists. There are several methods related to the class of agile development methodologies, in particular extreme programming, DSDM, Scrum, FDD.
The main ideas
People and interaction are more important than processes and tools;
A working product is more important than exhaustive documentation;
Cooperation with the customer is more important than agreeing on the terms of the contract;
Readiness for change is more important than following the original plan.
Most agile methodologies
are aimed at minimizing risks by bringing development to a series of short cycles called iterations, which usually last two to three weeks. Each iteration looks like a software project in miniature and includes all the tasks necessary to produce a mini-increase in functionality: planning, requirements analysis, design, programming, testing and documentation.
Although a single iteration is usually not enough to release a new version of the product, it is supposed that a flexible software project is ready for potential release at the end of each iteration. At this point, the team reassesses the development priorities.
Agile methods emphasize direct face-to-face communication. Most agile teams are located in the same office. As a minimum, the team includes "product owners" (the customer or his or her authorized representative who defines the product requirements, which role can be performed by the project manager, business analyst or client). The team should also include testers, interface designers, technical writers and managers.
The general concept of the Agile approach is fixed in the Agile Manifesto
The main metric of agile methods is the working product. Preferring direct communication, agile-methods reduce the amount of written documentation in comparison with other methods.
Agile implementation leads to the flexibility of the developed software and provide the customer with the valuable, working program in the shortest period of time. It helps to test the business model on the real market and provide the solution as a skeleton working version, adding more and more features and beauty during the next sprints.