Monday, February 9, 2009

Extreme programming - XP

This is the best known agile method.
  • requirements are expressed as scenarios = user stories, which are later broken down into tasks to implement
  • programmers work in pairs
  • test-first development (but when added new functionality we not only run new tests, but also all the previous ones)
  • incremental development, the releases are small and frequent (2 weeks), regular, continuous integration
  • full-time customer engagement in the development team; defining acceptance tests for the system; requirements; the user chooses the next story!
  • constant refactoring of the code! => keeping it simple and easier to change
  • everyone owns all the code (collective ownership)
  • no long working hours
XP release cycle:
  1. Select user stories for the release
  2. Break it down into tasks
  3. Plan the release
  4. Develop (and integrate) test software
  5. Release software
  6. Evaluate system
* the tasks are the basis for schedule and costs estimation

** Example:
-> user story - what he wants to do in the system, in order
-> 3 tasks - exactly how to perform the payment.. that you have to check that the credit card is valid, or the library card did not expire
-> task description - description in detail, what are inputs (also if string? integer?), what are the outputs, and description of algorithm: take the first four digits and check at the card's issuer, check if the expiry date is bigger then today's date, everything step by step...