Tuesday, January 8, 2008

SCRUM Models

SCRUM Process Models

The SCRUM process model is an agile and lightweight process which is used to manage and control software and product development using iterative, incremental practices. The term “scrum” comes from the rugby, where its definition is getting the ball back into the field of play. Everybody in the pack acts together with each other to move the ball down the field.As for the case in software development, it mainly refers to the organization and its management technique which is being used to successfully deliver its end-software in a chaotic environment.
The SCRUM approach assumes that its baselines will change very much during the project implementation. In an environment where things are uncertain, empirical methods are used to monitor progress and changes, rather than the use of definitive methods in an attempt to predict its progress and stop changes.It also looks forward to changes which are made, as this means the end result and product will be one which is more closely catered to the customer's needs at the end of development. But SCRUM is not, without its own structure and control mechanisms.

There are 2 main principles for SCRUM:
-Iterative Development: The project deliverables are built over several iterative development cycles, which each cycle each adding additional features onto the product, and each would then result in demonstratable results like writing codes which are working, written documentation and viewable designs etc.

-Team Empowerment: This means that the project team would divide itself into self-managing multi-function units called Sprint Teams. In most cases, each team consists of around seven or eight people. The team is empowered to use any development methods or tools which they think would help them deliver the deliverables.

In SCRUM, these are the following main points:
-A product backlog of which work being priortised are to be done first;
-The completion of a fixed set of backlog items which would be in a series of short iterations or sprints.
-A brief daily meeting or scrum, in which progress on the project is explained, upcoming work is explained and impediments are raised upon.
-A brief sprint planning session whereby the backlog items for the sprint will be defined and explained.


A brief sprint retrospective, in which all team members would reflect ont the past sprint.
The Scrum process is led by a ScrumMaster, whose main job is to remove impediments to the ability of the team in order to deliver the sprint goal. The ScrumMaster is not the leader of the team but is a medium between the team and distracting influences.
Scrum would enable the creation of self-organizing teams as it encourage the co-location of all team members and also verbal communication across all team members and disciplines who are involved in doing the project.


The key principle of Scrum is that during a project the clients can change their minds about their needsr, and that fundamentally empirical challenges cannot be addressed successfully in a traditional predictive or planned manner. Therefore, Scrum adopts an empirical approach and this means accepting that the problem cant be fully understood or defined and would instead focus i on maximizing the team's ability to deliver efficiently and respond to emerging requirements.

Main stages/roles in SCRUM:
Product owner: Direct the product, sprint by sprint, to provide the greatest ROI and value to the organization. Also manages ROI through priority and release plans and is the only sole owner of the product backlog. They also set development schedule by prioritizing backlog.The allocating of one person in this role would ensure that only one set of requirements drives development. These requirements can be easily influenced by committees, management, customers, but the owner is the only person that prioritizes. The product owner can also eliminate confusion of multiple bosses, different opinions, and interference.

-SCRUM Master: One person would take on the role of ScrumMaster to see the team on a day to day basis. The ScrumMaster doesn't need to do anything else because just the workload of ScrumMaster is a full time job.He/she is responsible to make sure that a Scrum team lives by the values and practices of Scrum. The ScrumMaster also protects the team from aggressive customers by making sure they do not over commit themselves to what is their extent which they can achieve during a sprint. The ScrumMaster also facilitates the daily scrum and is responsible for removing any obstacles that are brought up by the team during meetings. The ScrumMaster role is mostly taken by a project manager or a technical team leader it can be likewise.

-The sprint: It is a fixed period to develop a deliverable product increment. It is time boxed and it is more important to fall short than to slip the date. The Sprint would includes the designing, coding, testing, and documentation of codes. Once a Sprint has started, only the Scrum Team can add or remove items in Sprint backlog. Abnormal termination of Sprint is needed when the Sprint Goal no longer makes any real sense. A Special Release Sprint -- Releasing software to production would require a special sprint known as the “Release Sprint” Like any other sprint; the release sprint team is dedicated ONLY to releasing the software during that period of time It is used to package software, final regression tests, move through the various environments and release to production. This can be made up of a subset of team members who are from the original development sprints.

-The sprint planning meeting: This is when the product Owner would describe highest priority features to the team, and the team would then decide what they can commit to delivering in the Sprint. This occurs within two consecutive meetings whereby the goal is set and the team plans the tasks to create the Sprint Backlog.

-The daily SCRUM: This is a daily 15 minute status meeting held in the same place and time every day. Each team member will address the following three questions.1. What have you done since the last Scrum?2. What will you do between now and the next Scrum?3. What got in your way of doing work?

-The sprint review meetings: At the end of each sprint ,this is held. During this , the Scrum team would demonstrate what they completed during the sprint phase. Mostly ,this is in then form of a demo. Participants in the meeting include but are not limited to the Product Owner, the Scrum team, the ScrumMaster, management, customers, and engineers from other projects. During this meeting the project is compared to the sprint goal determined during the Sprint planning meeting. Optimally, the team has completed each product backlog item brought into the sprint, but however it is more critical that they accomplish the goal of the sprint.

-Sprint retrospective: This is facilitated by the ScrumMaster, this meeting discusses the just concluded Sprint and then determines what could be changed that might make the next Sprint more fun and productive. The Sprint Review also looks at what the team are building whereas the Retrospective looks at they are building towards to. Any factors that affects how the team builds software is also open for discussion such as the processes, practices, communication, environment, and tools.Scrum should be seen as a framework that should be adapted appropriately for any given project, team and specific situations. The Sprint retrospective is a critical that allows a team to continuously improve through the life of the project itself.

-Product backlog and sprint backlog: Product backlog and sprint backlog
A backlog is the list of prioritized items that are to be developed for a software product. The product backlog is maintained by the Product Owner and is actually a list of requirements that are from the client. The sprint backlog is the Team's interpretation of the product backlog and would contains concrete tasks which will be be done during the next sprint to implement some of the top items in the product backlog. The product and sprint backlogs are therefore two totally different things in these cases.


-Sprint planning: Prior to every sprint the Product Owner, the Scrum Master and the Team will have to make a decision on what the team will work on during the next sprint. The Product Owner maintains a prioritized list of backlog items, the product backlog in which that can be reprioritized during sprint planning. The Team selects items from the top of the product backlog. They would select only as much work as they can be committed to finishing. The Team then plans the architecture and design of how the product backlog which could be implemented. The product backlog items are then broken down into smaller tasks that become the sprint backlog.


Advantages:
-Delivers the highest business value features first and will always look to try and avoid building unrealistic features. Industry data shows that about half of the software features developed are never used, therefore, development can be completed in half the time by avoiding doing the unnecessary work.
-Development are very often slowed down by issues like impediments during the daily meetings or planning and review meetings. Using Scrum, these issues are prioritized and taken away, increasing effectiveness and quality output.

-Removes management pressure from teams as teams are allowed to select their own work, and then self-organize them through close communication and mutual agreement within the team on how to accomplish the work in a best possible way.

Disadvantages:
-Scrum is a team-based approach ,so if members of the team do not cooperate,the project would not be a success.
-Needs feedback from its clients on the deliveries,therefore it requires a lot of customer involvement.

Done by: Jianxuan

2 comments:

prsp said...

- In SCRUM, how many "iterative development cycles" can there be?

- Can SCRUM be used for projects with small teams of < 10 people?

-

prsp said...

What do you mean by "highest business value features"? Give examples.