1 / 14

Extreme Programming

Extreme Programming. Based on http://www.jera.com/techinfo/xpfaq.html and http://www.extremeprogramming.org/. What is XP?.

yehuda
Download Presentation

Extreme Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Extreme Programming Based on http://www.jera.com/techinfo/xpfaq.html and http://www.extremeprogramming.org/

  2. What is XP? • Extreme Programming (or XP) is a set of values, principles and practices for rapidly developing high-quality software that provides the highest value for the customer in the fastest, simplest way possible. • Fits into the “Agile” school of programming – lightweight methodologies • Developed by Kent Beck • Has been around about 6 years

  3. What is “Simplest?” • The system (code plus tests) clearly communicates everything that needs to be communicated at the current instant in its development. This means that it runs every existing test, and that the source code clearly reveals the intention behind it to anyone who reads it.

  4. Simplest, continued • The system contains no duplicate code, unless that would violate (1). • The system contains the minimum number of classes possible without violating (1) or (2). • The system contains the minimum number of methods possible, consistent with (1) (2) and (3).

  5. Core Principles • Whole Team • Metaphor • Provides naming scheme • Planning: • Customer describes features in User Stories – gives name, describes feature • Development estimates effort and how much of that can be done in one time period (iteration) • Customer prioritizes and decides how often and when each release will occur

  6. Core Principles • Simple design • Small releases • Start with smallest, useful set of features • Release early and often • Customer Tests • Acceptance Testing

  7. Core Principles • Pair Programming • All code is written with two programmers at a machine • Promotes review while writing • Continuous testing • Add a feature, add a test • Unit tests – specified by developer • Run test suite again after each test is added

  8. Core Principles • Design Improvement (Refactoring) • Get rid of duplicate code • Collective Code Ownership • Everyone is able to work on all parts • Continuous Integration • Integrate daily and retest

  9. Core Principles • Sustainable Pace • Coding Standards

  10. Iteration • Each lasts 1-3 weeks • Begins with planning meeting with customer • Determine tasks to be done in each iteration • Each developer signs up for what they will do and estimate effort

  11. Iteration • Programming/testing • Write tests first • Pair programming on all production code • Delivery • At end of iteration, customer is given a working, bug-free system • Final delivery is just the product of the last iteration • Overview - http://www.extremeprogramming.org/map/project.html

  12. Terms • Project velocity • Measure of how much work is being done • Sum up estimates of user stories finished in iteration • In next iteration, customer can choose user stories/features equal to work done in previous • Increases if developers finish early and ask for more tasks

  13. Terms • Spike Solution • Simple program to explore a potential solution for a narrow problem • Will probably be thrown away • “Write the smallest possible code that could be said to perform a function independent of existing mechanism. “ -- Ward Cunningham

  14. When is XP Appropriate? • Projects where requirements change a lot • High-risk projects • Projects requiring 2-12 programmers • Projects where customers can be involved with team • Projects that can be tested

More Related