Introduction to Extreme Programming

  • Published on

  • View

  • Download


Introduction to Extreme Programming. William C. Wake 2-2-2000. XP is. $. $. t. t. Background: Cost of Changes. Now (flattened). Then (exponential). Background: Cost of Money. Up-front design. $. $$. Pay as you go. t. XP Principles. Rapid feedback - PowerPoint PPT Presentation


<ul><li><p>Introduction toExtreme ProgrammingWilliam C. WakeWilliam.Wake@acm.org2-2-2000</p></li><li><p>XP is...</p><p>A lightweight development methodology that emphasizes:</p><p> ongoing user involvement</p><p> testing </p><p> pay-as-you-go design</p></li><li><p>Background: Cost of ChangesThen (exponential)Now (flattened)</p></li><li><p>Background: Cost of Moneyt$Up-front designPay as you go$$</p></li><li><p>XP PrinciplesRapid feedbackAssume simplicityIncremental changeEmbrace ChangeQuality Work</p></li><li><p>XP PracticesPlanning GameMetaphorTestsRefactoringPair programmingSmall releases</p><p>Simple designCollective ownershipContinuous integrationOpen workspace40-hour week</p></li><li><p>RightsManager and Customer:You have the right.. to an overall plan, to know what can be accomplished, when, and at what cost.etc.Developer: You have the right.. to know what is needed, via clear requirement stories, with clear declarations of priority.etc.</p></li><li><p>The XP Cycle (in the small)analysistestcodedesign</p></li><li><p>Planning Game</p><p>User stories = lightweight use cases</p><p>2-3 sentences on a file card that:</p><p> The customer cares about</p><p> Can be reasonably tested</p><p> Can be estimated &amp; prioritized</p></li><li><p>Planning GameUsers write storiesDevelopers estimate themUsers split, merge, &amp; prioritizePlan overall release (loosely) and the next iteration</p></li><li><p>TestsFunctional TestsUnit Tests</p></li><li><p>Functional TestsSpecified by the userImplemented by users, developers, and/or test teamAutomatedRun at least dailyPart of the specification</p></li><li><p>Unit TestsWritten by developersWritten before and after codingAlways run at 100%Support design, coding, refactoring, and quality.</p></li><li><p>Test MetricsTests failedTests passed1 2 3 4 5 6 7Key:</p></li><li><p>DesignPay as you goSpike when necessaryYou arent gonna need itSimplest thing that could possibly workOnce And Only Once</p></li><li><p>Refactor (Mercilessly)Refactor = to improve the structure of code without affecting its external behaviorDone in small stepsSupported by unit tests, simple design, and pair programmingSeek once and only once</p></li><li><p>Refactoring Example</p><p>Replace Magic # w/ Symbolic Constant:</p><p>return 32.5 *</p><p> miles_traveled;</p><p>static final double </p><p> MILEAGE_RATE = 32.5;</p><p>return MILEAGE_RATE *</p><p> miles_traveled;</p><p>Separate Query from Modifier:</p><p>Stack: </p><p> Object getTopAndPop();</p><p> Object getTop();</p><p> void pop();</p></li><li><p>Adopting XPSome practices can be done solo, others by team, others require users to help.User involvementFunctional tests and unit testsSimple design &amp; refactoringPair programming</p></li><li><p>Other ApproachesUML: XP uses it on the whiteboard (if at all)Rational Unified Process: XP has many fewer roles &amp; documents; XP emphasizes team over artifactsSCRUM: XP compatible</p></li><li><p>Who, Us?And other questions</p></li><li><p>More InformationExtreme Programming Explained, by Kent BeckRefactoring, by Martin Fowlerhttp://www.xprogramming.com ProgrammingRoadmap</p></li></ul>


View more >