Lecture
Agile development methodology (eng. Agile software development , agile methods ) - a series of software development approaches focused on the use of iterative development, dynamic formation of requirements and ensuring their implementation as a result of constant interaction within the self-organizing working groups consisting of specialists in various fields [ source not specified 309 days ] . There are several methods related to the class of flexible development methodologies, in particular, extreme programming, DSDM, Scrum, FDD.
It is used as an effective practice of organizing the work of small groups (which do homogeneous creative work) in combination with their management by the combined (liberal and democratic) method.
Most of the flexible methodologies are aimed at minimizing risks by reducing development to a series of short cycles called iterations, which usually last two to three weeks. Each iteration itself looks like a software project in miniature and includes all the tasks necessary for issuing a mini-increment in functionality: planning, requirements analysis, design, programming, testing and documentation. Although a separate iteration is usually not sufficient to release a new version of a product, it is assumed that a flexible software project is ready for release at the end of each iteration. At the end of each iteration, the team reevaluates the development priorities.
Agile methods emphasize direct face-to-face communication. Most agile teams are located in the same office, sometimes called English. bullpen . At a minimum, it includes “customers” (the product owner is the customer or his authorized representative defining the requirements for the product; this role can be performed by the project manager, business analyst or client). The office may also include testers, interface designers, technical writers, and managers.
The main metric of agile methods is the work product. By preferring direct communication, agile methods reduce the amount of written documentation compared to other methods. This led to the criticism of these methods as undisciplined.
In February 2001, the Manifesto of a Flexible Software Development Methodology was released in Utah, USA. It was an alternative to documentation-driven, “heavyweight” software development practices, such as the “waterfall method,” which was the gold standard for development at the time. This manifesto was approved and signed by representatives of the methodologies: Extreme Programming, Crystal Clear, DSDM, Feature Driving Development, Scrum, Adaptive Software Development, Pragmatic Programming. A flexible development methodology was used by many companies even before the adoption of the manifesto, however, it was after this event that Agile development entered the masses.
Agile is a family of development processes, not the only approach in software development, and is defined by Agile Manifesto [1] . Agile does not include practices, but defines the values and principles that guide successful teams.
Agile Manifesto was designed and adopted on February 11-13, 2001 at The Lodge at Snowbird in the mountains of Utah. The manifesto was signed by representatives of the following methodologies: Extreme programming, Scrum, DSDM, Adaptive software development, Crystal Clear, Feature driven development, Pragmatic Programming. Agile Manifesto contains 4 basic ideas and 12 principles. It is noteworthy that Agile Manifesto does not contain practical advice.
Key ideas:
Principles explained by Agile Manifesto [2] :
One of the recurring points of criticism: in the agile approach, the creation of a plan (“roadmap”) for product development is often neglected, as well as requirements management, during which such a “map” is formed. A flexible approach to requirements management does not imply far-reaching plans (in fact, requirements management simply does not exist in this methodology), but implies the ability of the customer to suddenly and unexpectedly at the end of each iteration set new requirements that often contradict the architecture of the product already created and delivered. This sometimes leads to catastrophic "rummaging" with mass refactoring and alterations at almost every iteration.
In addition, it is believed that working in agile motivates developers to solve all incoming tasks in the simplest and fastest possible way, while often ignoring the correctness of the code in terms of the requirements of the underlying platform (the approach “works, okay”, it does not take into account that can stop working at the slightest change, or it can give defects that are hard to reproduce after real deployment at the client). This leads to a decrease in the quality of the product and the accumulation of defects.
There are methodologies that adhere to the values and principles stated in Agile Manifesto, some of them are:
Comments
To leave a comment
Software and information systems development
Terms: Software and information systems development