150 likes | 258 Views
Extreme Programming. Based on http://www.jera.com/techinfo/xpfaq.html and http://www.extremeprogramming.org/. What is XP?.
E N D
Extreme Programming Based on http://www.jera.com/techinfo/xpfaq.html and http://www.extremeprogramming.org/
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
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.
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).
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
Core Principles • Simple design • Small releases • Start with smallest, useful set of features • Release early and often • Customer Tests • Acceptance Testing
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
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
Core Principles • Sustainable Pace • Coding Standards
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
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
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
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
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