Agile is a set of principles for software development, which promotes adaptive planning, incremental development, early transfer, and continuous improvement. Agile also advocates rapid adaptation to changes.
Agile does not define a specific way to achieve this, but there are many different software development methods that satisfy and follow those criteria.
The purpose of Agile methods is to help businesses achieve agility, thereby enhancing competitiveness and sustainable development. Agile methods have changed the face of the world not only in Software Development but also in other fields such as Marketting (Agile Marketting), Education (EduScrum, Lean Edu, etc.), design (Lean UX, Design Thinking), Lean Startup, and Hardware.
In the period before the 1990s of the twentieth century, the world experienced a crisis in software development methods. The reason for this is that traditional methods are increasingly exposed to many of the downsides and projects that fail too high. There are many individual and individual companies who have explored and developed different approaches to adapt to the new situation, in which the rapidly changing business and technology environments, Traditional development methods are no longer appropriate. These individual methods partly solve some problems, but there are other problems with sharing, collaboration, techniques, tools, expansion, direction, etc.
Therefore, in February 2001, 17 programmers representing these new development methods met in Utah. They came to a consensus on common views among the methods and produced a document called: Flexible Software Development, along with 12 principles. This was the time when the term Agile was used today, although individual methods existed before.
Repeat, Growth: Most agile methods divide tasks into small cycles and do not make long-term plans. Every cycle is full of stages, from planning to analysis and design, coding, testing, integration to delivering a portion of product growth.
Communicate regularly and effectively: Each group needs a representative to work with (for example, Scrum is the Product Owner). This person represents the interests of the people involved and is responsible for clarifying all requirements for the developer.
Short rounds of feedback and frequent adaptations: Developers are constantly interacting with each other to update and synchronize tasks, detect obstacles and adapt to new situations.
Quality Direction: Many techniques and tools are used to improve product quality, such as: Continuous Integration, Unit Testing, Pair Programming, Design Patterns, Redesigned Source Code, and so on.
The following is a list of common Agile methods (in addition there are some other less common methods):
ASD – Adaptive Software Development
AUP – Agile Unified Process
DSDM – Dynamic System Development Method
XP – Extreme Programming
FDD – Feature Driven Development
Lean Software Development