Skip to end of metadata
Go to start of metadata

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: