Department
of Computer Science and Automation
|
Extreme Programming Explained, Kent Beck |
The Planning game: Quickly determine the scope of the next release by combining business priorities and technical estimates. As reality overtakes the plan, update the plan.Implementing XP
Small releases: Put a simple system into production quickly. Then make small releases containing the most valuable business requirements.
Simple Design: The system should be designed as simply as possible at any given moment. No duplication of logic, no parallel class hierarchies, minimum possible classes and methods.
Testing: Automated tests for all programs. If the tests are not automated, XP doesn’t work well.
Refractoring: Programmers restructure the system without changing the behavior to remove duplication, simplify or add functionality
Pair Programming: Two programmers at one machine write all production code.
Collective ownership: Any one can change any code anywhere in the system at anytime
Continuous integration: Integrate and build a systems many times a day, every time a task is completed.
40-hour weeks: Never work overtime second week in a row. It is not possible to work extended hours and still be productive.
The management strategy: Decentralized decision-making. Metrics are important to measure what is happening against what was predicted. Making more measurements won’t give better results. Coach everyone to make good decisions. Intervene when the team cannot solve problems. Keep technical people focused on technical problems and business people focused on business decisions. The project must be driven by business decisions, but the business decisions must be informed by technical decision about cost and risk.
Facilities strategy: Create an open workspace for our team, with small private spaces around the periphery and a common programming area in the middle.
Planning Strategy: Quickly make an overall plan, refine it further in on short time horizons so that there will be little inertia when we change it.
Development Strategy: Craft the solution for today’s problem today and trust that we will be able to solve tomorrow’s problem tomorrow.
Design strategy: Continually refine the design of the system starting from a very simple beginning. Remove any additional flexibility that doesn’t prove useful.
Testing Strategy: Write tests before coding and preserve these tests forever. Run them all together frequently.
Modified by: Sandhya G & Shijesta Victor on 03.11.2003