ISTQB definition:
Agile software development - is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. Most Agile teams use Scrum.
Typical Agile teams are 5 to 9 people, and the Agile Manifesto describes ways of working that are ideal for small teams. The Agile manifesto consists of four statements describing what is valued in this way of working:
individuals and interactions over processes and tools;
working software over comprehensive documentation;
customer collaboration over contract negotiation;
responding to change over following a plan.
While there are several Agile methodologies in practice, the industry seems to have settled on the use of Scrum as an Agile management approach, and Extreme Programming (XP) as the main source of Agile development ideas.
Proponents of the Scrum and XP approaches emphasize testing throughout the process. Each iteration (sprint) culminates in a short period of testing, often with an independent tester as well as a business representative. Every time a change is made in the code, the component is tested and then integrated with the existing code, which is then tested using the full set of automated component test cases. This gives continuous integration, by which we mean that changes are incorporated continuously into the software build.
Human language:
Agile - is the ability to create and respond to change. The agile word represents adaptiveness and response to change. It is an approach to software development that seeks the continuous delivery of working software created in iterations over short periods. Agile aims to right the challenges faced by the traditional “waterfall” approaches (for more details on Waterfall please What is the Waterfall Model? Article).
The purpose of Agile methodologies is to develop the software, with incremental and frequent delivery of small chunks of functionality, through small cross-functional self-organizing teams, enabling frequent customer feedback and course correction as needed. Agile software development is an umbrella term for a set of frameworks and practices based on the values and principles expressed in the Manifesto for Agile Software and the 12 Principles behind it.
One thing that separates Agile from other approaches to software development is the focus on the people doing the work and how they work together. There’s a big focus in the Agile software development community on collaboration and the self-organizing team.
It means that teams have the ability to figure out how they’re going to approach things on their own; It means that those teams are cross-functional.
There still is a place for managers, but they step in when the teams try but are unable to resolve issues.
The following 12 Principles are based on the Agile Manifesto:
Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software;
Welcome to changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage;
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale;
Business people and developers must work together daily throughout the project;
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done;
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation;
Working software is the primary measure of progress;
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely;
Continuous attention to technical excellence and good design enhances agility;
Simplicity–the art of maximizing the amount of work not done–is essential;
The best architectures, requirements, and designs emerge from self-organizing teams;
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Conclusion:
So, if you are asked at an interview: What is Agile? What principles of the Agile Manifesto do you know? The best way to answer is:
Agile software development - is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The agile word represents adaptiveness and response to change. It is an approach to software development that seeks the continuous delivery of working software created in iterations over short periods.
And use principles, which were described in the list above.
Comments