Lecture Notes for Extreme Programming

7 June 2001 - Programming


  1. general software development

    1. the software's piled in the middle of the table

    2. the stories are dealt out the the pairs

    3. each pair writes new software for the pile

    4. each pair may modify old software in the pile

    5. new and modified software is integrated back into the pile

    6. repeat until stories are gone

  2. software management

    1. continuous releases

    2. 100% acceptance testing

    3. frequent releases

    4. serialize at a single management point

  3. each pair

    1. works on one story at a time

    2. writes the tests first

    3. writes the code to make the tests work

    4. integrates the code and tests back into the pile

    5. modified software needs regression testing and perhaps new tests

  4. programming approach

    1. express intention first - function should be obvious from form

    2. standard representations

    3. simplify, simplify

  5. code management

    1. everybody owns all the code

    2. everybody is responsible for everything

    3. everybody has authority for everything

    4. advantages - low overhead, many eyes, many hands

    5. disadvantages - unconventional, stability

  6. code design

    1. simplicity - do what is required an nothing more

    2. don't predict function - adds unneeded complexity

    3. eliminate duplicate code

    4. the smallest number of classes, methods, variables, . . .

  7. refactoring - code redesign

    1. don't do one shot design - iterate towards a design

    2. driven by function and code structure

    3. increasing complexity, size trigger refactoring - new function too

    4. regression tests keep you honest

  8. continuous integration

    1. catch errors as early as possible - fewer errors per integration

    2. more integrations - could get expensive, particularly regression testing

    3. various techniques improve integration time - make dependencies, dynamic libraries, pre-compilation

  9. coding standards

    1. why - everybody owns everything

    2. communication, not esthetics

    3. indentation, capitalization, commenting

    4. code size - small methods, in units of a page

    5. names - consistent and meaningful; abbreviations, domain concepts; metaphors

  10. coding under pressure - just say no


This page last modified on 3 July 2001.