Agile has become one of the big buzzwords in the software development industry. But what exactly is agile development? Put simply, agile development is a different way of executing software development teams and projects.
To understand what is new, let us recap the traditional methods. In conventional software development, the product requirements are finalized before proceeding with the development.
The most commonly used software development model with this characteristic is the Waterfall Model as depicted in the following diagram. However, in most of the cases, new functionalities get added, and also earlier requirements may change. The Waterfall model is not structured to accommodate such continuous changes in requirements. Further, the user will not have clarity on the functionality of the product till the product becomes available in its entirety.
In the iterative incremental model, the development starts with a limited number of finalized and prioritized requirements. The deliverable is a working increment of the product. A set of activities ranging from requirements to code development is called an iteration. Based on the functionality of the increment and any or all of the new, modified, pending requirements, the next lot of requirements is given to the subsequent iteration. The outcome of the subsequent iteration is an enhanced working increment of the product. This is repeated till the product accomplishes the required functionalities.
The user is usually not involved in the development work and it may cause communication gaps resulting in incorrect functionalities. The involvement is positive for the development team, but is demanding on the time of the team and can add delays. Further, any informal requirement changes during an iteration may lead to confusion and may also create scope creeps. With this premise, Agile development came into existence.
Agile development is based on iterative incremental development, in which requirements and solutions evolve through team collaboration. It recommends a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a theoretical framework and does not specify any particular practice that a development team should follow. Scrum is a specific agile process framework that defines the practices required to be followed.
Early implementations of agile methods include Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997), and Dynamic Systems Development Method (DSDM) (1995). These are now collectively referred to as agile methodologies, after the Agile Manifesto was published in 2001.
The Agile Manifesto was published by a team of software developers in 2001, highlighting the importance that needs to be given to the development team, accommodating changing requirements, customer involvement.
The Agile Manifesto is as follows:
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value:
That is, while there is value in the items on the right, we value the items on the left more."
…Manifesto for Agile Software Development, Authors: Beck, Kent, et al. (2001)
The manifesto items on the left can be described as follows:
|Individuals and interactions||Importance needs to be given to:
|Working Software||Delivery of working software at short duration intervals helps gain customer trust and assurance in the team.|
|Customer collaboration||Constant involvement of customer with the development team ensures communication of necessary modifications.|
|Responding to change||Focus on quick response to the proposed changes, which is made possible with short duration iterations.|
The key element of Agile Manifesto is that we must trust people and their ability to collaborate. For this reason, the specific agile methodologies developed tap the abilities of team members by emphasizing teamwork and collaboration throughout the life-cycle of the project.
The Agile Manifesto is based on the following principles:
|Satisfaction and Delivery||Customer satisfaction through early and continuous working software.|
|Welcoming Change||Welcome changing requirements, even at later stages of development.|
|Deliver Frequently||Deliver working software frequently (weekly rather than monthly).|
|Communication is the Key||Ensure close association of developers with business people on daily basis.|
|Environment and Trust||Build projects around motivated individuals. Give them necessary support and trust them.|
|Face-to-face Communication||Encourage face-to-face conversation to ensure efficient and effective communication.|
|Software as Measure of Progress||Working software is the primary measure of progress.|
|Sustainable Development||Promote sustainable development with the ability to maintain a constant pace throughout the development.|
|Attention to Details||Continuous attention to technical excellence and good design.|
|The Power of Less||Simplicity is essential.|
|Self-organizing Teams||Regular attention of the team on becoming effective in changing circumstances.|
It is an agile framework for software projects. It was used to fine-tune the traditional approaches. The most recent version of DSDM is called DSDM Atern. The name Atern is a short for Arctic Tern - a seabird that can travel vast distances that represents many features of the method which are natural ways of working such as prioritization and collaboration.
It is the most popular agile framework, which concentrates particularly on how to manage tasks within a team-based development environment. Scrum uses iterative and incremental development model, with shorter duration of iterations. Scrum is relatively simple to implement and focuses on quick and frequent deliveries.
It is a type of agile software development. It advocates frequent releases in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to extreme levels. (Extreme Programming is a software-development discipline that organizes people to produce higher-quality software more productively.) XP addresses the analysis, development, and test phases with novel approaches that make a substantial difference to the quality of the end-product.
It is a software development process that relies on the repetition of a very short development cycle: first the developer writes an automated test case that defines a desired improvement or a new function, then it produces the least amount of code to pass that test, and finally brings the new code to acceptable standards.
It is a production practice that considers the expenditure of resources for any goal other than the creation of value for the end-customer to be wasteful, and thus a target for elimination. Working from the perspective of the customer who consumes a product or service, the term value is defined as any action or process that a customer would be willing to pay for. Lean is centered on preserving value with less work.
It is a system to improve and keep up a high level of production. Kanban is one method through which Just-In-Time (JIT), the strategy the organizations employ to control the inventory expenses, is achieved. Kanban became an effective tool in support of running a production system as a whole, and it proved to be an excellent way for promoting improvement.
Over the last 10 years, there is an ever-increasing volume of success stories, where companies have dramatically improved the success and performance of their IT development teams and projects with agile practices. This has caused agile to be widely adopted across a variety of industries, including media and technology, large corporates, and even government.
Agile Framework helps teams to benefit from:
Among these different agile methodologies, Scrum has proved to be extremely successful worldwide over the last 20 years.