This article describes agile SDLC (software development life cycle), which covers scrum methodology and scrum life cycle used in agile way of executing and maintaining projects. It compares how it benefits from typical water fall model used for software development/maintenance. It also covers basic terminologies used in agile scrum methodology.
What is Scrum?
The scrum is the framework for implementation of agile software product development/project management. It can also be applied to software maintenance projects. The idea behind scrum is to divide the project into as many milestones as possible so that deliverables in incremental phases can be demonstrated to the customer much early and hence feedback/problems/ issues can be known at the early stage of the project life cycle. This small period of incremental phases in the agile process is called sprint. Sprint period is typically about 1 to 4 weeks. Usually it is taken as 1 month i.e. 4 weeks. But if the project is very small it can be taken as 2 weeks to have more milestones in entire duration as well as to have first milestone occur little earlier.
Principles behind Agile Scrum
-Customer satisfaction through early and continuous delivery of valuable software in incremental phases.
-Welcome change in requirements, even late in project. The same need to be mutually agreed upon by customer and agile team. In order to avoid problems at the end of each sprint at the start itself the tasks which have been derived from epic/user stories need to be communicated along with acceptance criteria to the customer.
-Deliver working software in phases frequently, with more milestones in entire duration of project.
-Create self organizing team by way of motivation and trust.
-Deliver software which passes definition of DONE.
-The stakeholders, team and end users should be able to maintain pace constantly i.e. their needs to be fulfilled or satisfied.
-Continuous attention to quality will enhance agility.
Scrum life cycle
Let us understand scrum framework for agile software development. As mentioned in the scrum life cycle figure below following steps are followed in scrum based agile software development.
1.First the high level requirements are finalized based on end user perspective/opinions; hence it is called user stories. These user stories are broken up into tasks till we will not be able to break them down further. This is created in a document called as product backlog by Product Owner in association with customer. All the stories/ tasks are prioritized.
2.These tasks after prioritization are divided into sprints. Each sprint will contain set of tasks. This is done in sprint planning. The document created is called sprint backlog. The entire responsibility of sprint backlog lies with Scrum team.
3.Now the Sprint process will come in execution phase where in the scrum team will do mainly development/testing activities. During sprint execution phase scrum team daily meets to discuss the progress. These meetings are facilitated by scrum master. Hence scrum master plays the role of facilitator or servant leader. These meetings are called daily standup meetings or daily scrum meetings. These meetings are each of 15 minutes duration. In these meetings each team members will talk on three questions i.e. what they have achieved till yesterday, what they are going to do and are there any impediments on the way of smooth work progress.
4.After the end of sprint scrum team will do sprint review and also sprint retrospectives. This helps in better planning for next sprints.
5.After the sprint retrospectives the phase 1 or iteration 1 of the development carried out. It is evaluated with definition of DONE which is also called as acceptance criteria. Now the increment 1 of the development carried out will be demonstrated to the customer and feedback will be obtained from the customer. The same feedback will be utilized for next sprints.
6.The steps 1 to 5 mentioned above are revisited again in the consecutive sprints. Hence the scrum life cycle is a continuous process.
Scrum team - It is composed of product owner, team members and scrum master as described above.
Scrum artifacts - The product backlog, sprint backlog and burn down chart are scrum artifacts.
Product backlog- It is basically list of requirements including priorities and estimation of each requirements.
Sprint backlog- It is subset of product backlog items selected to be executed during each sprint. This include plan to deliver product increment also. As new work is required to be added, the development team or scrum team adds it to sprint backlog. As work is performed/completed estimation of remaining work is done and from it burndown chart is made.
Burn down chart- As mentioned the burn down chart plots remaining effort versus days. This gives estimation on when the work is going to be completed.
Scrum Events/Ceremonies - Sprint planning, daily scrum meetings, sprint review and sprint retrospective are scrum ceremonies.
Sprint review- It is time boxed meeting to review work carried out in a sprint. It should be about 4 hour long.
-In this meeing Product Owner identifies what is done and what is not done.
-Development team discuss what went well, how issues resolved during the last sprint.
-Entire group decides on what to be done next.
Sprint retrospective- It is also time boxed meeting for the sprint and done after sprint review meeting. It should be about 3 hour. The purpose of sprint retrospective is to create a plan to implement whether any improvement is required to the way last sprint went.
Definition of DONE
When some requirement from product backlog or sprint backlog is completed or DONE, the same need to be compared with acceptance criteria which is also called as 'definition of DONE'. This definition of DONE varies with product to product and it has to be finalized or agreed upon at the start of the project between customer and product owner.
Waterfall versus Scrum Agile SDLC
The figure below compares waterfall vs iterative waterfall vs scrum agile methodologies. The idea behind agile environment is to perform concurrent activities of requirement,planning,Coding,testing,review,release(deploying) phases. These were carried out sequentially in waterfall model. Hence as shown in the figure in waterfall model problems/issues will be known much later. The idea behind agile way of managing project is to carry out above mentioned phases in each sprint multiple times as shown in figure. Hence in scrum agile method issues are known much earlier in the project and review is carried out so often within the sprint duration that helps a lot.
More over in waterfall model requirements need to be worked out in detail at the start of the project and there is no room to change or take new requirements in between project execution, While in scrum agile model new requirements can be taken up during execution of the project and will be worked upon and consecutively all the phases will be executed. In Waterfall one can have release after long time at the end of the project unless few milestones are planned by project manager, While in scrum agile model more releases of the product will be available compare to waterfall due to more sprint planning in the same duration as that of waterfall model.
Finally in waterfall model estimation of tasks is done in time (Man hours,days,weeks or months) while in agile scrum it is done in story points. Each iteration is called as phase in waterfall while in agile scrun it is called as sprint as mentioned earlier.
I presume that the article would have provided basic knowledge on scrum and scrum life cycle used in agile software development/management. It should have covered principles behind agile manifesto. More knowledge on agile can only be achieved by applying the concepts practically and continuously.