eXtreme Programming is a process of software development that is focused on communication, simplicity, feedback and courage.
Benefits of XP
- Customer: reduced project risk, reduced of time to market, meaningful input for bussines decisions
- Management: reduced project risk, reduced maintanance costs, reduced staff turnover, experience buildup
- Developers: increased job statisfaction, increased self-confidence, faster learning
Limitations of XP
- Limited scalability - team of 20 seems like a reasonable upper limit
- Non-distributable - face to face communication is critical
XP practices
- The planning game
- Testing
- Pair programming
- Refactoring
- Simple design
- Collective code ownership
- Continuous integration
- On-site customer
- Small releases
- 40-hour week
- Coding standards
- System metaphor
- The practices work together
examples of the positive feedback that one pracice has on another- The planning game -> Small releases
- Testing -> Refactoring
- Testing -> Continuous integration
- Pair programming -> Simple design
- Pair programming -> Collective code ownership
- Refactoring -> Simple design
- Simple design -> Tesing
- Continuous integration -> Small releases
- On site customer -> The planning game
- Coding standards -> Collective code ownership
Tools supporting XP
- IDEs with extensive refactoring support
- unit testing tools
- jUnit
- jMock
- functional (end-to-end) testing tools
- test coverage metrics tools
- Clover
- Emma
- automated code analyzers
Features- coding conventions checking
- anti-pattern detection
- code duplication detection
- metrics analysis (design critique)
Implementations - Checkstyle
- continuous integration servers
- DamageControl
- SCM systems
- issue trackers
Labels:
