View
222
Download
0
Category
Tags:
Preview:
Citation preview
Agile Software Development
In Theory and Practice
Johannes Brodwall
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 2
Who am I?
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 3
Johannes Brodwall
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 4
Board member, smidig.no
http://smidig.no/forum/
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 5
Organizer,
Oslo XP Meetup
Every first Monday of the month at Scuba bar (Grünerløkka)
http://xp.meetup.com/13/
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 6
Lead Software Architect
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 7
Sole developer
Small chat solution
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 8
Who are you?
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 9
Who works on ”a large project”?
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 10
Who works on (what you feel is) ”a large project”?
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 11
Who release software infrequently?
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 12
(0)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 13
Intro
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 14
Course in an agile method
Extreme programming
Scrum
Lean Software Development
DSDM
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 15
Course in an agile method
Extreme programming
Scrum
Lean Software Development
DSDM
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 16
History lesson
SnowbirdAgile Manifesto
We value
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 17
History lesson
SnowbirdAgile Manifesto
We value
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 18
Specific for Perl
Test::MoreDevel::Refactor
JiftyPerlActor
Tinderbox
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 19
Specific for Perl
Test::MoreDevel::Refactor
JiftyPerlActor
Tinderbox
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 20
Experience report on using agile techniques in small and large environments
Continuous Integration
Relentless Testing
Frequent releasesCollective Ownership
Refactoring
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 21
Experience report on using agile techniques in small and large environments
Continuous Integration
Relentless Testing
Frequent releasesCollective Ownership
Refactoring
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 22
(1)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 23
The Problem
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 24
Projects in crisis
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 25
Failure to deliver value
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 26
Barry Boehm: ”Software Engineering Economics”, 1984
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 27
”An infant engineering discipline”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 28
(2)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 29
The Response
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 30
”
”Make sure the reqs are right before you do anything”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 31
”
”Make sure nobody changes the requirements”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 32
”
”Try Harder!”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 33
BRUF
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 34
”
BigRequirementsUpFront
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 35
(Picture: RUP analyst hard at work)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 36
Trying to stuff everything into my small head!
It hurts!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 37
And then the world changes!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 38
When I guessed wrong...
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 39
... my work is wasted
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 40
... it is even harder to change the system
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 41
Speculation breeds complexity
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 42
Complexity breeds complexity
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 43
And again....
.. my crystal ball
is broken!!!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 44
So I get a poorly divided, rigid design
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 45
Formality:
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 46
make decision ”correctly”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 47
The right decision
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 48
Change control mechanism
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 49
Just-in-case requirement
(”free” in the beginning)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 50
Failure to deliver value
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 51
These ”solutions” are part of the problem
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 52
Fixed-price, fixed-scope contract bids
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 53
(3)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 54
The Alternative
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 55
Instead of just-in-case...
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 56
... just-in-time
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 57
Boehm was wrong
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 58
(or at least Boehm’s phasist readers)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 59
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 60
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 61
Harness the Power of Myopia
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 62
1... 2... 3...
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 63
1. Focus on short term
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 64
Requirements for current feature
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 65
Design for current requirement
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 66
2. Deliver something
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 67
Ideal: Deliver working, tested features as often as you safely can
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 68
3. Get feedback
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 69
(talk to people!)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 70
4. Adapt
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 71
Get Feedback
Avoid Speculation
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 72
The cost of speculation
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 73
Myopic requirements
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 74
Analyse the current release
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 75
Myopic development
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 76
Design for the current problem
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 77
Myopic programming
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 78
Write a test – make it pass – Remove duplication
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 79
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 80
(4)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 81
Changing your minds
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 82
... is not always easy
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 83
... is not always safe
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 84
(painted into a corner)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 85
(Experience: Sustainable myopia varies with org.)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 86
Agile: Enabling safe myopia
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 87
Not technology
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 88
Practices, discipline, communication
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 89
1. Prioritize requirements with a backlog
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 90
Prioritize requirements with a backlog
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 91
(NB: Software maintainance)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 92
Too fully take advantage: Close communication with
stakeholders
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 93
2. Simple design: Goal and means
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 94
Avoid designs that make change expensive:
Don’t Repeat Yourself!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 95
For example: Jifty
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 96
Solve the current problem only
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 97
3. Automated regression suite
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 98
Test::Simple
Test::More (Schwern)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 99
4. Refactor all the time
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 100
Def: Refactor“To transform a program while
preserving its behavior.”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 101
Refactor to simple design
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 102
5. Continuous Integration
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 103
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 104
6. Collective Ownership
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 105
It’s not: ”Your code and mine code”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 106
Refactor everything
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 107
Continous integration keeps you safe
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 108
(5)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 109
Fine tuning your agile process
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 110
Deliveries
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 111
Large organization Less frequent releasesHigh risk Less frequent releases
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 112
Staged (internal delivery)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 113
Breaking it up
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 114
”The smallest meaningful task”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 115
Small releases: Penalizes half-work
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 116
One click deployment
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 117
Extreme: Deploy every feature
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 118
Mastering Testing
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 119
”Only test what you want to work”
-- Ron Jeffries
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 120
Many types of test
Acceptance test
Databases
User interfaces
Integration tests
Unit test
Performance/Load/Stress
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 121
All can be automated
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 122
Greatest value: Acceptance tests
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 123
Easiest to implement: Unit tests
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 124
Starting unit testing:
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 125
Don’t
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 126
Try to test everything in the beginning
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 127
Do:
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 128
Focus on ”bang for the buck”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 129
Good: New features
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 130
Better: Bugs
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 131
Even better: Bug ridden code
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 132
Smoke test
Def: ”A rudimentary form of testing; power is applied and the tester checks for sparks,
smoke, or other dramatic signs of fundamental failure”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 133
Perfecting unit tests
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 134
Remember: Test is a noun!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 135
Tests as specification
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 136
Write tests first
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 137
Consider test brittleness
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 138
Consider unit test running time
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 139
Implementing Continuous Integation
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 140
Avoid sliding back
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 141
Not useful in small projects (1-3 people?)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 142
Can at least scale to 50 people
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 143
Be prepared to pay the price
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 144
Continuous Integration will become critical to you org.
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 145
Has given us the ability to do enormous refactorings
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 146
Has enabled us to treat 500 KLOC as one code base
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 147
Communication
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 148
What is the biggest cost driver?
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 149
Misunderstandings
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 150
Misunderstood business needs
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 151
Misunderstood interface to integrate with
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 152
Misunderstanding your neighbours code
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 153
Not knowing that you neighbour is doing the same
as you!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 154
Techniques:
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 155
Keep your customer close
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 156
Obvious, difficult(But if the customer won’t be close, how
important is the project, really?)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 157
Pair programming
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 158
Fun, difficult, rewarding, exhaustingHard to sustain (but great if you
can!)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 159
Stand up meetings
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 160
• ”What did you achieve since yesterday?”• ”What do you plan on achiving today?”
• ”What is standing in your way?”
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 161
Keep it short!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 162
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 163
Keep it short!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 164
Fun, easy, rewardingExhausting (if you don’t do it right!)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 165
Reflection workshops
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 166
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 167
Fun, easy, rewardingValue decreases with time
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 168
(6)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 169
Conclusion
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 170
Phasist development...
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 171
Forces us to guessForces us to consider a too
much at the same time
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 172
... leads to suffering
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 173
(and our poor reputation as professionals)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 174
When I speculate, I’m usually wrong
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 175
So instead...
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 176
1. Short-term decisions
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 177
2. Deliver something
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 178
3. Get feedback
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 179
4. Adapt
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 180
(requires practices and tricks)
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 181
Summary of tricks
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 182
Prioritize with a backlog
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 183
Keep in touch with stand-up meetings
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 184
Just-in-time planning and requirements
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 185
Simple design
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 186
Test only what you want to work
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 187
Refactor mercilessly
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 188
Continuous Integration
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 189
Parting words
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 190
Software isn’t a canned good
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 191
It rots during storage
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 192
Good luck with your agile project!
Copyright 2004 – Johannes Brodwalljohannes@brodwall.com
Slide 193
Thank you for listening
http://smidig.no/forum/http://xp.meetup.com/13/
Recommended