making software in a changing world · andrea delage 2018 the 12 principles behind agile - 1 our...
TRANSCRIPT
AGILE Making software in a changing world
Andrea Delage 2018
Andrea Delage 2018
Course Content
Why Agile?
What is Agile?
Common Agile practices and tools
Popular Agile methods and frameworks
The Scrum framework
HOW DID IT ALL START?
A very brief history of project management
Andrea Delage 2018
Waterfall Model
Requirements
Design
Deployment
or Predictive Model
Implementation
Verification
Andrea Delage 2018
V-model
Requirements
analysis
High level
design
Detailed
design
Implementation
Unit testing
Integration
testing
System testing
Project completion
Abst
ract
ion
Andrea Delage 2018
Spiral model
Determine objectives
Identify and resolve risks
Plan next iteration
Develop and test
Andrea Delage 2018
Predictive versus adaptive
Predictive management
Adaptive management
Andrea Delage 2018
Why did it start predictive?
Andrea Delage 2018
1991
Between 1990 and 2000
Dynamic Systems
Development
Method (DSDM)
Crystal Methods family
Feature-Driven
Development
(FDD) Rapid Application
Development
(RAD)
Extreme
Programming (XP) Scrum
Unified Software Development Process
Adaptive Software
Development
(ASD) Continuous
Integration
Andrea Delage 2018
The Agile Manifesto
• Individuals and interactions > processes and tools
• Working software > comprehensive documentation
• Customer collaboration > contract negotiation
• Responding to change > following a plan
“That is, while there is value in the items on
the right, we value the items on the left more.”
Andrea Delage 2018
The 12 principles behind Agile - 1
Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
Andrea Delage 2018
The 12 principles behind Agile - 2
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity - the art of maximizing the amount of work not done - is essential.
The best architectures, requirements, and designs emerge from self-organizing
teams.
At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Andrea Delage 2018
Agile Principles (Summary) - 1
The product:
Highest priority: satisfy the customer
Early and frequent delivery
Working software as primary measure of progress
Changing requirements are welcome.
Simplicity
Andrea Delage 2018
Agile Principles (Summary) - 2
The team:
Collaboration
Face-to-face conversation
Self-organizing teams
Regular reflections and improvement
Trust
Supportive environment
Andrea Delage 2018
Waterfall vs Agile – Client perspective
Requirements Design Deploy
ment Implementation Verification
Need
? ? ? ? ? ? ? ? ? ? ?
Need
AGILE TOOLS AND PRACTICES
Andrea Delage 2018
Common Agile practices and tools
User Stories
Story Points
Velocity
Planning Poker (or Planning game)
Story Map
Product Backlog
Andrea Delage 2018
What is a user story?
"A user story is a promise for a conversation.“ - Alistair Cockburn
A short, simple, informal description of a system’s
feature.
Often written on an index card
Different templates exist
Andrea Delage 2018
User Stories
I want to
so that
As a
Andrea Delage 2018
User Story Example
I want to see the feeding
time of the animals
so that I can plan my day
at the zoo
As a zoo visitor
10:00 Wolves
11:30 Lions
Andrea Delage 2018
User Stories
A User Story IS NOT:
a requirements specification
A User Story IS:
a starting point for a conversation, written in the client’s language
A User Story should:
ideally be made of words and images
Andrea Delage 2018
The 3 C’s
Confirmation
Described by Ron Jeffries in “Essential XP: Card, Conversation, Confirmation”
Conversation Card
=> User Story => Discussing the
details
=> Acceptance Test
Andrea Delage 2018
User Story card – Additional information
Corners can be used for:
Effort estimates
Actual effort
Importance
Risk estimate
The 3Cs technique proposes to put the conversation
below the story.
Sketches
Back of the card:
Acceptance test,
Or list of conditions of satisfaction
Colors for categories (optional)
Andrea Delage 2018
Acceptance Test
What shows that the Story is done?
From the client’s / user’s point of view
Example:
”When I choose a month, the system shows me a list of
my friends who have their birthday in that month.”
Put on the back of the index card (User Story)
Used to check if the Story is effectively done.
Andrea Delage 2018
Conditions of satisfaction - Example
User Story:
“As a buyer, I want to remove items from my shopping cart so
that I will buy only the things I really want.”
List of conditions of satisfaction:
The buyer can choose the item to remove from his cart.
The item will be no longer in his shopping cart.
The total sum of the buyer’s shopping cart is updated.
The available quantity of the item in the shop is
increased.
Andrea Delage 2018
INVEST in User Stories
A good user story should be:
The INVEST mnemonic was invented and published originally by Bill Wake (2003).
ndependent
egotiable
aluable
stimable
mall
estable
Andrea Delage 2018
Story Gathering Workshop
Andrea Delage 2018
Bigger than User Stories
Called “Epic”
by Mike Cohn
(and others)
Called “Activity”
by Jeff Patton
Stories (far) too big for an iteration
= very high-level stories
Andrea Delage 2018
General Agile planning rules
User stories are written.
Release planning creates the release schedule.
Make frequent small releases.
The project is divided into iterations.
Iteration planning starts each iteration.
Andrea Delage 2018
Effort estimation process
Who? The Development Team
Estimation styles:
Free form
Card sorting
Planning Poker
Based on:
Gut feeling
Yesterday’s weather
Using Story points
Andrea Delage 2018
Story Points
Agile unit to estimate effort
Simple
Estimate must include everything involved in
getting the item all the way to done.
What matters are the relative values.
Team chooses the scale:
Simple number range like 1 to 5, or1to 10 or 0.5 to 100, or …
Fibonacci sequence: 1, 2, 3, 5, 8, 13, 21, …
Alternative: T-Shirt sizes
Andrea Delage 2018
Estimating with index cards
smallest huge
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
As a role, I want do stuff so that I get results.
Andrea Delage 2018
Planning Poker™
Based on Delphi estimation method
Fixed set of number cards for each participant
Goal: Convergence to a (hopefully) realistic estimation
Andrea Delage 2018
Effort estimation with T-Shirt sizes - Example
Andrea Delage 2018
Any questions?
Andrea Delage 2018
Agile-Tools
There are a lot of tools for Agile projects:
Jira, Trello, Google Spreadsheet, Excel, Framaboard, Zoho,
VivifyScrum, LeanKit, …
But the by far most successful are:
GASP
AGILE METHODS,
PROCESSES, AND
FRAMEWORKS
Andrea Delage 2018
Agile methods, processes, and frameworks
Lean
Kanban
Extreme Programming
Scrum
Crystal methods
… Not part of this course
LEAN
Andrea Delage 2018
Lean
Originally “Lean Manufacturing”
From Toyota productions
Now:
Lean startup
Lean product development
Lean software development
Lean construction
Lean services
….
Andrea Delage 2018
Lean philosohpy
Everything that does not add
value for the customer is waste.
Andrea Delage 2018
Lean principles
Eliminate waste
Amplify learning (from feedback)
Decide as late as possible
Deliver as fast as possible
Empower the team
Build integrity in
See the whole
Andrea Delage 2018
Lean: Waste in software development
Building the wrong feature or product
Waiting
Multi-tasking
Ineffective communication
Partially done coding eventually abandoned
Features not often used by customers
Defects and lower quality
Knowledge loss
KANBAN
Andrea Delage 2018
Kanban core principles
Limit work in progress
Focus on flow
Improve continuously
Visualize work
Andrea Delage 2018
Kanban Board
Image: © Rosenfeld Media (https://www.flickr.com/photos/rosenfeldmedia/35473617030)
XP Extreme Programming
Andrea Delage 2018
Extreme Programming (XP)
Created in 1996 by Kent Beck
First applied at Chrysler
First published in 1999 (1)
Modified version (XP2) published in 2004
Defines values and practices
Takes programming to the “extreme”
1 "Extreme Programming Explained: Embrace Change", Addison -Wesley
Andrea Delage 2018
XP Values
Respect
Communication
Courage
Feedback
Simplicity
Andrea Delage 2018
XP practices
Sit together
Whole team
Informative workspace
Energized work
Pair programming
Stories
Weekly cycle
Quarterly cycle
Ten-minute build
Continuous integration
Test-first programming
Incremental design
Open workspace
Pair-programming
On-site customer
40-hour weeks, avoid over-time
Collective ownership
Planning game
Refactoring
Continuous integration
Rules can be changed
Unit tests by programmers,
functional tests by customers
Small releases
Simple design
XP
1 X
P2
Andrea Delage 2018
Test-First Programming
Basic principle: Create the test before the code
1. Write a test that should pass when task is finished
2. Run the test to see it fail
3. Write code until test passes
Do this for each functionality you will implement.
TDD = Test Driven Development
Andrea Delage 2018
Pair programming
Image: By Lisamarie Babik - Ted & IanUploaded by Edward, CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=9546406
Andrea Delage 2018
Pair programming - Benefits
Collective code ownership
Less bugs
Better integration of new collaborators
Less distraction
Less interruption
Less slacking
Learning from one another
Andrea Delage 2018
Planning game
(once per iteration, typically once per week)
Part 1: Release planning (developers + customer + business people)
high-value requirements are written on user story cards
Developers commit themselves to the included functionality and the next release
date
The plan is adjusted as needed / requested
Part II: Iteration planning (developers)
Translate requirements into tasks and write them on task cards
Assign tasks to developers and estimate time
Perform tasks and match results with the user story
Andrea Delage 2018
When not to use XP
Too big teams
Unbelieving customers and organizations
it cannot work in a culture of continuous extensive overtime
Customers who insist on a thick specification document
Change-hampering technology or constraints
e.g. replacing a database that must be compatible with 143 different
applications
e.g. technology that makes a build take 12 hours
e.g. insufficient opportunity for immediate communication