Lecture 21: Extreme Programming
Today's Lecture
- Lecture on Extreme Programming given by Christian Doerr
- Christian did not prepare slides for this lecture; instead I have converted his notes into slide format to show the topics that were discussed
Notes on Extreme Programming
- Customer is Team Member
- Customer is part of the team; Release early, release often
- User Stories
- It is often hard to have users write formal specifications
- Requirements are written up in form of "stories"
- These are written on cards, prioritized and implemented (physical artifact)
- Refactor often
- Agile projects always take the simplest path
- They just solved today's problems
- You write good code and change it
- Imagine being an architect and building a house, what comes first? How do you measure quality?
- Test Driven Development
- Write tests even before you write code
- you are always up to date
- What do tests cover? Code tests vs. acceptance tests
- Repeated but sequential integration
- Only one team at a time integrates code and releases the changes to the repository
- You don't end up chasing bugs
- However, you still end up integrate every couple of hours, so you don't fragment development
- Pair programming
- One programs, the other one watches code
- Pairs and teams switch frequently
- Facilitates distribution of knowledge
- Collective ownership
- You all own the code
- Everybody can check out and update code
Coming Up Next
- Lecture 22: Software Reuse
- Homework 8 Due
- Lab 4 Due