An introduction to Agile Software Development Methodologies

An introduction to Agile Software Development Methodologies

Compiled by Sunil Agrawala,PMP (References www.agilemanifesto.org )

Agile methods such as Scrum, Crystal, Lean and Kanban, Pairwise Programming, Extreme Programming (XP), Feature-Driven Development (FDD) etc. are the latest buzzwords in software development field.  Let us try to understand the “Agile” methods in comparison to “Waterfall” model. We at Nirmalya Labs have a matured adoption of Agile Scrum Methodology for our software and product development.

Companies are investing billions of dollars today in developing new software applications and products for their businesses. It is important to develop these software applications in a timely and cost effective manner with the right features which finally work for the business.

Software development may sound very easy and simple and no rocket science to the technical communities, but the hard fact is immense amount of money is wasted in developing software products which do not remain relevant by the time they are ready for use. The market conditions would have changed, the user preferences would have changed and the final product in many cases become redundant.

There are some classical challenges in software development namely:

  • The user communities find it difficult to define the requirements clearly
  • They tend to change their minds and bring in new requirements in the course of development
  • The development team finds it very hard to accommodate new changes, especially if they come late in the development life cycle
  • In absence of the ability to accommodate new emerging changes makes the final software not so useful or even sometime redundant
  • Leading to non-achievement of required ROI on investment and often leading huge wastage 
  • Above issues are very common if the team follows the classic Waterfall Model for development.

This is where a group of experienced software developers came up with a new philosophy and development methodology which can address the above challenges effectively. The objective was to provide Agility and Flexibility in the software development methods which ultimately will result in development of a well-designed, working and useful software.

The Agile Manifesto as published by these group of software developers can be read at www.agilemanifesto.org

Let us try to understand the basic philosophy behind the manifesto which was published by them which looks as below:

We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

They proposed to define a new development methodology which essentially will follow the above manifesto. They further defined 12 principles to be followed which will lead to the manifestation of the Agile Philosophy.

Principles behind the Agile Manifesto (Source www.agilemanifesto.org )

  • Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  • Welcome changing requirements, even late in  development. Agile processes harness change for the customer's competitive advantage.
  • Deliver working software frequently, from a  couple of weeks to a couple of months, with a preference to the shorter timescale.
  • Business people and developers must work  together daily throughout the project.
  • Build projects around motivated individuals.  Give them the environment and support they need,  and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development   team is face-to-face conversation.
  • Working software is the primary measure of progress.
  • Agile processes promote sustainable development.  The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  • Continuous attention to technical excellence and good design enhances agility.
  • Simplicity--the art of maximizing the amount of work not done--is essential.
  • The best architectures, requirements, and designs emerge from self-organizing teams.
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.

 

Agile Methods have become widely adopted and practiced. Keeping the above Agile Manifesto and Principles in mind, different instances of Agile Development Methods have evolved.

Some of the most popular Agile methods include

  • Scrum
  • Extreme Programming (XP)
  • Featured Driven Development (FDD)
  • Crystal
  • Dynamic System Development Method (DSDM)
  • Lean and Kanban Software Development

We will try to understand the basics of each of the above Agile Methods in the next article.

   Comment    28-06-2017 11 : 11 AM