The literal meaning of agile is to “Able to move quickly and easily”, which pretty much supports the idea of Agile development. Agile methodologies were introduced to quickly and collaboratively build quality software.
The Information technology is relatively new as compare to other fields, and when it came to following a methodology to complete an IT project the only examples to follow were from existing methodologies in manufacturing and construction industries. The Water fall development model is an example of methodologies which IT industry adopted from already established industries. The Water fall methodology is a sequential design process, the preset states of Water Fall methodology are planning, initiation, design, implementation and support.
ProblemAs mentioned above Water Fall methodology is a sequential process in which each of the next phase gets started only after completion of its previous phase. This method works fine when all the requirements of the project are already well known and there is little or no chance of changing existing requirements. But for most of the IT projects requirements emerge with the time.
Historically a big chunk of IT projects failed because software delivered on the requirement gathered in the beginning was not able to fulfil the needs of the end user. Sometimes end user don’t themselves know the requirements very well, they provide the requirement based on their understanding of the problem, but when product is completed and presented to them, even though it’s based on the requirement they had provided, they reject it because product does not solve the problem. Other times development team does not understand the requirement well, and create a product on wrong understanding.
In response of high failure rate of IT projects experts came up with a different methodology which could solve the perceived problems of Water Fall methodology, they named it Agile methodology. The goal is to develop the software based on customer’s continuous feedback, and to achieve that software is planned, designed, developed, tested and released incrementally.
The development time is divided into small (time-boxed) iterations. To improve the adaptability of the project Customer feed-back and Planning is incorporated in each iteration of the project. The continuous planning, continuous testing, continuous integration and continuous risk evaluation gives greater visibility and control on the progress of the project and consequently reduces the chances of project failure.
values and vision
Agile software development emphasizes on adding value for the customer, and for that face to face communication, empowered teams, responding to change and working software are important agile practices and measures.
Some of the most common agile methodologies/frameworks are following.
- Extreme Programming
- Dynamic System Development Method (DSDM)
- Features Driven Development (FDD)
- Lean Software Development