Developing software is a difficult and risky activity. According to statistics, among the biggest risks are expenses that exceed the budget, consumption of time that exceeds the schedule, features that do not solve the problems of users, low quality of the systems developed, and cancellation of the project due to infeasibility.
In the traditional concept, software development methodology is a set of activities, and associated results, which assist in the production of software.
Traditional Development Results
Since 1994, Standish Group International has published great research about the successes and failures of software projects. In this study, the results of the projects fall into one of the following categories:
- Successful: The project is completed on time, within budget, and containing all the specified features.
- Committed: The project is finalized, and operational software is delivered, but the budget and deadline exceed the stipulated limits, and, besides, the delivered software has less functionality than specified.
- Failures: The project is canceled at some point during development.
Agile development is the result of the independently, by several renowned professionals in the field of software engineering, that, despite having learned according to the traditional booklet, they were only able to minimize the risks associated with software development, thinking, and acting very differently than traditionally in books.
Although each stakeholder had their preferred practices and theories, everyone agreed that, in their previous experiences, successful projects had a small set of principles in common. Based on this, they created the Manifesto for Agile Software Development, often called just the Agile Manifesto. The term Agile Development identifies development methodologies that adopt the principles of the agile manifesto. These principles are as follows:
- Individuals and interaction between them more than processes and tools
- The software in operation more than comprehensive documentation
- Collaboration with the client more than contract negotiation
- Answer to changes rather than following a plan
In agile development, projects adopt the iterative and spiral model. In this process, all phases described in the cascade model are executed several times throughout the project, producing short cycles that are repeated throughout the development, and at the end of each cycle, there is always functional, tested software and approved.
Final considerations of agile development
The main objective is to show in detail how it works and what are the advantages of Extreme Programming or XP (Extreme Programming), which is the most known agile development methodology today. Other examples of agile methodologies are SCRUM, Adaptive Software Process, Feature Driven Development (FDD), Crystal, Agile Modelling, and Win-Win Spiral.