Google
 

 

up previous next contents
Up: 1. Day 1: Object-Oriented Previous: 1.9 The Agile Alliance Next: 1.11 OO Summary   Contents

Subsections

1.10 Introduction to Extreme Programming

This is a simple introduction to Extreme Programming, taken largely from the text ``eXtreme Programming explained'' (the ``white book'').

1.10.1 Risk: The Basic Problem

Quoting from the white book, ``the basic problem of software development is risk''. Here are some examples:

  • Schedule slips
  • Project canceled
  • System goes sour
  • Defect rate
  • Business misunderstood
  • Business changes
  • False feature rich
  • Staff turnover

1.10.2 Four Variables

In the XP model there are four control variables in software development:

  1. Cost
  2. Time
  3. Quality
  4. Scope

Customers and managers get to pick the values of any three of the variables.

1.10.3 The Cost of Change

Under certain circumstances the exponential rise in the cost of changing software over time can be flattened. If the cost curve can be flattened, old assumptions about the best way to develop software no longer hold true.

Several factors make code easy to change, even after years of production:

  1. A simple design
  2. Automated tests
  3. Lots of practice in modifying the design

1.10.4 Four Values

  1. Communication
  2. Simplicity
  3. Feedback
  4. Courage

1.10.5 Basic Principles

  1. Rapid Feedback
  2. Assume simplicity
  3. Incremental change
  4. Embracing change
  5. Quality work

1.10.6 Back to Basics

  1. Coding
  2. Testing
  3. Listening
  4. Designing

1.10.7 The Solution

  1. The Planning Game
    Business people get to decide:
    • Scope
    • Priority
    • Composition
    • Dates of releases
    Technical people get to decide:
    • Estimates
    • Consequences
    • Process
    • Detailed scheduling
  2. Small Releases
  3. Metaphor
  4. Simple Design
  5. Testing
  6. Refactoring
  7. Pair Programming
  8. Collective Ownership
  9. Continuous Integration
  10. 40-Hour Week
  11. On-Site Customer
  12. Coding Standards