Agile development methodology

Agile development methodology is a series of approaches to software development focused on the use of interactive development, dynamic formation of requirements and ensuring their implementation as a result of constant interaction within self-organized working groups consisting of specialists of different profiles. There are several techniques that belong to the class of agile development methodologies, in particular extreme programming, DSDM, Scrum, FDD.

Most agile methodologies are aimed at minimizing the risks by reducing the development to a series of short cycles, called iterations, which usually last two to three weeks. Each iteration itself looks like a miniature software project and includes all tasks required to produce a mini-increment in functionality: planning, requirements analysis, design, programming, testing and documentation. Although a single iteration is usually insufficient to release a new version of the product, it is assumed that the agile software project is ready for release at the end of each iteration. At the end of each iteration, the team reassesses development priorities.

Agile Methods
Agile methods are agile methodologies such as Lean Development, Scrum, etc. They were developed back in the early 2000’s as an alternative to inefficient traditional IT methods.

Almost all the agile teams are concentrated in one office (bullpen). The office includes the product owner – the customer who defines the requirements for the product. The customer can be a business analyst, a project manager, or a client. In addition, the office may include interface designers, testers, technical writers. That is, Agile methods focus primarily on direct communication.

The main metric of agile methods is the work product. By favoring direct communication, agile methods reduce the amount of written documentation compared to other methods

Main ideas:

  • people and interaction are more important than processes and tools;
  • a working product is more important than comprehensive documentation;
  • Collaboration with the customer is more important than agreeing on contract terms;
  • willingness to change is more important than sticking to the original plan.

Agile principles:
1.Customer satisfaction through early and uninterrupted delivery of valuable software;

2.welcoming changes in requirements even at the end of development (this can increase the competitiveness of the resulting product);

3.Frequent delivery of working software (every month or week or even more frequently);

4.close, daily communication between the customer and the developers throughout the project;

5.The project is handled by motivated individuals who are provided with the right working conditions, support and trust;

6.The recommended method of transferring information – a personal conversation (face to face);

7.working software is the best measure of progress;

8.sponsors, developers and users must be able to maintain a steady pace indefinitely;

9.constant attention to improving technical prowess and user-friendly design;

10.Simplicity – the art of not doing extra work;

11.The best technical requirements, design, and architecture come from a self-organized team;

12.constant adaptation to changing circumstances.

The main benefits of Agile:

Quality web product.
Involvement of the customer in the process of each iteration gives the opportunity to adjust the process, which invariably improves quality.

High development speed
Iteration lasts no more than 3 weeks, by the end of this period there is definitely a result.

Minimization of risks
A large project allows the customer to pay for several iterations and in the process to understand that he or she will get exactly what he or she wants in time and at a reasonable price. Waterfall models (using specifications and terms of reference) do not provide such opportunities.

The customer always has the ability to observe the development process, adjust the funnuity of the project, test or run it, even can stop it at any time.