Agile methods define how the work should be carried out under agile values and principles to answer the challenges of rapid development and changing requirements. Agility, as characterized by Highsmith [9], is the ability of both creating and responding to change in order to profit in a turbulent business environment.
Ken Schwaber first described Scrum in 1996 [18] as a process that accepts that the development process is unpredictable, formalizing the “do what it takes” mentality, and has found success with numerous independent software vendors. The term is borrowed from Rugby: “[A] Scrum occurs when players from each team huddle closely together . . . in an attempt to advance down the playing field” [10].
According to Schwaber [17], Scrum starts with the premise that software development is too complex and unpredictable to be planned exactly in advance. Instead, empirical process control must be applied to ensure visibility, inspection, and adaptation. The different environmental and technical variables (such as time frame, quality, requirements, resources, implementation technologies and tools, and even development methods) must be controlled constantly in order to be able to adapt to changes flexibly. This is achieved through an iterative and incremental development process.
Scrum implements an iterative, incremental skeleton through three roles: the Product Owner, the Team, and the ScrumMaster [17], as shown in Table 1.
A detailed Scrum flow is shown in Figure 1. According to Schwaber [17], a SCRUM-based project starts from a high-level vision of the system to be developed. After that, Product Backlog is created containing a list of known requirements. So, the items of the Product Backlog are prioritized and divided into small time-boxed iterations (called sprints).
Every task in SCRUM is carried out through Sprints. A Sprint is a 30-day period of development time. Schwaber [17] explains that each Sprint is initiated with a Sprint planning meeting, where the Product Owner and Team get together to collaborate about what will be done for the next Sprint. Selecting from the highest priority Product Backlog, the Product Owner tells the Team what is desired, and the Team tells the Product Owner how much of what is desired can be turned into functionality over the next Sprint. In the first sprints, most of architecture and infra-structure work are done, so less functionalities are released.