Agile Development

‘Agile’ is a buzzword in today’s IT industry. No meetings and trainings end without discussing and debating on ‘Agile’ technology. No educational institutes and training organizations design a curriculum without this topic. Software Project managers and companies those who want to develop a new software look for professionals with sound knowledge in ‘Agile’ methods.

Agile means swift, responsive, adaptive and active. Synonymously, Agile is a technology that helps to develop a software quickly, responsive to changing customer requirements and dynamic.

Some of the characteristics of ‘Agile development’ are:

  1. It responds to business uncertainties and changing customer requirements.
  2. It is an iterative and incremental model. It divides the entire project into easily executable modules and allocates to teams for working in parallel and assembles the modules to make ‘workable software’. Initially, a basic product is delivered and then, at every milestone meeting, an iterated version is delivered. This allows the customers to see how the product looks and make changes at the appropriate time than dragging it till the end.
  3. The entire project is divided into Sprints (Broken down simple units), which are iterative versions of the basic product. Features are added one by one to the core product. It is modular in nature and thus based on Object oriented design and programming.
  4. It gives emphasis on individuals and teams, and takes their opinions and difficulties into consideration. It breaks down the whole work into easily manageable and simple tasks for the team to work.

It is against the traditional software development model ‘Waterfall model’ in many ways:

    • Traditional Waterfall model freezes all the requirements at the beginning, whereas ‘Agile development’ allows users to make changes throughout the project.
    • Traditional Waterfall model goes in a Sequential and Phased manner: Analyzing Requirements, Planning, Designing, Developing, Testing and Delivering. ‘Agile’ does all these activities in every sprint, and thus is Incremental and Iterative.
    • Traditional Waterfall model takes long time for delivery, as final product will be ready only at the end of the project. In Agile development, a ‘workable product’ is delivered in every sprint cycle.
    • While Waterfall model demands to have a very descriptive and accurate documentation, ‘Agile’ concentrates on ‘Working and accurate Product’ than documentation in every meeting.
Figure 1: Agile Development vs Waterfall Model

Figure 1: Agile Development vs Waterfall Model

Agile is a way software projects works. IT has several methods that help to live its way or manifestos.  Agile Method is a collection of the below methods:

  1. Scrum
  2. Unified Process
  3. Crystal Clear
  4. Extreme Programming
  5. Adaptive Software Development
  6. Feature Driven Development
  7. Dynamic System Development Method
  8. Lean Development
  9. Kan-ban
  10. Scrum-ban

The below are the values of the Agile manifesto signed by individuals who framed various Agile methodologies:

  1. Individuals & Interactions over Processes and Tools: Agile insists on giving importance to the feelings and ideas of peoples, and discussions rather than following processes rigidly. Allowing individuals to take control make the work easily manageable and achievable on small tasks by winning the constraints imposed by processes which are generic.
  2. Working Software over Comprehensive Documentation: Providing ‘workable software’ at every meeting, creates confidence to clients, and gets the feedback at earlier stage that prevents building upon a wrong product or unwanted feature
  3. Customer Collaboration over Contract Negotiation: It insists in giving importance to customer satisfaction and delight rather than sticking on to the Statement of work and negotiating terms or minor changes.
  4. Respond to change over following a plan: It advocates giving importance to changing client requirements rather than strictly adhering to the initial plan.

Thus ‘Agile’ is a lightweight technology to achieve customer satisfaction and efficiency in software development.