Agile software development: an approach to software development under which requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams and their customers. It advocates adaptive planning, evolutionary development, empirical knowledge, and continue improvement, and it encourages rapid and flexible response to change.
A process or capability in which human agents determine a system development approach for a specific project situation through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments. Agile methodologies allow the agile team to modify the process and make it fit the team rather than the other way around.
The Four values Agile Manifesto:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan.
Agile 12 principles of Agile software
The twelve principles of agile development include:
- Customer satisfaction through early and continuous software delivery
– Customers are happier when they receive working software at
regular intervals, rather than waiting extended periods of time
between releases.
2. Accommodate changing requirements throughout the
development process – The ability to avoid delays when a requirement
or feature request changes.
Frequent delivery of working software –
Scrum accommodates this principle since the team operates in
software sprints or iterations that ensure regular delivery of
working software.
Collaboration between the business stakeholders
and developers throughout the project – Better decisions are made
when the business and technical team are aligned. Support, trust,
and motivate the people involved – Motivated teams are more likely
to deliver their best work than unhappy teams. Enable face-to-face
interactions – Communication is more successful when development
teams are co-located. Working software is the primary measure of
progress – Delivering functional software to the customer is the
ultimate factor that measures progress. Agile processes to support a
consistent development pace – Teams establish a repeatable and
maintainable speed at which they can deliver working software, and
they repeat it with each release. Attention to technical detail and
design enhances agility – The right skills and good design ensures
the team can maintain the pace, constantly improve the product, and
sustain change. Simplicity – Develop just enough to get the job done
for right now. Self-organizing teams encourage great architectures,
requirements, and designs – Skilled and motivated team members who
have decision-making power, take ownership, communicate regularly
with other team members, and share ideas that deliver quality
products. Regular reflections on how to become more effective –
Self-improvement, process improvement, advancing skills, and
techniques help team members work more efficiently.