Agile Software Development Framework: SCRUM
In software engineering parlance, SCRUM refers to an agile system development framework. It is mostly suited for developing software and information systems. Agile software development methodologies are mainly focused in iterative and incremental system development. Based on an initial set of requirement specifications, the system development process starts, then there are multiple iterations and in each iteration the system is built incrementally. Usually, agile approaches require small team of developers who take multiple roles. Sometime, agile approaches require lesser documentation compared to the traditional system development approaches like waterfall, iterative model and so on. Each iteration requires continuous end user involvement and review of the partial product. Based on the review, feedbacks, and the outcome of the testing process, the requirement specifications are updated for the next iteration (Rubin, 2012).
SCRUM is a subset of the agile system development frameworks followed in the industry. It is a lightweight framework and widely used. More precisely, SCRUM can be referred as a process framework where a defined set of practices are followed so that the process is consistent with the standards of the SCRUM framework (Popli & Chauhan, 2011). Like any other agile methodology, SCRUM also needs to adhere to the agile manifesto. In the SCRUM framework, there are multiple iterations or development cycles, known as sprints. SCRUM is said to be a lightweight framework as there is little overhead in the management tasks. So the project team can utilize most of the productivity on the actual system development tasks. Hence, it helps to meet the deadlines and stay within the budget (Rubin, 2012).
In the following sections of the report, details about the SCRUM framework have been discussed in details.
Unlike traditional software development methodologies, SCRUM does not require complete and detailed requirement specifications at the beginning of the project. Rather, it can start with an idea or concept of the product and set some definite goals, requirements for a sprint. When the sprint is completed, the partial product is reviewed and then the next set of the requirements are defined. Hence, the sprint planning meeting are important to decide the requirements to get the desired outcome. There is no entry criteria, exit criteria, validation criteria or task definitions for sprints (Rubin, 2012).
The project team is very important for SCRUM. Rather than a project manager, SCRUM projects have SCRUM masters who is responsible to co-ordinate the project. The teams are small. So, teams are cross-functional and self-organizing. No manager is present there to assign tasks to the members. Rather the tasks are recorded in a product backlog. The team members choose to carry out the tasks. If some issues arrives, the team members collaborate to find a solution and work on it. Every team member must participate in the project from conceptualization to the implementation of the product.
Two major roles in a SCRUM team are the SCRUM master and the PO or the Product Owner. SCRUM Master can be considered as a coach rather than a project manager. The SCRUM master is responsible to monitor whether the team members are following the SCRUM framework properly or not and ensuring whether they are meeting the rules at the highest level or not. On the other hand, a PO or Product Owner is responsible for coordinating among the team members, customers, end users and other key stakeholders. The other role is the SCRUM team. The team members may have different designations when they join the team. But all of them must fulfill the role of a SCRUM team member where the titles become insignificant. The team members may have to take different roles during the project.
A SCRUM project consists of multiple sprints. Each sprint is time-boxed for 14 days to 30 days. Team members follow product backlogs and sprint backlogs. The documents contains list of the tasks to be done in each sprint. It also helps to track the project progress. SCRUM requires daily sprint meetings to discuss about the project. Each sprint has a review session at the end of the sprint. PO needs to demonstrate the PSI to the other key stakeholders. SCRUM highly focuses on the synchronization of the project team members.
The artifacts are,
- Product Backlog
A product backlog consists of an ordered list. The ordered list contains product requirements. A SCRUM team follows the product requirements. Different product logs may have different formats like use cases, user stories etc. These requirements help to define non-functional requirements, various bug fixes. Product owner needs to prioritize the PBIs or the Product Backlog Items by considering the business value, risks, sizes, dependencies and the dates. The delivery of the product backlog depends on the sequence of the delivery. All stakeholders must be informed by the product owner about the delivery of the items and the order of the PBIs. A product backlog must contain the assessment of the business value, required development effort and so on. The estimations help to track the timeline of the project and the progress. The tracking may influence the sequence or ordering of the PBIs. It is the responsibility of the product owner to add business value to each item in the product backlog. The estimated complexity of each item is determined the project team and their contribution to the project.
The product owner advocates the roles assigned to him/her. The maximization of the value of the product is the responsibility of the product owner. The product owner collects inputs about the partial product and feedbacks from the stakeholders. Then it is the responsibility of the product owner to manage the stakeholders and update the requirements if it is necessary. So, a product backlog contains information about the requests for modification of a product. The details include information about addition of new features, removal of new features or updating any feature. It also helps to ensure the development team to maximize the benefits for the business.
- Sprint Backlog
SCRUM task board contains sprint backlog. It serves as a list of works to be done in the next iteration. A SCRUM team progressively prioritize the product backlog items to finish the produce. However, the system development team must be aware of the fact that the past performance may not be adequate to estimate the future ‘effort’ required for the next sprint (Vlaanderen, Jansen, Brinkkemper, & Jaspers, 2011).
A product backlog item is broken down into multiple tasks. Unlike traditional system development project, SCRUM project needs self-organizing project teams. The spring backlog contains to-do lists for the developers. Even though SCRUM allows changes during the system development process, but it does not allow adding any additional work to a sprint backlog once the backlog is committed. However, in special cases, team members are allowed to make changes. After delivery of a sprint backlog, the product backlog is reprioritize and analyzed. If necessary, it will set functionalities for the next spring.
- PSI or Potentially Shippable Increment
PSI or Potentially Shippable Increment is the accumulation of the all backlog items completed in a sprint along with the work done in the previous sprints. Hence, at the end of an iteration or sprint, a PSI must be completed. According to the DoD or Definition of Done by a SCRUM team, a PSI must be usable, and fully functional. However, it is up to the product owner, who may release it.
Some of the other artifacts used in SCRUM based project are,
- A spring burn-down chart is displayed publicly. It shows the due work in a spring backlog. Such a chart is daily updated. It is useful to get an idea about the progress in a sprint. It also offers some visual aids to reference. The horizontal axis refers to the total days in a sprint. On the other hand, the vertical axis shows the remaining workload due for the next days in the sprint. At the time of planning for a sprint, the burn-down chart is prepared. Then it is updated as team members pick different items from the sprint backlog (Vlaanderen et al., 2011).
- A release burn-up chart offers visibility of the project as well as the ability to track the progress in a sprint. The progress towards the end of a sprint is updated. The horizontal axis shows the progress. Progress must meet the forecasts and scope of the project. While monitoring the progress, it needs to be plotted on a graph so that the forecast scope can be understood. It helps to check the amount of work done, added or removed (Sims & Johnson, 2012).
- DoD is the exit criteria for a sprint when a backlog item is completed. It may require the DoD to complete regression analysis test.
- Velocity refers to the effort needed for a sprint. It is derived from the calculation of work done in previous sprint. So, historical values are useful to understand it.
- Spike refers to a time boxed timeframe used for researching a concept or for developing a prototype. The objective and delivery of a spike must be mutually discussed and agreed between a product owner and team members. However, spikes do not require any commitment like the sprints. And it may or may not deliver any shippable content like in a sprint. Hence, the delivery of a spike may not be valuable, shippable, and tangible (Łukasiewicz & Miler, 2012).
- A tracer bullet refers to a spike in the current architecture of a product backlog.
Benefits of SCRUM
SCRUM provides various benefits to project teams, organizations, individuals and products. Some of those benefits are,
- Each project has its vision and goals. SCRUM framework is based on continuous feedbacks. The exposure that helps to ensure that the quality of the product is high. SCRUM helps to define and elaborate the requirements about the product features. It also helps to incorporate feedbacks from the product owner and other key stakeholders through sprint reviews (Scharff, 2011). Quality control is also conducted through meeting the DoD requirements and through continual improvement.
- SCRUM helps to deliver products faster to the customers. Earlier product development initiation helps to avoid the documentation phase and to focus on the actual system development process (Landaeta, Viscardi, & Tolk, 2011). Other than that, there is a dedicated product owner to elaborate the system requirement as and when required with the team member. The product owner is also responsible to clarify the issues progressively if needed (Sims & Johnson, 2012).
- In SCRUM, the high priority features are separated from the low priority features. Then focus is given on developing the high priority tasks before the low priority ones. So, it does not need to wait until the completion of the project to check whether high priority features are useful or not (Landaeta et al., 2011).
- All products developed in a sprint are shippable increments (Sims & Johnson, 2012).
- As the time to be on market is decreased for a project, so the return on investment or ROI is increased. The targeted benefits and revenue are generated faster. In traditional processes, higher time means higher return on investment. The regular feedbacks, communication to the stakeholders, and participation of the end users in the system development process help to cut down the cost and increase the time to market benefits. It also helps to reduce the number of issues and bugs. The up-front testing and automation also helps to reduce the wasted work. That leads to deployments faster. It also reduces the cost of failure. SCRUM also helps to detect failure earlier (Łukasiewicz & Miler, 2012).
- SCRUM helps to achieve higher satisfaction of the customers. The collaboration between the customers, key stakeholders and end users help in better engagement with the end users. The expertise of PO also helps to deliver higher satisfaction to the end users. The product backlog and the prioritization techniques help to respond faster. In SCRUM, the working functionalities of a product are demonstrated to the customers (Łukasiewicz & Miler, 2012).
- SCRUM team morale are generally high for successful projects. Dedicated and committed team members are self-organizing and the communication helps to build higher team morale. The self-organizing team helps to let the team members more informative, and creative. The team also acknowledge the skills and expertise of the members. Usually, development team follows same team structure and standards. The decisions of a SCRUM team member is balanced between the members and their lives. Continuous end user participation allows to communicate with the product owner and the end users. So, it helps to build better peer relationships. SCRUM helps to focus on the sustainability of workplace. The face-to-face communication helps to communicate faster and better. The support and trust among the team members of a SCRUM team helps to motivate the team members (Łukasiewicz & Miler, 2012).
- The increased ownership and collaboration among the team members helps to improve the overall performance of a project following the SCRUM framework. The daily sprint meetings allow to organize the work and set the priorities. In the sprint reviews the PO communicates with the development team on the prioritization decisions. The PO also demonstrates the partial products with the other stakeholders. Sprint retrospective helps to review past work and follow better practices in the next sprint. The co-located environment helps the team members, scrum master and the product owner to make decisions faster and having clear communications (Bannerman, Hossain, & Jeffery, 2012).
- SCRUM follows definite and various metrics to measure the performance of the project, project cost etc. It helps to make better data driven decisions. It also helps to visualize the effort of the team members and to take decisions. Relative estimates help to use the knowledge and capabilities of individual team members. The artifacts like the burn-down chart, sprint backlogs etc. help to understand the progress. The comparison of the actual cost, and estimated future cost is assessed at the end of every sprint. It helps to understand the value of the current project and whether the project is on budget or not (Bannerman et al., 2012).
- SCRUM offers improved exposure and visibility. All members of a project team can have an idea about the project at any point of time. The visibility and transparency of the SCRUM model help to identify or predict the project progress. The open communication among the customers, stakeholders, and other project team members help to get daily insight into the project. Sprint reviews help to demonstrate the achievements before the product owner (Gold & Vassell, 2015).
- SCRUM helps to increase the project control by utilizing various opportunities and by tracking the project performance continuously. Adjustments of the priorities throughout the project life cycle helps to meet the milestones and follow an optimized project schedule. The adaptability to changes make SCRUM more flexible (Sims & Johnson, 2011).
- SCRUM helps to reduce or mitigate risks like project failure, wasting more time on a single task, no return on investment, or late delivery of end products. SCRUM focuses on completion of the high risk items first by setting appropriate priorities (Gold & Vassell, 2015). Regular assessment by using the sprint reviews, backlogs etc. help to stay on the track in terms cost and time. The DoD of the requirements for each sprint help the project sponsor to understand the completed features and functionalities. Constant feedback also helps to reduce risks (Moran, 2014).
Limitations of SCRUM
Even though SCRUM is an effective and widely used agile approach for software development, it has some limitations as described below.
- SCRUM needs the project team members to co-locate. It does not work well when a project team members work part time in the project or are geographically dispersed. SCRUM requires the developers to work closely and there must be ongoing interactions between the project team members and the end users or the customers (Paasivaara, Lassenius, & Heikkilä, 2012). Even though the advancement of the information and communication technologies help remote team to work closely and collaborate online, but according to the agile manifesto, it needs the project members to have face-to-face communication (Sims & Johnson, 2012).
- In SCRUM, team members need to possess specialized skills. As it needs the project team members to perform different roles so they need to have multidisciplinary skills. SCRUM leadership helps to manage such team. So, a team that does not have such members, is not suited for SCRUM. They may not be able to contribute in a project if they done have multidisciplinary skillset.
- If the product to be developed by the SCRUM approach has various external dependencies, then it needs to divide the entire workload into multiple sprints. However, there are issues such as delay in different teams so it become difficult to merge the deliverable or follow the dependencies (Sims & Johnson, 2011).
- Legacy systems, or systems with some regulated quality control are not suitable for SCRUM. Such products need to be developed in one sprint and that makes it difficult. Products that needs rigorous regression testing, safety testing etc. are also not suited for SCRUM (Sims & Johnson, 2012).
From an organization’s perspective, SCRUM helps to develop suitable solutions. However, the degree the efficiency of the system depends on how the organization has carried out the plan.
SCRUM is a widely used agile framework. Due to the simplicity and cost-effectiveness of the SCRUM framework, it has gained popularity worldwide. It is mostly suited for software development projects. However, in special cases it may be used in other king of system development projects. SCRUM is different than the traditional system development frameworks. There are three major roles, SCRUM master, product owner and the SCRUM team. All of them communicate, co-locate and work closely to make a project successful and to deliver high quality product to the end users or the customers. A SCRUM team is self-organizing in nature. The team members take multi-disciplinary roles. There are various benefits of SCRUM, for example faster deliver, higher customer satisfaction, cost-effectiveness, improved visibility and control, high team morale and so on. All these make SCRUM more important for software development projects. However, there are various limitations like SCRUM is not suitable for remote teams, for developing large or complex real-time systems or legacy systems, SCRUM is also not suitable for mission critical projects. The SCRUM team must adhere to the SCRUM guidelines and standards. SCRUM master manages a SCRUM team and helps to keep the team morale high. On the other hand a PO works with the team members to clarify their queries, to help them in understanding the requirements and to co-ordinate among the stakeholders, customers and project team members. The report will help to understand SCRUM framework, its benefits, limitations etc. in detail