Scrum is a lightweight agile project management framework mainly used for software development. It describes an iterative and incremental approach for project work.
Overview of Scrum Framework
Scrum can be used in all kinds of software development: for developing complete software packages, for developing only some parts of bigger systems, for customer or internal projects.
The Scrum Framework implements the cornerstones defined by the agile manifesto:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
The Scrum Framework itself is very simple. It defines only some general guidelines with only a few rules, roles, artifacts and events. Nevertheless each of these components is important, serves a specific purpose and is essential for a successful usage of the framework.
The main components of Scrum Framework are:
The three roles: Scrum Master, Scrum Product Owner and the Scrum Team
A prioritized Backlog containing the end user requirements
Important in all Scrum projects are self-organization and communication within the team. There is no longer a project manager in a classical sense. In the Scrum Framework the Scrum Master and the Scrum Product Owner share his responsibilities. However, in the end the team decides what and how much they can do in a given project iteration (Sprint).
Another central aspect within the Scrum Framework is continuous improvement: inspect & adapt. The Scrum Teams have to frequently inspect and assess their created artifacts and processes in order to adapt and optimize them. In the midterm this will optimize the results, increases predictably and therefore minimize overall project risk.
The Scrum Framework tries to deal with the fact that the requirements are likely to change quickly or are not completely known at the start of the project. The low-level requirements are only defined at the time when they are going to be really implemented. In Scrum, changes and optimizations of product, requirements and processes are an integral part of the whole engineering cycle.
Another cornerstone of the Scrum Framework is communication. The Scrum Product Owner works closely with the Scrum Team to identify and prioritize functionality. This functionality is written down in user stories and stored in a Scrum Product Backlog. The Product Backlog consists everything that needs to be done in order to successfully deliver a working software system.
The Scrum Team is empowered to only select the user stories they are sure they can finish within the 2-4 weeks of Sprints. As the Scrum Team is allowed to commit their own goals they will be more motivated and work with best possible performance. The Scrum Master is another important role in the Scrum Framework as it works as a servant-master with the Scrum Team. His/her main tasks are to make the Scrum team understand how Scrum operates, to protect the Scrum Team from external interruptions and to remove impediments that hinder the Scrum Team to reach its maximum productivity.
The Scrum Framework in its simple form is best used for smaller, one-team projects. But with the introduction of additional roles like the "Chief Scrum Product Owner" it is also usable in bigger multi-teams and/or distributed-team projects.