Extreme Programming
-
Upload
matteo-vaccari -
Category
Technology
-
view
2.138 -
download
0
description
Transcript of Extreme Programming
Matteo Vaccari@xpmatteo
http://matteo.vaccari.name/
eXtreme Programming
1
Cheap, fast, good.
You can have it all.
2
c2.com/cgi/wiki?ExtremeProgramming3
martinfowler.com/articles/xp2000.html4
5
We were doing incremental development as early as 1957, ... the technique used was, as far as I can tell, indistinguishable from XP.
Jerry Weinberg
Craig Larman: Iterative and Incremental Development: A Brief History6
"Perlis: I’d like to read three sentences to close this issue.1. A software system can best be designed if the testing is interlaced with the designing instead of being used after the design.2. A simulation which matches the requirements contains the control which organizes the design of the system.3. Through successive repetitions of this process of interlaced testing and design the model ultimately becomes the software system itself.
1968 NATO Conference on Software Engineering7
Barry Boehm
Kent Beck
Kent Beck, Extreme Programming Explained8
Involve the customer through small, incremental releases of a working program
http://mgintravels.wordpress.com/2013/03/04/camping-in-the-olive-gardens-of-patara/
9
Presupposti
•Team.
•Personalità risolte.
•Cliente coinvolto.
10
XP
The Planning Game
Small releases
Metaphor
Simple Design
Testing
Refactoring
Pair Programming
Collective Ownership
Continuous Integration
40-Hour Week
On-Site Customer
Coding Standards
PracticesValuesSimplicity
Courage
Communication
Feedback
11
1. Planning Game(Scrum)
Planning game
Business people
Scope
Priority
Dates
Technical people
Estimates
Consequences
Process
12
2. Small Releases(Continuous Delivery)
Subversion
Sviluppatori
Jenkins Server di collaudo
1. Commit
2. Pull changes3. Build4. Unit test
5. Deploy6. Acceptance tests
7. Success! or Failure!
13
3. Metaphor(Domain-Driven Design)
Ubiquitous Language
Simple models14
4. Simple Design
1. Runs all the tests2. Has no duplicated logic3. States every intention important to the
programmers4. Has the fewest possible classes and
methods
15
5. Testing(TDD, BDD, ATDD)
The result is a program that becomes more and more confident over time---it becomes
more capable of accepting change, not less.
The customer writes Acceptance Tests
16
6. RefactoringWhen implementing a program feature, the programmers always ask if there is a way of
changing the existing program to make adding the feature simpler.
After they have added a feature, they ask if they can now see how to
make the program simpler
17
7. Pair Programming
All production code is written with two people looking at one machine
18
8. Collective Ownership
Code belongs to the team, not the individual
19
9. Continuous Integration
Make integration painless by doing it often
20
10. 40-Hours Week
Teams working overtime are failing
21
11. Customer On Site
A real customer must sit with the team
22
12. Coding Standards
The team controls the work environment
23
Se XP funziona così bene, perché non lo
fanno tutti?
24
XP is hard
Involve the customer.
Take responsibility.Learn. Study. Learn.
Give feedback.
25
It’s not the answer they want to hear
26
It’s just “good programming
practice”
http://blog.8thlight.com/uncle-bob/2013/12/10/Thankyou-Kent.html
27
Community!
Milano XPUG User Group
Italian Agile Day
Agile Coach Camp, 5-7 giugno
milano-xpug.pbworks.com
agileday.it
accitaly.wordpress.com
https://it.groups.yahoo.com/neo/groups/extremeprogramming-it/info
28
Grazie per l’attenzione!
Sono freelance!
Contattami!
Corso TDD:17-18 aprile, Bologna12-13 giugno, Milanowww.avanscoperta.it
29