Friday, October 05, 2007

eXtremeProgramming-XP: Key Takes

Powered by Qumana


User Stories: help estimate for release planning and are like usecases.


They are similar to usage scenarios, except that they are not limited to describing a user interface. They are in the format of about three sentences of text written by the customer in the customers terminology without techno-syntax.


Make frequent small releases, iteratively, have an iteration plan in each iteration


Move ppl around: rotate code segments among ppl


CRC Cards: Use ClaUse Class, Responsibilities, and Collaboration (CRC) Cards to design the system as a team. The biggest value of CRC cards is to allow people to break away from the procedural mode of thought and more fully appreciate object technologyss, Responsibilities, and Collaboration (CRC) Cards to design the system as a team. The biggest value of CRC cards is to allow people to break away from the procedural mode of thought and more fully appreciate object technology


Never add functionality early: Keep the system uncluttered with extra stuff you guess will be used later. My add: Only create placeholders if required.


Refactor:


We continue to use and reuse code that is no longer maintainable because it still works in some way and we are afraid to modify it. But is it really cost effective to do so? Extreme Programming (XP) takes the stance that it is not.







There is a certain amount of Zen to refactoring. It is hard at first because you must be
able to let go of that perfect design you have envisioned and accept the design that was serendipitously discovered for you by refactoring. You must realize that the design you envisioned was a good guide post, but is now obsolete.

Pair Programming


All code to be included in a production release is created by two people working together at a single computer. Pair programming increases software quality without impacting time to deliver. It is counter intuitive, but 2 people working at a single computer will add as much functionality as two working separately except that it will be much higher in quality. With increased quality comes big savings later in the project.



OVERALL








Planning


 User stories are written.
 Release planning creates the schedule.
 Make frequent small releases.
 The Project Velocity is measured.
 The project is divided into iterations.
 Iteration planning starts each iteration.
 Move people around.
 A stand-up meeting starts each day.
 Fix XP when it breaks.


Designing


 Simplicity.
 Choose a system metaphor.
 Use CRC cards for design sessions.
 Create spike solutions to reduce risk.
 No functionality is added early.
 Refactor whenever and wherever possible.



Coding


 The customer is always available.
 Code must be written to agreed standards.
 Code the unit test first.
 All production code is pair programmed.
 Only one pair integrates code at a time.
 Integrate often.
 Use collective code ownership.
 Leave optimization till last.
 No overtime.


Testing


 All code must have unit tests.
 All code must pass all unit tests before it
 can be released.
 When a bug is found tests are created.
 Acceptance tests are run often and the score
 is published.






1 comment:

Anonymous said...

Good words.