Escolar Documentos
Profissional Documentos
Cultura Documentos
tandt@fpt.edu.vn
HCM city, 9- 2011
Agile
Methods
A brief gu
ide to agil
e software
developm
ent
Objectives
0 Software Engineering history & agile
0 What is agile development?
0 The Agile Manifesto
0 The diversity of methods
0 Scrum
0 XP
0 RAD
0 TDD
0 Crystal
0 Kanban
0 Agile mashup
0 The cooperative game
A brief introduction to Agile Software
Development
Agile Basics
Agile projects succeed when the team gets the spirit of
agility.
Ron Jeffries
Continuous improvement
Hyper productive
Kaizen
Agile
Small teams
Lean
Buzzwords
Incremental
Changes
Iterative
Adaptive
A brief introduction to Agile Software
Development
History
SE
Weinberg:
psychology
of computer
program
19681970
Scru
m
X
P
deMarco:
Peopleware
1980
Royce: managing
the development
of large software
systems
1990
2001
1995
200
5
2011
AgileAlliance.
org
Gilb:
Principles of
Software
Engineering
RAD
Declaration
of
Independe
nce
PMI
developed
agile
certifications
DSD
M
Parties
and Concerns
Users?
Customers?
BO?
Developers?
tools
0 Working software over comprehensive documentation
0 Customer collaboration over contract negotiation
0 Responding to change over following a plan
Home ground
comparison
Agile
Low criticality
Senior
developers
Requirements
change often
Small number
of developers
Culture that
thrives on chaos
Plan-driven
High criticality
Junior
developers
Requirements
do not change
often
Large number
of developers
Culture that
demands order
A brief introduction to Agile
Software Development
Formal methods
Extreme
criticality
Senior
developers
Limited
requirements,
limited features
Requirements
that can be
modeled
Extreme quality
11
XP
AgileU
P
Scrum
Method
s
Crysta
l
RAD
Kanba
n
12
Rapid Application
Development
0 One of the earliest method
0 A strategy instead of comprehensive process
0 Utilizing of Prototyping
0 VB Access Method
0 Still useful, esp. prototyping technique
13
Prototyping
0 Early visibility of the
0 Steps:
1. Identify basic
requirements
2. Develop Initial
Prototype
3. Review
4. Revise and Enhance
the Prototype
A brief introduction to Agile
Software Development
14
Scrum
A hyper-productive development model
15
Scrum
0 One of the most successful agile methods
16
Scrum
Team
Scrum Framework
Scrum
Adaption
Artifac
ts
Scrum
Events
Rules
17
of ScrumAlliance
18
Scrum Roles
0 Scrum Master
0 Product Owner
0 Development Team
0 Other parties (all kinds of chicken)
19
Transition of roles
0 Project
Manager
0 Tester
0 Developer
0 System
Designer
0 QA
0 Graphic
Designer
20
Management
Transformation
Managers tell people
and how to do
TO
Team makes
decisions
Information is
transparent
21
Transition of organization
Self-directed Team
Multi-functional
Team
0 Customer-driven
0 Multi-skilled workforce
0 Few job descriptions
0 Information widely shared
0 Few levels of management
0 Whole-business focus
0 Shared goals
0 Seemingly chaotic
0 Purpose achievement emphasis
0 High worker commitment
0 Continuous Improvements
0 Self-controlled
0 Values/Principles based
0 Management-driven
0 Workforce of isolated specialists
0 Many job descriptions
0 Information limited
0 Many levels of management
0 Function/Department focus
0 Segregated goals
0 Seemingly organized
0 Problem-solving emphasis
0 High management commitment
0 Incremental Improvements
0 Management-controlled
0 Policy/Procedure based
22
Development Team
0 Team is cross-functional and consists of 5-9
people
0 There are no set project roles within the team
0 Team defines tasks and assignments
0 Team is self-organizing and self-managing
0 Maintains the Sprint Backlog
0 Conducts the Sprint Review
23
ScrumMaster
0 Holds Daily Scrum meeting
0 Assures every people related to the project
24
features
25
Product Backlog
0 List of all desired product features
0 List can contain bugs, and non-functional
items
0 Product Owner responsible for ordering
the items
0 Items can be added by anyone at anytime
0 Each item should have a business value
assigned
0 Maintained by the Product Owner
A brief introduction to Agile Software
Development
26
Examples of Product
Backlog
27
A Sprint
0 Time box: 2-4 weeks (why?)
0 An iteration for building a piece of increment
28
Sprint Backlog
Importance
Item Name
Notes
How to test
29
3. A Sprint
(2-4
weeks)
4.
Sprint
Review
Meeting
1. Sprint
Planning
Meeting
5. Sprint
Retrospective
Meeting
A brief introduction to Agile Software
Development
30
31
Scrum Master
0 Asks 3 questions during meeting
0 What have you done since last daily scrum?
0 What will you do before the next daily scrum?
0 What obstacles are impeding your work?
work
0 It helps removing burdens between members
A brief introduction to Agile Software
Development
32
Sprint Review
0 Time box: 4 hours
0 Team presents done code to PO and
stakeholders
0 Functionality not done is not shown
0 Feedback generated Product Backlog
maybe reprioritized
0 ScrumMaster sets next Sprint Review
33
Sprint Retrospective
0 Time box: 3 hours
0 Participants
0 ScrumMaster
0 Scrum Team.
0 Product Owner is optional
0 Questions
0 What went well and what can be
improved?
0 ScurmMaster helps the team in discovery
34
Sprint Backlog
0 A kind o f To-do list for a Sprint
0 Created by the Scrum Team (can be
35
36
37
Potentially Shippable
Product
0 Selected items are fully implemented, tested
38
Distributed Scrum
0 Isolated Scrums - Teams are isolated across
geographies.
0 Distributed Scrum of Scrums Scrum
teams are isolated across geographies and
integrated by a Scrum of
0 Totally Integrated Scrums Scrum teams
are cross-functional with members distributed
across geographies.
39
Sutherland et al.
40
eXtreme Programming
From hacking code to a real process
41
eXtreme Programming
Project
42
XP Values
0Simplicity
0 encourages starting with the simplest solution
0Communication
0 favors simple designs, common metaphors, collaboration of users
0Feedback
0 From the system, customer and from the team, to avoid optimism
0Courage
0 design and code for today and not for tomorrow
0Respect
0 respect for others as well as self-respect
43
44
XP Roles
0 The Customer
0 Sets project goals and makes business
decisions
0 The Developer
0 Turn customer stories into working
code
0 The Tracker
0 Keeps track of any metrics used by
team
0 The Coach
A brief introduction to Agile Software
Development
45
strategy
0Derived version: Behavior-Driven
Development (BDD)
A brief introduction to Agile Software
Development
46
TDD Rationale
47
TDD Strategy
0 You dont start programming until you have
48
Acceptance TDD
3D strategy
0 Discuss in requirement workshop
0 To make tests library
0 Develop in concurrence
0 To create more Passed features
0 Deliver for acceptance
0 To meet DONE definition, accepted by users
49
Continuous Integration
0 Continuous integration (CI) implements
50
CI System
51
Incremental Design
0 Flexible
complex
design on
paper|CASE
tool
Something
unexpected
always
changes
0 Incremental
Design (not
simplistic)
0 More
complexity
than needed.
Hard to
maintain.
0 Easier to
Something
unexpected
always
changes
A brief introduction to Agile
Software Development
adopt. ID is
easier to
change. Less
complexity
52
Pair Programming
0 A pair of developers shares
a problem, a computer, a
keyboard and a goal: solve
the problem
0 PP was defined in XP
0 Utilize the R-mode activities
0 Improve communication
and effectiveness
0 Improve software quality
02
Driver
and Navigator:
roles:
big picture
0 The Driver should step a
way from the keyboard
0 The Navigator tends to use
pattern-matching problem
solving technique
CONTROVERSAL!
A brief introduction to Agile
Software Development
53
Refactoring
0 You practice code a bit, fix a little => result
0 Keep in mind:
0 Maintainability
0 Extensibility
0 High Cohesion
0 Low Coupling
A brief introduction to Agile Software
Development
54
Crystal Clear
A human-Powered methodology for small team
55
56
Crystal Clear
The team can reduce intermediate work
products as it produces running code
more frequently, as it uses richer
communication channels between
people.
- Alistair Cockburn
57
Crystal Clear
Every product is slightly different and
evolves over time, so the methodology,
the set of conventions the team adopts,
must be tuned and evolve.
- Alistair Cockburn
58
59
Kanban
0 Kanban literally means visual card, signboard, or
billboard.
0 Toyota originally used Kanban cards to limit the
amount of inventory tied up in Work In Progress on
a manufacturing floor
Work Items
Step 1
Queue
Step 2
In
Process Queue
In
Proces
s
Step n
Queue
Done
In
Process
60
61
Time-boxed iterative
development has challenges
Short time-boxes give more frequent opportunity to measure
62
63
64
Kanban queue
Work Items
Step 1
Queue
Step 2
In
In
Process Queue Process
Step n
Queue
Done
In
Proces
s
65
team busy
0Small enough to avoid
premature prioritisation
0Ideally should be FIFO
A brief introduction to Agile Software
Development
66
Kanban - Work In
Progress
0Reduce multi-tasking
0Maximize throughput
0Enhances teamwork
67
68
Throughput
0 Organizational overhead
69
Enhances Teamwork
Team focus on goals that add value
70
Kanban Example 1
to Jeff Patton71
Kanban Example 2
72
Kanban Example 3
73
Agile
Mashup
sprit of agility
0 It utilizes practices from several methods, for
example:
0 Use sprint backlog and user stories with TDD
74
Agile Software
Development - a
cooperative game.
Alistair Cockburn
75
Communication Effectiveness
Face-to-face communication is
better
2 people at
whiteboard
2 people
on phone
Videotape
Paper
2 people
on email
Richness
of communication channel
A brief introduction to Agile Software
Development
76
Slide courtesy to Cockburn. A.
77
Q&A
78
Thank you!
Lets Go Agile!
Sunday October 23rd 2011
FPT University, Innovation Building,
Quang Trung Software City, District
12, HCMC, Vietnam
A brief introduction to Agile Software
Development
79