ABSTRACT
Agile is increasingly becoming the dominating developing method in the software industry. A lot of companies are turning toward agility in one way or another because of the need for fast delivery while at the same time dealing with fast changing requirements. To tackle this problem, it is essential to have at your disposal a tool that enables requirements gathering, iteration planning, progress tracking and reporting. You can't rely on memory for requirements gathering. You can't rely on the universal perception for iteration planning and you definitely can't rely on telepathy for progress tracking and reporting. You need a tool that will do the job with minimum effort and minimum side effects. The problem with requirements is that they are often wrong. If a team isn’t given the opportunity to find out if the prescribed features solve a need that actually exists for real customers the effort is doomed to fail on the day it goes live. The only thing that will prove the project successful or not is the reality of real customers using it to solve real problems. Working in a waterfall style delays reality’s turn at bat until the end of the project when all resources have been spent. This is extremely risky since any fundamental failure in the solution — be it a feature customers didn’t actually need or customers’ difficulty in using it — is extremely costly to correct this far downstream.
Scrum is an iterative and incremental Agile software development framework for managing software projects and product or application development, Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication among all team members and disciplines in the project. A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach —accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.