Agile Development is a software development model that includes a variety of development methodologies that can be followed to create adaptable software i.e. software that can easily meet changing customer requirements.
In agile development the entire project is broken down into a number of sequential iterations. For each iteration, that typically lasts for not more than three weeks, the complete development process (i.e. planning, designing, coding and testing) is followed thereby minimizing the risk. On completion of each iteration, the software is released to the customer. The feedback received from the customer is then incorporated in the software.
Agile software development methods are ideally suited in cases where the requirements are constantly changing and where the project size is not large. Agile methods are best suited for projects that have small teams.
The principles of Agile Development as per the Agile Manifesto are as follows:
- Customer Satisfaction through continuous delivery of valuable software
- Delivery of software in short iterations ranging upto six weeks
- Daily communication and collaboration between all concerned project members
- Providing for continuous changes in requirements
- Creation of a proper work environment and delegating work to specific project members
- Face to face communication is preferred over documentation
- A good design and attention to detail ensures the creation of adaptable or agile software
- Simplicity in design and coding should be maintained
- Self-organizing project teams work best
- Regular meetings to identify means to improve productivity
The benefits that arise out of agile development include the following:
- Flexibility/Agility: As opposed to traditional development project, change is acceptable in projects that follow the agile development methodology.
- Quality: Testing is carried out at regular intervals thereby ensuring at a bug free and quality product.
- Visibility: Agile methodology encourages active participation by all stakeholders during the life cycle of the project. This ensures that expectations are effectively managed.
- Efficient Risk Management: Multiple smaller release`s ensure that possible issues are identified early on making it easier to respond to changes.
- Right Product: In agile development the requirements can evolve and the ability for change to be incorporated ensure that the right product i.e. the product that was accepted is delivered.
A wide variety of agile software development methods are followed. Some of them are:
- Extremem Programming
- Agile Modeling
- Adaptive Software Development
- Crystal Clear
- Agile Unified Process