In Waterfall model of the Software process, there is no chance to revisit the phases of SDLC once completed. Hence it is basically considered as a Fixed Approach. Since the requirements keep changing we as we don’t take the approval from the stakeholders, or development & implementation takes a long time, there is a lot of rework to be done. Here’s when the Agile process of Software development comes into the picture as Waterfall model of the software process is highly perilous & expensive and less efficient than Agile methodology.
According to Manifesto for Agile Software Development
- Individuals and interactions over processes and tool
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The agile software process is a method of developing software based on an iterative and incremental approach where requirements and solutions progress through cooperation between self-organizing, cross-functional teams. It is more adaptive, plan-driven and disciplined approach towards software development.
An Agile model involves mainly two tasks:
1.Splitting your organization into small, self-organizing teams as
a. Product/Project Owner – owner of the product or the project
b. Scrum Master – who manages the team and is responsible for in-time delivery of Sprints
c. Scrum Team – who works collaboratively on Sprints
2. Splitting your work into manageable chunks/deliverables called Sprints.
It is considered iterative as we divide the process into small concrete deliverables, organized into small, cross functional teams and sort by priority and estimation of the deadline for each unit of manageable Sprints.
Once a Sprint has been delivered, the product is analyzed and re-prioritized, if necessary, and the next set of functionalities are selected for the next Sprint.
Scrum methodology, which is a subset of the Agile software process is based on the principles of transparency to all stakeholders along with continuous inspection and adaptation to changing conditions. An integral component of Agile is the different types of feedback loops used to ensure that,
- Every member of the scrum team understands their role and is aware of the issues and tasks of the team.
- Issues are quickly identified and corrected.
- End users and customers see the team’s results quickly and provide timely feedback.
- End users and customers refine existing requirements and provide new ones, also known as ad-hoc, as the project progresses.
- Scrum Master see the team’s progress as it takes place to eliminate inefficient activities such as formal lengthy meetings and repetitive status reports that reduce the time spent on actually developing a product.
Scrum methodology contains following processes:
- The Sprint
Sprints are application development cycles lasting from one to four weeks depending on the complexity of the requirements & the design. Sprint length is fixed across the life of the project and is chosen by the team. A fixed number of user stories are assigned to each sprint. With each sprint, the usability and value of the product increase as features are added and refined.
- Sprint Planning
At the start of each sprint, the Product Owner defines a goal for the sprint and identifies which stories need to be completed to achieve it. The Development/Scrum Team selects stories from this bundle, reviews them, and commits as a team to their completion. This includes considering both the individual and collective complexity of each story using story points. One significance of the review may be that the goal needs to be decomposed across multiple sprints if it exceeds the capacity of the Development Team.
The team also plans for how they will work together to complete the sprint. These may include discussion, possibilities, complexities involved, test plans etc. An option available to the Development Team is to pair members of the team to work on certain stories. For example, it may be advantageous for a front-end developer and a back-end developer to pair with one another to ensure that API’s are well established.
- Daily Scrum meeting
During the course of a sprint, the Scrum Team gathers daily for a 15-minute meeting to report progress and barriers. This meeting is referred to as the Daily Scrum and its purpose is for each member of the team to assess what was accomplished towards the sprint goal since the last meeting, what is to be accomplished by the next meeting, and to identify any obstacles. The goal of this meeting is to make sure that there is transparency across the team to both successes and obstructions.
- Sprint Review
At the end of each sprint, a Sprint Review is conducted to validate the working product to the customer/product owner. This is a review meeting attended by customer representatives or the Product Owner, Scrum master and the Scrum Team. This meeting is an opportunity to get direct feedback on the state of the product, discuss issues and possible changes or new features, and to adapt to future changes. The Sprint Review provides timely and relevant input to the next Sprint Planning session.
- Sprint Retrospective
The Sprint Retrospective is conducted by and for the Scrum Team to promote continuous improvement. It is the primary means the team uses to improvise their work and drive value not just for the customer, but also for themselves in the form of a more organized and smoothly operating team.
Scrum methodology is an effective method that is simple to understand as it is executed in a disciplined manner. The main uses of this process include
- It offers freedom of implementation
- It is easy to learn and use
- It embraces the change
- It reduces the risk building the product by increments
- It optimizes the team’s efficiency and efficacy
- It is an iterative & continuous improvement
Hence Agile converts a waterfall model into an iterative software process as shown below: