Agile - Primer

Agile is a software development methodology to build a software incrementally using short iterations of 1 to 4 weeks so that the development process is aligned with the changing business needs. Instead of a single-pass development of 6 to 18 months where all the requirements and risks are predicted upfront, Agile adopts a process of frequent feedback where a workable product is delivered after 1 to 4 week iteration.

Agile Vs Traditional SDLC

Roles in Agile

Scrum Master

A Scrum Master is a team leader and facilitator who helps the team members to follow agile practices so that they can meet their commitments. The responsibilities of a scrum master are as follows −

Product Owner

A Product Owner is the one who drives the product from business perspective. The responsibilities or a Product Owner are as follows −

Cross-functional Team

Every agile team should be a self-sufficient team with 5 to 9 team members and an average experience ranging from of 6 to 10 years. Typically, an agile team comprises of 3 to 4 developers, 1 tester, 1 technical lead, 1 product owner and 1 scrum master.

Cross functional Team

Product Owner and Scrum master are considered to be a part of Team Interface, whereas other members are part of Technical Interface.

How an Agile Team Plans its Work?

An Agile team works in iterations to deliver user stories where each iteration is of 10 to 15 days. Each user story is planned based on its backlog prioritization and size. The team uses its capacity − how many hours are available with team to work on tasks − to decide how much scope they have to plan.

Planning

 

Point

A Point defines how much a team can commit. A point usually refers to 8 hours. Each story is estimated in points.

Capacity

Capacity defines how much an individual can commit. Capacity is estimated in hours.

What is a User Story?

A user story is a requirement which defines what is required by the user as functionality. A user story can be in two forms −

During release planning, a rough estimate is given to a user story using relative scale as points. During iteration planning, the story is broken down into tasks.

Relationship of User Stories and Tasks

Relationship of User Stories and Tasks

When a Story is Done

The team decides what done means. The criteria may be −

What is Acceptance Criteria?

Criteria defines the functionality, behavior, and performance required by a feature so that it can be accepted by the product owner. It defines what is to be done so that the developer knows when a user story is complete.

How the Requirements are Defined?

Requirements are defined as

Agile - Manifesto

In February 2001, at the Snowbird resort in Utah, 17 software developers met to discuss lightweight development methods. The outcome of their meeting was the following Agile Manifesto for software development −

We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value −

That is, while there is value in the items on the right, we value the items on the left more.

Twelve Principles of Agile Manifesto

Agile - Characteristics

Iterative/incremental and Ready to Evolve

Most of the agile development methods break a problem into smaller tasks. There is no direct long-term planning for any requirement. Normally, iterations are planned which are of vary short period of time, for example, 1 to 4 weeks. A cross-functional team is created for each iteration that works in all functions of software development like planning, requirements analysis, design, coding, unit testing, and acceptance testing. The result at the end of the iteration is a working product and it is demonstrated to the stakeholders at the end of an iteration.

After demo, review comments are taken and are planned to be incorporated in the working software as required.

Face-to-face Communication

Each agile team should have a customer representative such as a product owner in scrum methodology. This representative is authorized to act on behalf of the stakeholders and he can answer the queries of the developers in between iterations.

An information radiator (physical display) is normally located prominently in an office, where passers-by can see the progress of the agile team. This information radiator shows an up-to-date summary of the status of a project.

Feedback Loop

Daily stand-up is a common culture of any agile development; it is also known as daily scrum. It is a kind of a brief session where each team member reports to each other regarding the status of what they have done, what to do next, and any issues they are facing.

Agile - Daily Stand-up

Daily stand-up, as the name suggests, is a daily status meeting among all the members of an agile team. It not only provides a forum for regular updates but also brings the problems of team members into focus so that it can be quickly addressed. Daily stand-up is a must-do practice, no matter how an agile team is established regardless of its office location.

What is Daily Stand-up?

Why Stand-up is Important?

The benefits of having a daily stand-up in agile are as follows −

Who Attends a Stand-up?

Geographically Dispersed Teams

Stand-ups can be done in multiple ways, in case the agile team members are operating from different time zones −

Agile - Definition of Done

The definition of done for User Story, Iteration, and Release is given below.

User Story

A user story is a requirement which is formulated in a few sentences in everyday language of an user and it should be completed within an iteration. A user story is done when

Iteration

An iteration is a time boxed collection of user stories / defects to be worked upon and accepted within the release of a product. Iterations are defined during iteration planning meeting and completed with an iteration demo and review meeting. An iteration is also termed as a sprint. An iteration is done when

Release

A release is a major milestone that represents an internal or external delivery of working, tested version of the product/system. A release is done when

Agile - Release Planning

The purpose of release planning is to create a plan to deliver an increment to the product. It is done after every 2 to 3 months.

Release planning

Who is Involved?

Prerequisites of Planning

The prerequisites of release planning are as follows −

Materials Required

The list of materials required for release planning is as follows −

Planning Data

The list of data required to do release planning is as follows −

Output

The output of a release planning can be the following −

Agenda

The agenda of a release planning can be −

Agile - Iteration Planning

The purpose of iteration planning is for the team to complete the set of top-ranked product backlog items. This commitment is time boxed based on the length of iteration and team velocity.

Iteration Planning

Who is Involved?

Prerequisites of Planning

Planning Process

Following are the steps involved in iteration planning −

Velocity Calculation

An agile team calculates velocity based on past iterations. Velocity is an average number of units required to finish user stories in an iteration. For example, if a team took 12, 14, 10 story points in each iteration for the last three iterations, the team can take 12 as velocity for the next iteration.

Planned velocity tells the team how many user stories can be completed in the current iteration. If the team quickly finishes the tasks assigned, then more user stories can be pulled in. Otherwise, stories can be moved out too to the next iteration.

Task Capacity

The capacity of a team is derived from the following three facts −

Suppose a team has 5 members, committed to work full time (8 hours a day) on a project and no one is on leave during an iteration, then the task capacity for a two-week iteration will be −

5 × 8 × 10 = 400 hours

Planning Steps

Agile - Product Backlog

A product backlog is a list of items to be done. Items are ranked with feature descriptions. In an ideal scenario, items should be broken down into user stories.

Why Product Backlog is Important?

Characteristics of Product Backlog

Agile - Useful Terms

Acceptance Criteria

It is the conditions set by the product owner or the customer in order to accept a feature to be valid and adhering to their requirements.

Backlog Grooming

It is an ongoing process in which the product manager or the customer manages the product backlog by getting feedback from agile teams. This process involves prioritizing the portfolio items, breaking them in smaller items, planning them for future iterations, creating new stories, updating acceptance criteria or elaborating acceptance criteria in details.

Capacity

It is the amount of work a team can take to complete in one iteration.

Feature

An improvement done to a product or capability of value to stakeholder which can be developed in a release.

Iteration

A theme-based work item that can be completed within a time box and accepted within the release of a product. Iteration work is defined during iteration planning and it finishes with demo and review meeting. It is also termed as Sprint.

Increment

An increment is the changing state of a product as it undergoes gradual development. It is normally represented by milestones or number of fixed iterations.

Product Owner

The product owner is a member of the Agile delivery team, responsible to collect and rank business requirements in the product backlog. A product owner communicates what is to be done in a release/iteration. He/she sets the commitments and is responsible to protect team from any change in requirements during an iteration.

Product Backlog

Set of functional and non-functional product requirements.

Product Backlog Items

May be user stories, defects, features which are to be developed by the agile team.

Points

A common unit used to set the relative size of user stories, features, or any other portfolio items.

Release

A time box where work is done to support delivery of testable increment to a software. In scrum, a release consists of multiple iterations.

Requirement

A specification of a software product to satisfy a stated contract or functionality. User stories and portfolio items are types of requirements.

Story Points

A unit used by the agile team to estimate relative sizes of user stories and features.

Sprint

Same as Iteration.

Timebox

A fixed duration of time in which a deliverable is to be developed. Normally, along with fixing start and end date of a timebox, the number of resources is also fixed.

Task

It is a unit of work that contributes towards the completion of a user story within an iteration. User stories are decomposed into multiple tasks and each task can be divided between team members marking them as owner of the tasks. Team members can take responsibility of each task, update estimates, log work done or to-do as desired.

User Story

A listed acceptance criteria to fulfil certain requirements of a user. It is normally written from the perspective of an end-user.

Velocity

A measure to weight the accepted work in an iteration or timebox. Normally it is the sum of story points accepted in an iteration