RPL - 03 - Agility & Process
RPL - 03 - Agility & Process
3
Agility and the Cost of Change
4
An Agile Process
• Is driven by customer descriptions of what is required
(scenarios)
• Recognizes that plans are short-lived
• Develops software iteratively with a heavy emphasis on
construction activities
• Delivers multiple ‘software increments’
• Adapts as changes occur
5
Agile methods
• Dissatisfaction with the overheads involved in software design
methods of the 1980s and 1990s led to the creation of agile
methods. These methods:
• Focus on the code rather than the design
• Are based on an iterative approach to software development
• Are intended to deliver working software quickly and evolve this quickly to
meet changing requirements.
• The aim of agile methods is to reduce overheads in the software
process (e.g. by limiting documentation) and to be able to respond
quickly to changing requirements without excessive rework.
6
The principles of agile methods
Principle Description
Customer involvement Customers should be closely involved throughout the development
process. Their role is provide and prioritize new system requirements
and to evaluate the iterations of the system.
Incremental delivery The software is developed in increments with the customer specifying
the requirements to be included in each increment.
People not process The skills of the development team should be recognized and
exploited. Team members should be left to develop their own ways of
working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the system
to accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in the
development process. Wherever possible, actively work to eliminate
complexity from the system.
7
SCRUM
SCRUM
• Scrum (the name is derived from an activity
that occurs during a rugby match) is a very
popular agile software development
method that was conceived by Jeff
Sutherland and his development team in
the early 1990s
36
Extreme Programming (XP)
• XP Design
• Encourage the use of CRC
cards
• For difficult design problems,
suggests the creation of
“spike solutions”—a design
prototype
• Encourages “refactoring”—
modifying/optimizing the
code in a way that does not
change the external behavior
of the software
37
Extreme Programming (XP)
• XP Coding
• Recommends the construction
of a unit test for a store before
coding commences
• Encourages “pair
programming”
• XP Testing
• All unit tests are executed daily
• “Acceptance tests” are defined
by the customer and executed
to assess customer visible
functionality
38
Kanban
• The Kanban method is a lean methodology that
describes methods for improving any process or
workflow
• Kanban is focused on change management and service
delivery
• Change management defines the process through which
a requested change is integrated into a software-based
system
• Service delivery is encouraged by focusing on
understanding customer needs and expectations
39
Kanban
• The team members manage the work and are given the
freedom to organize themselves to complete it
• Policies evolve as needed to improve outcomes
• Kanban originated at Toyota as a set of industrial
engineering practices and was adapted to software
development by David Anderson
40
Kanban Core Practices
1. Visualizing workflow using a Kanban board. The
Kanban board is organized into columns representing
the development stage for each element of software
functionality.
41
Kanban Core Practices
2. Limiting the amount of work in progress (WIP) at any
given time. Developers are encouraged to complete
their current task before starting another. This reduces
lead time, improves work quality, and increases the
team’s ability to deliver software functionality
frequently to their stakeholders
3. Managing workflow to reduce waste by understanding
the current value flow, analyzing places where it is
stalled, defining changes, and then implementing the
changes
42
Kanban Core Practices
4. Making process policies explicit (e.g., write down your
reasons for selecting items to work on and the criteria
used to define “done”)
5. Focusing on continuous improvement by creating
feedback loops where changes are introduced based
on process data and the effects of the change on the
process are measured after the changes are made
6. Make process changes collaboratively and involve all
team members and other stakeholders as needed
43
Kanban Meetings
• The team meetings for Kanban are like those in the Scrum
framework
• The basis of the daily Kanban standup meeting is a task called
“walking the board.”
• Leadership of this meeting rotates daily. The team members
identify any items missing from the board that are being
worked on and add them to the board
• During the weekly retrospective meeting, process
measurements are examined. The team considers where
process improvements may be needed and proposes changes
to be implemented
44