Você está na página 1de 79

Duong Trong Tan

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

Image courtesy of Pollyanna Pixton

A brief introduction to Agile


Software Development

Continuous improvement
Hyper productive
Kaizen

Agile
Small teams
Lean

Buzzwords

Earned Value Based


Rapid

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

A brief introduction to Agile


Software Development

So, what are software projects?

A brief introduction to Agile Software


Development

Parties
and Concerns
Users?
Customers?
BO?
Developers?

A brief introduction to Agile


Software Development

What is agile development?

A brief introduction to Agile Software


Development

The Agile Manifesto


We are uncovering better ways of developing software by
doing it and helping others do it.
Through this work we have come to value:
0 Individuals and interactions over processes and

tools
0 Working software over comprehensive documentation
0 Customer collaboration over contract negotiation
0 Responding to change over following a plan

That is, while there is value in the items on the


right, we value the items on the left more.
AgileAlliance.org

A brief introduction to Agile Software


Development

The Twelve Principles of Agile Software


1. Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile
processes harness change for the customer's competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a
couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout
the project.
5. Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the job
done.
6. The most efficient and effective method of conveying information to
and within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.
9. Continuous attention to technical excellence and good design
enhances agility.
10. Simplicity--the art of maximizing the amount of work not done--is
AgileAlliance.org
A brief introduction to Agile Software
10
essential.
Development
11. The best architectures, requirements, and designs emerge from self-

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

The diversity of methods

XP
AgileU
P

Scrum
Method
s
Crysta
l

RAD
Kanba
n

A brief introduction to Agile Software


Development

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

A brief introduction to Agile Software


Development

13

Prototyping
0 Early visibility of the

prototype gives users


an idea of what the
final system looks like
0 Encourages active
participation among
users and producer
0 Increases system
development speed (in
RAD)

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

A brief introduction to Agile


Software Development

15

Scrum
0 One of the most successful agile methods

because of its hyper-productivity


0 It is management oriented
0 Somewhat CMM Level 3 equivalence
0 Widely used in various types of projects
0 Google AdWorlds project
0 3M
0 Universities RnD projects
0 In VN: LogiGear, KPM, FSOFT, FAT, etc.
A brief introduction to Agile Software
Development

16

Scrum
Team

Scrum Framework

Scrum
Adaption

Artifac
ts

Scrum
Events

Rules

A brief introduction to Agile


Software Development

17

A brief introduction to AgileImage


Softwarecourtesy
Development

of ScrumAlliance
18

Scrum Roles
0 Scrum Master
0 Product Owner
0 Development Team
0 Other parties (all kinds of chicken)

A brief introduction to Agile Software


Development

19

Transition of roles
0 Project

Manager
0 Tester
0 Developer
0 System
Designer
0 QA
0 Graphic
Designer

Cross-functional Scrum Team

A brief introduction to Agile Software


Development

20

Management
Transformation
Managers tell people

what to do and make


sure they do it
properly
Managers maintain
the right to authorize
decision
Managers limit the
information or
resources available to
workers

People decide what,

and how to do
TO

Team makes

decisions

Information is

transparent

A brief introduction to Agile


Software Development

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

A brief introduction to Agile


Software Development

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

A brief introduction to Agile Software


Development

23

ScrumMaster
0 Holds Daily Scrum meeting
0 Assures every people related to the project

follow the Scrum rules


0 Removes obstacles
0 Shields the team from external interference:
Keep Chickens away from Pigs
0 Conducts Sprint Retrospective at the end of a
Sprint
0 Is a facilitator, not a manager
A brief introduction to Agile Software
Development

24

Product Owner (PO)


0 Accountable for product success
0 Defines all product features
0 Responsible for ordering product features
0 Maintains the Product Backlog
0 Insures team working on highest valued

features

A brief introduction to Agile Software


Development

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

A brief introduction to Agile


Software Development

27

A Sprint
0 Time box: 2-4 weeks (why?)
0 An iteration for building a piece of increment

(potentially shippable) of the whole system


0 Its the working time, not planning or asking
what to do.
0 The team manages itself during a Sprint
0 The team commits to Product Backlog during
the Sprint planning meeting
0 The Sprint Backlog is updated during a Sprint
A brief introduction to Agile Software
Development

28

Sprint Backlog
Importance

Item Name

Notes

How to test

Each item is prioritized and


estimated
A brief introduction to Agile Software
Development

29

The Scrum Skeleton


2. Daily Scrum Meeting
What have you done?

3. A Sprint
(2-4
weeks)

What will you do?


What is impeding you?

4.
Sprint
Review
Meeting

1. Sprint
Planning
Meeting

5. Sprint
Retrospective
Meeting
A brief introduction to Agile Software
Development

30

Sprint Planning Meeting


0 Time box: 8 hours
0 Product backlog prepared prior to meeting
0 First Half
0 Team selects items committing to complete
0 Additional discussion of Product Backlog occurs
during actual Sprint
0 Second Half
0 Occurs after first half done PO available for
questions
0 Team solely responsible for deciding how to build
0 Tasks created / assigned Sprint Backlog produced
A brief introduction to Agile Software
Development

31

Scrum Daily Meeting


0 Held every day during a Sprint
0 The most important inspection event in Scrum
0 Timebox:15 minutes
0 Team members talk to the whole Development Team, not

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?

0 Opportunity for team members to synchronize their

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

A brief introduction to Agile Software


Development

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

not provide answers


A brief introduction to Agile Software
Development

34

Sprint Backlog
0 A kind o f To-do list for a Sprint
0 Created by the Scrum Team (can be

originated by one member, responsibility


belongs to another)
0 Product Owner has defined as highest priority
0 Used for synchronizing works between team
members

A brief introduction to Agile Software


Development

35

Sprint Backlog examples

digital Sprint Backlog


analog Sprint Backlog >>
A brief introduction to Agile
Software Development

36

The Burn-down Chart

Burndown Chart shows the Sprint trend,


the performance\velocity of the team through Sprints
A brief introduction to Agile
Software Development

37

Potentially Shippable
Product
0 Selected items are fully implemented, tested

and ready for use


0 Small but complete, it will be bigger
0 Scrum Team needs to define what does
done mean, in what aspects and contexts.
0 DONE may be executable, passed all tests,

approved by senior engineers, reviewed by


peers or just nothing to do more with the item.

A brief introduction to Agile Software


Development

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.

A brief introduction to Agile Software


Development

39

Sutherland et al.

Top Distributed Scrum


Issues
0 Difficult leveraging available resources, best

practices are often deemed proprietary, are time


consuming and difficult to maintain
0 Difficulty synchronizing work between distributed
sites
0 Lack of effective communication mechanisms
0 Conflicting behaviors, processes, and technologies
0 Incompatible data formats, schemas, and standards
0 Ensuring electronic transmission confidentiality and
Sutherland et al.
privacy
0 Difficult to share values [Bas Vodde]
A brief introduction to Agile Software
Development

40

eXtreme Programming
From hacking code to a real process

A brief introduction to Agile


Software Development

41

eXtreme Programming
Project

A brief introduction to Agile


Software Development

42

XP Values
0Simplicity
0 encourages starting with the simplest solution

0Communication
0 favors simple designs, common metaphors, collaboration of users

and programmers, frequent verbal communication, and feedback

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

A brief introduction to Agile Software


Development

43

A brief introduction to Agile Software


Development

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

0 Guides and mentors the team

45

Test Driven Development


0Tests created before coding
0Focus on quality
0Not a complete development

strategy
0Derived version: Behavior-Driven
Development (BDD)
A brief introduction to Agile Software
Development

46

TDD Rationale

A brief introduction to Agile


Software Development

47

TDD Strategy
0 You dont start programming until you have

designed your tests!


0 Strategy
0 Make it Fail
0 No code without a failing test
0 Make it Work
0 As simply as possible
0 Make it Better
0 Refactor(code, design, test, documentation)
0 Believe in testing
A brief introduction to Agile Software
Development

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

A brief introduction to Agile Software


Development

49

Continuous Integration
0 Continuous integration (CI) implements

continuous processes of applying quality control


small pieces of effort, applied frequently.
0 Supported by a CI system with lots of
automated tests, builds and other generated
artifacts.
0 Benefits:
0 Increases transparency
0 Increases cooperation and communication
0 Enables people to work on same code
A brief introduction to Agile Software
Development

50

CI System

A brief introduction to Agile


Software Development

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:

0 The Driver doesnt see the

big picture
0 The Driver should step a
way from the keyboard
0 The Navigator tends to use
pattern-matching problem
solving technique

0 Widely ADOPTED, but

CONTROVERSAL!
A brief introduction to Agile
Software Development

53

Refactoring
0 You practice code a bit, fix a little => result

in dirty code & bad design.


0 Refactoring helps in restructure or design your
code to make it better.
0 what does better mean?

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

A brief introduction to Agile


Software Development

55

Crystal Clear Practices


0 Frequent Delivery
0 Reflective Improvement
0 Osmotic Communication
0 Personal Safety
0 Focus
0 Easy Access to Expert Users
0 Automated Tests
0 Configuration Management
0 Frequent Integration
A brief introduction to Agile Software
Development

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

A brief introduction to Agile Software


Development

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

A brief introduction to Agile Software


Development

58

Crystal Clear Roles


0 Sponsor
0 Allocates money for the project
0 Expert User
0 Lead Designer
0 Lead Technical person, mentors less
experienced team members
0 Designer-Programmer
0 Each person designs and programs

A brief introduction to Agile Software


Development

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

A brief introduction to Agile Software


Development

60

Why use Kanban in Software


Development?

A brief introduction to Agile Software


Development

61

Time-boxed iterative
development has challenges
Short time-boxes give more frequent opportunity to measure

progress and inspect software but force development items to be


smaller
Smaller development items are often too small to be valuable
and difficult to identify
Quality of requirements suffers as analysts rush to prepare for
upcoming cycles
Quality of current development suffers when busy analysts are
unable to inspect software or answer questions during
development
Quality often suffers as testers race to complete work late in the
development time-box
A brief introduction to Agile Software
Development

62

The time-boxed iteration


drama

A brief introduction to Agile Software


Development

63

Using a Kanban approach in


software drops time-boxed
iterations in favor of focusing
on continuous flow.

A brief introduction to Agile Software


Development

64

Kanban queue
Work Items

Step 1
Queue

Step 2

In
In
Process Queue Process

Step n
Queue

Done

In
Proces
s

A brief introduction to Agile


Software Development

65

Kanban queues (contd)


0Large enough to keep the

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

A brief introduction to Agile Software


Development

67

The multitasking issues


0 Facts:
0 20% time lost to context switching per task
0 Sequential yields results sooner
A

Chart courtesy of Yahoo!


A brief introduction to Agile Software
Development

68

Throughput
0 Organizational overhead

goes up as work in progress


increases

Total Cycle Time = Number of Things in Process


Average Completion Rate
to improve cycle time
Improve Average Completion Rate
ReduceA Number
of Things in Process
brief introduction to Agile
Software Development

69

Enhances Teamwork
Team focus on goals that add value

not individual tasks

A brief introduction to Agile Software


Development

70

Kanban Example 1

A brief introduction to Agile Software


Image courtesy
Development

to Jeff Patton71

Kanban Example 2

A brief introduction to Agile


Software Development

72

Kanban Example 3

A brief introduction to Agile


Software Development

73

Agile

Mashup

0 It follows the Agile Manifesto and keeps the

sprit of agility
0 It utilizes practices from several methods, for
example:
0 Use sprint backlog and user stories with TDD

and standup meeting with a kanban liked


dashboard.
0 Use stand up meeting in daily Scrum
0 Use Burn down chart in Kanban
A brief introduction to Agile Software
Development

74

Agile Software
Development - a
cooperative game.
Alistair Cockburn

A brief introduction to Agile Software


Development

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.

References and Further Readings


0 Agile Software Development: The Cooperative Game, 2 nd Edn. By Alistair Cockburn.
0 Scrum Guide 2010 by Ken Schwaber and Jeff Sutherland
0 Agile Project Management with Scrum byKen Schwaber
0 Agile Java Crafting Code with Test-Driven Development By JeffLangr
0 Test-Driven Development in Microsoft .NET byJames W. NewkirkandAlexei A. Vorontsov
0 Extreme Programming Explained by Kent Beck
0 XP introduction,
0 http://www.extremeprogramming.org/
0 http://xprogramming.com/
0 http://www.agilealliance.org/
0 Kanban Oversimplified
0 http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html
0 Ken Schwaber & Jeff Sutherland, Scrum Guide, Scrum.org
0 Pete Deemer, Gabrielle Benefield, Craig Larman & Bas Vodde, Scrum Primer, GoodAgile.com
0 HanoiScrum.net
0 AgileVietnam.org
0 ScrumAlliance.org
0 AgileAlliance.org

A brief introduction to Agile Software


Development

77

Q&A

A brief introduction to Agile Software


Development

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

Você também pode gostar