Lecture Notes for Extreme Programming
7 June 2001 - Programming
- general software development
- the software's piled in the middle of the table
- the stories are dealt out the the pairs
- each pair writes new software for the pile
- each pair may modify old software in the pile
- new and modified software is integrated back into the pile
- repeat until stories are gone
- software management
- continuous releases
- 100% acceptance testing
- frequent releases
- serialize at a single management point
- each pair
- works on one story at a time
- writes the tests first
- writes the code to make the tests work
- integrates the code and tests back into the pile
- modified software needs regression testing and perhaps new tests
- programming approach
- express intention first - function should be obvious from form
- standard representations
- simplify, simplify
- code management
- everybody owns all the code
- everybody is responsible for everything
- everybody has authority for everything
- advantages - low overhead, many eyes, many hands
- disadvantages - unconventional, stability
- code design
- simplicity - do what is required an nothing more
- don't predict function - adds unneeded complexity
- eliminate duplicate code
- the smallest number of classes, methods, variables, . . .
- refactoring - code redesign
- don't do one shot design - iterate towards a design
- driven by function and code structure
- increasing complexity, size trigger refactoring - new function too
- regression tests keep you honest
- continuous integration
- catch errors as early as possible - fewer errors per integration
- more integrations - could get expensive, particularly regression
testing
- various techniques improve integration time - make dependencies,
dynamic libraries, pre-compilation
- coding standards
- why - everybody owns everything
- communication, not esthetics
- indentation, capitalization, commenting
- code size - small methods, in units of a page
- names - consistent and meaningful; abbreviations, domain concepts;
metaphors
- coding under pressure - just say no
This page last modified on 3 July 2001.